16-ESP8266 SDK开发基础入门篇--TCP 服务器 非RTOS运行版,串口透传(串口回调函数处理版)
https://www.cnblogs.com/yangfengwu/p/11105466.html
其实官方给的RTOS的版本就是在原先非RTOS版本上增加的
https://www.cnblogs.com/yangfengwu/p/5205570.html 后面的TCP,UDP基本的配置也就是像AT这样,只不过咱是用SDK开发
配置一下WIFI的工作模式 无线名称
wifi_set_opmode(STATIONAP_MODE);//配置WiFi的模式STATION + AP AP--连接WIFI自身的无线实现通信 STATION--wifi连接路由器,手机或者电脑也连接路由器,实现通信 soft_ap_Config.ssid_len = strlen(SSID);//热点名称长度,与你实际的名称长度一致就好 memcpy(soft_ap_Config.ssid,SSID,soft_ap_Config.ssid_len);//实际热点名称设置,可以根据你的需要来 memcpy(soft_ap_Config.password,PWD,strlen(PWD));//热点密码设置 soft_ap_Config.authmode = AUTH_WPA2_PSK;//加密模式 soft_ap_Config.channel = 1;//信道,共支持1~13个信道 soft_ap_Config.max_connection = 4;//最大连接数量,最大支持四个,默认四个 wifi_softap_set_config_current(&soft_ap_Config);//设置 Wi-Fi SoftAP 接口配置,不保存到 Flash // wifi_softap_set_config(&soft_ap_Config);//设置 Wi-Fi SoftAP 接口配置,保存到 Flash
下载进去
接着做TCP 服务器
其实就是参考这个文档
其实说一下...官方其实给例子了...就是那个不带SDK的1.5版本的
如果不明白为什么是http但是用的TCP https://www.cnblogs.com/yangfengwu/category/1383497.html 看头几节
所以我就不班门弄斧了.......直接拷贝,然后写上注释
//接收到数据 void TcpServerRecv(void *arg, char *pusrdata, unsigned short length) { while(length--) { USART_SendData(UART0, *(pusrdata++));//接收的数据发给串口 } } //断开 void TcpServerDisCon(void *arg) { struct espconn *pesp_conn = arg; os_printf("TCP Client %d.%d.%d.%d:%d disconnect\n", pesp_conn->proto.tcp->remote_ip[0], pesp_conn->proto.tcp->remote_ip[1],pesp_conn->proto.tcp->remote_ip[2], pesp_conn->proto.tcp->remote_ip[3],pesp_conn->proto.tcp->remote_port); } //程序启动了监听 void TcpServerListen(void *arg) { struct espconn *pesp_conn = arg;//接收传过来的 espconn 信息 espconn_regist_recvcb(pesp_conn, TcpServerRecv);//设置接收回调 espconn_regist_disconcb(pesp_conn, TcpServerDisCon);//设置断开连接回调 }
完成了上面就是WIFI监听8888端口 ,客户端连接上以后发送的数据直接转发到串口
模块默认是192.168.4.1
测试
好现在咱再进一步 做成透传的 再让WIFI串口接收的数据发给网络
https://blog.csdn.net/u010333084/article/details/51336886
上一节咱用任务处理的串口数据,这次咱用回调实现,,这样处理起来快
测试
注意哈,这样做实际上就是那个函数在中断函数里面运行了....切记函数里面别加延时
好现在把串口接收的数据转发给网络
因为发送需要
所以咱定义一个全局的这个变量
思路是这个变量在监听到连接,断开和网络接收到数据里面赋值
如果只放到网络接收到数据里面赋值..那么如果客户端连接了,它不先给咱发数据,咱就不能发给他,因为变量没有赋值
不过现在这样有个问题是 最后连接的或者最后给我发的数据的TCP客户端,我下次的数据会发给它
大家可以再做个数组哈,,把这个全部保存下来,,自己扩展下哈
提示哈,,做四个数组就可以,,循环判断如果哪个在连接状态就发送
测试
如果再把这里的发送改为直接用数组复制给串口发送缓冲区(只调用一句话),就完美了
自己开动大脑想办法吧
https://www.cnblogs.com/yangfengwu/p/11112015.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具