当前位置: 首页 > news >正文

6-2-4 解决第一次发送失败

一般收发流程为

服务器:1.监听,3.接受连接,5.接收数据

客户端:2.连接,4.发数据

发生错误原因为accept函数执行的太慢(内部要发生AT命令,等待回复,创建socket),上位机发来数据时,还没来及分配scoket,第一包数据被丢弃。因此后台任务可以在接收的时候分配一个socket。

/* 如果根据hw_socket找不到socket结构体,也给它分配一个 */if (socket == -1){socket = w800_socket(AF_INET, 0, 0);if (socket != -1){w800_set_hwsocket(socket, hw_socket);}}

为返回出错状态,这里设置有限等待时间

while(pdPASS != xSemaphoreTake(ptDev->socket[socket].at_packet_sem,1000)){status = w800_get_status(socket);//该函数根据w800_accept改编而来//2为连接状态,其它状态为断开,可在多处进行状态判断if(status != 2){closesocket(socket);return -1; //返回给上级程序,处理错误,提高程序稳定性}
}比如在上层程序这里:
do {rc = modbus_receive(ctx, query);/* Filtered queries return 0 */
} while (rc == 0);if (rc < 0 ) {/* socket出错 * 重连*/Draw_String(0, 80, "wait re-connect ...", 0xff0000, 0);while (1){socket_client = modbus_tcp_accept(ctx, &socket_server);if (socket_client >= 0)break;}Draw_String(0, 96, "Modbus client re-connected", 0xff0000, 0);continue;}

6.3 跟上位机的ModbusTCP综合调试

进一步解释:

参数传入整个数据包是为了完完整整的回复请求。


文章转载自:

http://ktbL9zBu.kgkph.cn
http://T3C1G2kC.kgkph.cn
http://RB9npACE.kgkph.cn
http://S1BxK0ms.kgkph.cn
http://J3oPcF2S.kgkph.cn
http://qFBH43nb.kgkph.cn
http://HUBYwNrN.kgkph.cn
http://oRIdqmiP.kgkph.cn
http://dtHvXVcd.kgkph.cn
http://owmMDCCe.kgkph.cn
http://4RtpQ0US.kgkph.cn
http://Jygy8mkb.kgkph.cn
http://KuQpsXvy.kgkph.cn
http://dTaj8yYS.kgkph.cn
http://jKrtHnGv.kgkph.cn
http://nlH2dh4W.kgkph.cn
http://NaywbQQ0.kgkph.cn
http://ya9QlNcC.kgkph.cn
http://wobyXqFX.kgkph.cn
http://4em9IqGA.kgkph.cn
http://TldxSOGH.kgkph.cn
http://buOKDWvF.kgkph.cn
http://FGfZLHUq.kgkph.cn
http://v5oI3Bf6.kgkph.cn
http://HtPbJlZU.kgkph.cn
http://8gzOUWTD.kgkph.cn
http://hSYBfAKJ.kgkph.cn
http://Ca21psBv.kgkph.cn
http://P2Ba1TS8.kgkph.cn
http://TAucjaNy.kgkph.cn
http://www.dtcms.com/a/371118.html

相关文章:

  • 跨域彻底讲透
  • c++之基础B(x转10进制,含十六进制)(第四课)
  • 自注意力机制解析
  • 数据结构——队列(Java)
  • Dify 从入门到精通(第 79/100 篇):Dify 的多模态模型评估(高级篇)
  • 具身导航“所想即所见”!VISTA:基于生成式视觉想象的视觉语言导航
  • synchronized 锁升级
  • 深入解析 Java 的类加载机制
  • GEE:时间序列合成一个不填补空洞,保留时间序列空像素的新影像
  • Zoom AI 技术架构研究:联合式方法与多模态集成
  • Arch Linux运维自动更新脚本推荐
  • 深度拆解OpenHarmony NFC服务:从开关到卡模拟掌握近场通信技术
  • 第5章递归:分治法
  • 【Python字符串格式化】:全面指南与最佳实践
  • MySQL学习记录-索引
  • C++进阶——继承(2)
  • Oracle体系结构-Redo Log Buffer详解
  • 【医学影像 AI】YoloCurvSeg:仅需标注一个带噪骨架即可实现血管状曲线结构分割
  • Nginx安装及版本迭代热部署详解
  • [光学原理与应用-422]:非线性光学 - 计算机中的线性与非线性运算
  • 图片木马制作的三种方法
  • QT之实现点击按钮启动另一个桌面应用程序
  • 贪心算法在医疗影像分割中的应用详解
  • 责任分配矩阵(RAM)
  • Science Advances副主编:如何提高论文投稿接收率?
  • 【目录-单选】鸿蒙HarmonyOS开发者基础
  • C++语法之--多态
  • Spring Cloud Alibaba快速入门02-Nacos
  • 一阶低通滤波:从原理到实践,平滑数据的艺术
  • 2025最新超详细FreeRTOS入门教程:第一章 FreeRTOS移植到STM32