测试W5500的第2步_使用ioLibrary库创建TCP客户端
ioLibrary库下载地址:文件下载地址:https://gitee.com/wiznet-hk/STM32F10x_W5500_Examples
源文件下载地址:https://gitee.com/wiznet-hk
没有注册的,只能复制粘贴了。
本文介绍了如何初始化STM32的硬件资源,配置W5500的网络参数,并通过DHCP获取动态IP地址。并使用这个IP地址配置TCP客户端,以及双方交换数据的测试。
前篇文中有wiz_platform.c和wiz_platform.h,用来初始化SPI,RST引脚和TIM2,这里就不用粘贴了。
前篇文中有wiz_interface.h,用来通过DHCP获取动态IP地址,这里也不用粘贴了。
1、W5500_Variable.c和.h文件
#include "W5500_Variable.h"
#include "socket.h" // Just include one header for WIZCHIP
#include "stdio.h" //getchar(),putchar(),scanf(),printf(),puts(),gets(),sprintf()
#include "string.h" //使能strcpy(),strlen(),memset()//W5500的网络参数
//本地物理地址:00 08 DC 11 11 11
//本地IP地址:192.168.1.199
//本地子网掩码: 255.255.255.0
//本地网关:192.168.1.1
//DNS服务器IP地址:8.8.8.8
//通过DHCP获取动态IP地址
/* network information */
wiz_NetInfo default_net_info = {{0x00, 0x08, 0xdc,0x11, 0x11, 0x11},{192, 168, 1, 199},{255,255,255,0},{192, 168, 1, 1},{8,8,8,8},NETINFO_DHCP}; //动态IP
wiz_NetInfo net_info;uint8_t ethernet_buf[ETHERNET_BUF_MAX_SIZE] = {0};//端口0的网络参数
uint16_t LocalPort0=5000; //端口0的本地端口号(5000)
uint8_t dest_ip[4]={192,168,1,190}; //端口0的远程IP地址:192.168.1.190
uint16_t dest_port=6000; //端口0的远程端口号:6000
#ifndef _W5500_Variable_H
#define _W5500_Variable_H#include "stm32f10x.h"//使能uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t
#include "wizchip_conf.h"extern wiz_NetInfo default_net_info;
extern wiz_NetInfo net_info;#define ETHERNET_BUF_MAX_SIZE (1024 * 2)
extern uint8_t ethernet_buf[ETHERNET_BUF_MAX_SIZE];extern uint16_t LocalPort0; //端口0的本地端口号(5000)
extern uint8_t dest_ip[4]; //端口0的远程IP地址:192.168.1.190
extern uint16_t dest_port; //端口0的远程端口号:6000
#endif
2、TestTcpClient.c和.h文件
#include "TestTcpClient.h"
#include "stdio.h" //getchar(),putchar(),scanf(),printf(),puts(),gets(),sprintf()
#include "w5500.h"
#include "W5500_Variable.h"
#include "socket.h"/*** @brief tcp client loopback test* @param sn: socket number* @param buf: Data sending and receiving cache* @param destip: Destination IP address* @param destport: Destination port* @return value for SOCK_ERRORs,return 1:no error
*/
int32_t loop_TestTcpClient(uint8_t sn, uint8_t* buf, uint8_t* destip, uint16_t destport)
{int32_t ret; // return value for SOCK_ERRORsuint16_t size = 0, sentsize=0;uint16_t any_port = 50000;//配置本地端口为50000switch(getSn_SR(sn))//获取W5500端口sn的状态寄存器{case SOCK_ESTABLISHED ://W5500端口sn已经连接成功if(getSn_IR(sn) & Sn_IR_CON){//读端口sn的Sn_IR中断标志寄存器的bit0
#ifdef _LOOP_TestTcpClient_DEBUG_printf("%d:Connected to - %d.%d.%d.%d : %d\r\n",sn, destip[0], destip[1], destip[2], destip[3], destport);
#endifsetSn_IR(sn, Sn_IR_CON); // this interrupt should be write the bit cleared to '1'//回写端口sn的Sn_IR中断标志寄存器的bit0,清除中断标志}if((size = getSn_RX_RSR(sn)) > 0)//读端口sn的Sn_RX_RSR寄存器,获取该端口的接收缓冲区的数据长度{if(size > ETHERNET_BUF_MAX_SIZE) size = ETHERNET_BUF_MAX_SIZE; // ETHERNET_BUF_MAX_SIZE means user defined buffer size (array)ret = recv(sn, buf, size);//读"W5500端口sn"的数据,长度为size个字节,保存到bufif(ret > 0){buf[ret]='\0'; //添加字符串结束符printf("recv: %s\n",buf); // print the receive data}else return ret; //接收数据错误size = (uint16_t) ret;sentsize = 0;while(size != sentsize){ret = send(sn, buf+sentsize, size-sentsize);//将(buf+sentsize)为首地址的存储单元的前len个字节通过"W5500端口sn"发送出去// Data send process (User's buffer -> Destination through H/W Tx socket buffer)if(ret < 0) // Send Error occurred (sent data length < 0){close(sn); //关闭端口sn的连接, socket closereturn ret;}else{printf("send: %s\n",buf+sentsize); // print the send data}sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero.}}//break;case SOCK_CLOSE_WAIT ://W5500端口sn处于等待关闭状态
#ifdef _LOOP_TestTcpClient_DEBUG_printf("%d:CloseWait\r\n",sn);
#endifif((ret=disconnect(sn)) != SOCK_OK)//关闭端口sn的连接return ret;
#ifdef _LOOP_TestTcpClient_DEBUG_printf("%d:Socket Closed\r\n", sn);
#endifbreak;case SOCK_INIT ://W5500端口sn已经初始化
#ifdef _LOOP_TestTcpClient_DEBUG_printf("%d:Try to connect to the %d.%d.%d.%d : %d\r\n", sn, destip[0], destip[1], destip[2], destip[3], destport);
#endifif( (ret = connect(sn, destip, destport)) != SOCK_OK){//将W5500端口sn连接到远程IP地址destip和远程端口destport上// Try to TCP connect to the TCP server (destination)return ret;}break;case SOCK_CLOSED://W5500端口sn处于关闭状态close(sn);//关闭端口sn的连接, socket closeif((ret=socket(sn, Sn_MR_TCP, any_port++, 0x00)) != sn){//修改端口,执行连接服务器if(any_port == 0xffff) any_port = 50000;return ret; // TCP socket open with 'any_port' port number}
#ifdef _LOOP_TestTcpClient_DEBUG_printf("%d:TCP client loopback start\r\n",sn);printf("%d:Socket opened\r\n",sn);
#endifbreak;default:break;}return 1;
}
#ifndef _TestTcpClient_H
#define _TestTcpClient_H#include "stm32f10x.h"//使能uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t#define _LOOP_TestTcpClient_DEBUG_ //允许串口跟踪int32_t loop_TestTcpClient(uint8_t sn, uint8_t* buf, uint8_t* destip, uint16_t destport);#endif
3、main.c代码如下:
#include "stm32f10x.h"//使能uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t
#include "stdio.h" //getchar(),putchar(),scanf(),printf(),puts(),gets(),sprintf()
#include "string.h" //使能strcpy(),strlen(),memset()
#include "delay.h"
#include "USART4.h"
#include "LED.h"//文件下载地址:https://gitee.com/wiznet-hk/STM32F10x_W5500_Examples
//源文件下载地址:https://gitee.com/wiznet-hk
#include "wiz_platform.h"
#include "wizchip_conf.h"
#include "wiz_interface.h"
#include "W5500_Variable.h"
#include "TestTcpClient.h"const char CPU_Reset_REG[]="\r\nCPU reset!\r\n";
int main(void)
{// SCB->VTOR = 0x8000000;//中断向量表重定义// SystemInit();delay_init();//延时函数初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4USART4_Serial_Interface_Enable(115200);printf("%s",CPU_Reset_REG);//调试串口输出"\r\nCPU reset!\r\n"LED_Init();LED0_ON();wiz_timer_init(); //配置TIM2每毫秒中断一次wiz_spi_init(); //SPI1初始化wiz_rst_int_init();//初始化W5500的RST引脚和INT引脚printf("%s network install example\r\n",_WIZCHIP_ID_);wizchip_initialize();//1.注册SPI片选函数,单字节读写函数和多字节读写函数//2.W5500使用RST引脚复位//3.读取芯片版本号码,并检查是否正确//4.读PHY配置寄存器的bit[2:0],bit0=1表示W5500连接到局域网//bit1=1表示当前网速为100M,否则为10M//bit2=1表示当前以太网采用全双工通讯,否则为半双工通讯network_init(ethernet_buf, &default_net_info);
//DHCP客户端使用端口0获取本地网络信息
//1.使用"默认网络参数"设置本地网络参数:MAC地址,GW网关,SN子网掩码,本地IP地址,DNS服务器IP地址,DHCP
//2.DHCP获取动态IP地址
//3.使用DHCP获取到的网络参数设置本地网络参数:MAC地址,GW网关,SN子网掩码,本地IP地址,DNS服务器IP地址,DHCP
//4.读本地网络参数:MAC地址,GW网关,SN子网掩码,本地IP地址,DNS服务器IP地址,DHCP,然后从串口输出setSn_KPALVTR(SOCKET0, 6); // 30s keepalive//Socket在线时间寄存器,在线验证心跳包传输时间,他只在TCP模式下生效,在其他模式下将会被忽略,单位时间为5秒。//因此心跳包传输时间为6*5=30秒while(1){loop_TestTcpClient(SOCKET0, ethernet_buf, dest_ip, dest_port);LED0=!LED0;delay_ms(1000);}
}
4、添加文件如下:
5、 TCP Server配置如下:
6、串口跟踪如下:
相关文章:
测试W5500的第2步_使用ioLibrary库创建TCP客户端
ioLibrary库下载地址:文件下载地址:https://gitee.com/wiznet-hk/STM32F10x_W5500_Examples 源文件下载地址:https://gitee.com/wiznet-hk 没有注册的,只能复制粘贴了。 本文介绍了如何初始化STM32的硬件资源,配置W5500的网络参数ÿ…...
深度学习中的正则化方法与卷积神经网络基础
笔记 1 正则化方法 1.1 什么是正则化 防止模型过拟合(训练集效果好, 测试集效果差), 提高模型泛化能力 一种防止过拟合, 提高模型泛化能力的策略 L1正则: 需要通过手动写代码实现 L2正则: SGD(weight_decay) dropout BN 1.2 Dropout正则化 让神经元以p概率随机死亡, 每…...
pg_dump
以下是 PostgreSQL 中 pg_dump 命令的 核心参数 及 使用示例 的详细说明: 一、核心参数分类及说明 pg_dump 主要用于备份单个数据库,支持多种格式和灵活的控制选项。以下是其关键参数分类: 1. 连接参数 参数说明-h, --hostHOST数据库服务器…...
css使用clip-path属性切割显示可见内容
1. 需求 想要实现一个渐变的箭头Dom,不想使用svg、canvas去画,可以考虑使用css的clip-path属性切割显示内容。 2. 实现 <div class"arrow">箭头 </div>.arrow{width: 200px;height: 60px;background-image: linear-gradient(45…...
系统设计——项目设计经验总结1
摘要 在系统设计的时候,注意域的区分,功能区分、类的区分、方法区分范围和定义。在系统设计的时候的,需要思考类、方法在什么情况下会涉及到修改,遵循记住:一个类应该只有一个原因被修改! 当不满足&#x…...
如何在WordPress网站上添加即时聊天功能
在 WordPress 网站上添加即时聊天功能既简单又有益。近年来,即时聊天已经有了长足的发展,融入了强大的交流和自动化功能,类似于流行的人工智能聊天机器人。无论您是想提高销售转化率还是将人工智能整合到客户服务流程中,在 WordPr…...
[luogu12542] [APIO2025] 排列游戏 - 交互 - 博弈 - 分类讨论 - 构造
传送门:https://www.luogu.com.cn/problem/P12542 题目大意:给定一个长为 n n n 的排列和一张 m m m 个点 e e e 条边的简单连通图。每次你可以在图上每个点设置一个 0 ∼ n − 1 0\sim n-1 0∼n−1、两两不同的权值发给交互库,交互库会…...
图像处理基础知识
OpenCV计算机视觉开发实践:基于Qt C - 商品搜索 - 京东 信息是自然界物质运动总体的一个重要方面,人们认识世界和改造世界就是要获得各种各样的图像信息,这些信息是人类获得外界信息的主要来源。大约有70%的信息是通过人眼获得的。近代科学研…...
使用MybatisPlus实现sql日志打印优化
背景: 在排查无忧行后台服务日志时,一个请求可能会包含多个执行的sql,经常会遇到SQL语句与对应参数不连续显示,或者参数较多需要逐个匹配的情况。这种情况下,如果需要还原完整SQL语句就会比较耗时。因此,我…...
HarmonyOS5云服务技术分享--ArkTS开发Node环境
✨ 你好呀,开发者小伙伴们!今天我们来聊聊如何在HarmonyOS(ArkTS API 9及以上)中玩转云函数,特别是结合Node.js和HTTP触发器的开发技巧。文章会手把手带你从零开始,用最接地气的方式探索这个功能࿰…...
水利数据采集MCU水资源的智能守护者
水利数据采集仪MCU,堪称水资源的智能守护者,其重要性不言而喻。在水利工程建设和水资源管理领域,MCU数据采集仪扮演着不可或缺的角色。它通过高精度的传感器和先进的微控制器技术,实时监测和采集水流量、水位、水质等关键数据&…...
深度学习之用CelebA_Spoof数据集搭建一个活体检测-用MNN来推理时候如何利用Conan对软件包进行管理
我为什么用Conan 前面的文章:深度学习之用CelebA_Spoof数据集搭建一个活体检测-训练好的模型用MNN来推理有提到怎么使用MNN对训练好的模型进行推理,里面并没有提到我是怎么编译和进行代码依赖包的管理的详细步骤,在这里我是用的是Conan:一个…...
深入解剖 G1 收集器的分区模型与调优策略
JVM 垃圾收集系列之三 | 高并发低延迟系统的首选 GC 解法! 一、为什么我们需要 G1 垃圾收集器? 在传统 GC(如 CMS)中,我们常常面临的问题是: GC 停顿不可预测(Stop-The-World)内存…...
兰亭妙微・UI/UX 设计・全链路开发
【遇见专业设计,共筑卓越产品】 在数字化浪潮中,界面是产品与用户对话的第一窗口。 兰亭妙微(蓝蓝设计),自 2008 年深耕 UI/UX 领域,以清华团队为核心,16 年专注软件与互联网产品的界面设计开…...
Babylon.js学习之路《六、材质与纹理:为模型赋予真实的表面效果》
文章目录 1. 引言:材质与纹理的重要性1.1 材质与纹理的核心作用 2. 基础材质:StandardMaterial2.1 材质属性详解2.2 实战:创建金属材质 3. 纹理贴图:从基础到高级3.1 基础纹理映射3.2 多纹理混合技术 4. 高级材质:PBRM…...
飞致云旗下开源项目GitHub Star总数突破150,000个
2025年5月19日,中国领先的开源软件提供商飞致云宣布,其旗下开源项目在代码托管平台GitHub上所获得的Star总数已经超过150,000个。基于在开源领域的长期耕耘和探索,飞致云的开源势能不断增强,获得第一个五万GitHub Star用时89个月&…...
萌新联赛第(三)场
C题 这道题用暴力去写想都不要想,一定超时,于是我们需要优化,下面是思路过程: 如图,本题只需找到x的因数个数和(n-x)的因数个数,这两个相乘,得到的就是对于这个x来说组合的个数,且x…...
cplex12.9 安装教程以及下载
cplex 感觉不是很好找,尤其是教育版,我这里提供一个版本,在下面的图可以看到,不仅可以配置matlab,也可以配置vs,现在拿vs2017来测试一下,具体文件的文件有需要的可以复制下面的链接获取 我用网盘分享了「c…...
Pycharm-jupyternotebook不渲染
解决方案: https://youtrack.jetbrains.com/issue/PY-54244 import plotly.io as pio pio.renderers.default "vscode"...
layui 介绍
layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,极易上手,拿来即用。其风格简约轻盈,而组件优雅丰盈,从源代码到使用…...
大数据相关操作
大数据相关操作 一、环境配置 1、修改主机名 #修改主机名 hostnamectl set-hostname master2、固定IP地址 # 进入修改 sudo vim /etc/netplan/01-network-manager-all.yaml# 修改配置文件 # Let NetworkManager manage all devices on this system network:version: 2rend…...
谷歌宣布推出 Android 的新安全功能,以防止诈骗和盗窃
在上周二的 Android Show 上,也就是Google I/O 开发者大会之前,谷歌宣布了 Android 的全新安全和隐私功能。这些新功能包括对通话、屏幕共享、消息、设备访问和系统级权限的全新保护。谷歌希望通过这些功能保护用户免遭诈骗,在设备被盗或被攻…...
WSL虚拟机整体迁移教程(如何将WSL从C盘迁移到其他盘)
文章目录 WSL虚拟机迁移教程一、查看当前主机的子系统二、导出 WSL 子系统三、将打包好的文件发送给另一个人四、在另一台机器导入并恢复子系统五、附加命令六、注意事项和导出文件信息6.1 注意事项6.2 导出文件信息使用 wsl --export 命令导出整个 WSL 子系统时,它…...
汽车区域电子电气架构(Zonal E/E)的统一
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界…...
开源一个记账软件,支持docker一键部署
欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 开源一个记账软件,支持docker一键部署 项目简介功能特性技术栈快速开始环境要求运行步…...
新能源汽车焊接智能节气阀
在新能源汽车产业迅猛发展的浪潮中,制造工艺的优劣直接关系到车辆的性能、安全与市场竞争力。焊接,作为新能源汽车生产流程里的关键一环,无论是构建车身框架,还是连接电池模组,其质量的好坏都起着决定性作用。而在焊接…...
React 第四十四节Router中 usefetcher的使用详解及注意事项
前言 useFetcher 是 React Router 中一个强大的钩子,用于在不触发页面导航的情况下执行数据加载(GET)或提交(POST)。 一、useFetcher 应用场景: 1、后台数据预加载(如鼠标悬停时加载数据&…...
33、魔法防御术——React 19 安全攻防实战
一、奥术护盾(基础防御) 1. 敏感数据加密术 // cryptoUtils.js - 数据加密工具export const encrypt (data) > {// 实际项目应使用Web Crypto API或crypto-jsreturn btoa(encodeURIComponent(data));};export const decrypt (data) > {try {…...
NVM 安装与配置指南
简介 Node Version Manager(NVM)是一个常用的 Node.js 版本管理工具,可用于在开发过程中方便地切换不同版本的 Node.js。通过 NVM,用户可以根据项目需求选择不同的 Node.js 版本,而无需手动安装和卸载多个版本的 Node…...
SpringMVC04所有注解按照使用位置划分| 按照使用层级划分(业务层、视图层、控制层)
目录 一、所有注解按照使用位置划分(类、方法、参数) 1. 类级别注解 2. 方法级别注解 3. 参数级别注解 4. 字段/返回值注解 二、按照使用层级划分(业务层、视图层、控制层) 1、控制层(Controller Layer&#x…...
【数据库】-1 mysql 的安装
文章目录 1、mysql数据库1.1 mysql数据库的简要介绍 2、mysql数据库的安装2.1 centos安装2.2 ubuntu安装 1、mysql数据库 1.1 mysql数据库的简要介绍 MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前…...
MySQL与Redis一致性问题分析
一、一致性问题概述 1.1 什么是一致性问题? 在数据库-缓存架构中,当MySQL中的数据(最新值)与Redis缓存中的数据(缓存旧值)出现差异时,由于程序总是优先读取Redis缓存,就会导致应用…...
Xshell传输文件
新建文件 点击新建 完善主机地址 然后输入我们的远端服务器的SSH协议 一般的是这样的ssh -p 44562 rootregion-1.autodl.com 由于Xshell比较特殊我们输入ssh rootregion-1.autodl.com 44562这样的形式 然后输入服务器的密码即可...
怎样用 esProc 为大主子表关联提速
类似订单和明细表这样的主子表关联比较常见,在 SQL 中,这种关联用 JOIN 实现,在两个表都很大的情况下,常常出现计算速度非常慢的现象。 如果预先将主子表都按照主键有序存储,就可以使用归并算法实现关联。这种算法只需…...
打卡day31
文件的规范拆分和写法 知识点回顾 规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解 作业:尝试针对之前的心脏病项目,准备拆分的项目文件,思考下哪些部分可以未来复用。 导入依赖库 # 忽视警告 import warnings warn…...
编译原理的部分概念
解释程序:边解释边执行:不断读取源程序的语句,解释语句,读取此语句需要的数据,根据执行结果读取下一条语句,继续解释执行,直到返回结果。 编译程序:将源程序完整地转换成机器语言程…...
Java中字符串(String类)的常用方法
以下是Java中字符串(String类)的常用方法分类详解,包含核心方法说明和示例代码: 一、字符串基础信息 方法说明示例输出length()返回字符串长度"Hello".length()5isEmpty()判断字符串是否为空(长度是否为0&a…...
什么是 ERP,中国企业如何科学应用 ERP
中国企业在引入 ERP 系统过程中,常因盲目跟风大型企业选型、忽视自身业务适配性,导致系统功能过剩、实施成本高企、员工接受度低等问题,最终造成项目成功率不足 10%。因此,理性认知 ERP 的价值定位与本土化实施路径,成…...
使用SQLite Expert个人版VACUUM功能修复数据库
使用SQLite Expert个人版VACUUM功能修复数据库 一、SQLite Expert工具简介 SQLite Expert 是一款功能强大的SQLite数据库管理工具,分为免费的个人版(Personal Edition)和收费的专业版(Professional Edition)。其核心功…...
同源策略深度防御指南:CSP 高级应用与企业微信全场景适配(含 report-uri 实战)
一、CSP 核心指令权威解析与企业微信适配 内容安全策略(CSP)通过Content-Security-Policy响应头实现资源加载的细粒度控制,其核心指令与企业微信场景强相关: 1.1 frame-ancestors:iframe 嵌入源控制 权威规范&#…...
【AGI】大模型微调技术-四大微调框架
【AGI】大模型微调技术-四大微调框架 (1)微调基础概念介绍1.1 微调基本概念1.2 全量微调与高效微调1.3 模型微调的优劣势分析1.4 高效微调与LoRA、QLoRA (2)高效微调的应用场景(3)流微调工具介绍3.1 unslot…...
小白编程学习之巧解「消失的数字」
一、引言:一个看似简单的「找不同」问题 今天遇到一道有趣的算法题:给定一个含 n 个整数的数组 nums,其中每个元素都在 [1, n] 范围内,要求找出所有在 [1, n] 中但未出现在数组中的数字。 这让我想起小时候玩的「找错题」游戏 —…...
在 Git 中添加子模块(submodule)的详细步骤
在 Git 中添加子模块(submodule)的详细步骤如下: 1. 添加子模块 命令格式: git submodule add <仓库URL> [目标路径]仓库URL:子模块的 Git 仓库地址(HTTP/SSH 均可)。目标路径ÿ…...
瑞萨单片机笔记
1.CS for CC map文件中显示变量地址 Link Option->List->Output Symbol information 2.FDL库函数 pfdl_status_t R_FDL_Write(pfdl_u16 index, __near pfdl_u08* buffer, pfdl_u16 bytecount) pfdl_status_t R_FDL_Read(pfdl_u16 index, __near pfdl_u08* buffer, pfdl_…...
单片机复用功能重映射Remap功能
目录 一、查看“DS5319 stm32f10x中等密度mcu数据手册(英文)”手册 二、查看“RM0008 STM32F10xxx参考手册(中文)”手册 三、重映射(Remap)功能程序编写 自己学习过程中容易遗忘的知识点,记录…...
小白入门FPGA设计,如何快速学习?
很多刚入门的小伙伴,初次听说FPGA(现场可编程门阵列),脑子里只有一个字:玄! 什么“时序逻辑”“Verilog”“Vivado”,仿佛一夜之间掉进了电子黑魔法的深坑。 但真相是—— FPGA,其实…...
友思特应用 | LCD显示屏等玻璃行业的OCT检测应用
导读 光学相干层析成像(OCT)是一种非侵入式光学成像方法,提供微米尺度的空间分辨率,能够生成内部结构截面图像。自20世纪90年代初发明第一台OCT以来,它在眼科领域得到了广泛应用,并成为临床诊断的黄金标准之一。除了在生物医学领…...
Python的sys模块:系统交互的关键纽带
Python的sys模块:系统交互的关键纽带 对话实录 小白:(挠头)我知道 Python 能做很多事,可怎么让它和计算机系统‘交流’呢,比如获取系统信息、处理命令行参数? 专家:(微…...
若依项目集成sentinel、seata和shardingSphere
集成组件包括MySQL分库分表及读写分离、seata以及Sentinel 若依项目文档连接 代码下载地址 需要结合ruoyi代码配合看,前提是熟悉基本代码结构,熟悉feign调用和基础网关配置等。 采用的版本信息 <java.version>1.8</java.version> <spr…...
张 推进对话式心理治疗:SOULSPEAK的聊天机器人
SOULSPEAK的聊天机器人 利用大语言模型(LLM)来提供低成本的心理治疗服务,旨在解决传统心理咨询在隐私、成本和可及性方面的不足。以下是核心内容的通俗解读: 1. 研究背景:传统心理治疗的困境 问题:全球心理健康问题日益严重(如焦虑、抑郁人数激增),但传统心理咨询受…...