串口通信改成网口通信的问题

weistar0622 2016-09-23 10:00:56
1、项目升级,需要把之前的串口改成网口,硬件上改起来很快,可软件就没那么简单了
2、主要的问题是:之前的串口通信采用的是同步发送和接收(在一个方法里发送--Sleep100ms--读取数据--判断--解析--返回上层),改成网口后发送和接收在2个不同的方法里,就没法实现把发送的数据和接收到的数据进行对比判断了,怎么破?一般网口通信的发送和接收是用什么方式实现的呢?

我的指令数据量非常小:发送和接收都是10字节以内(帧头+长度+地址+命令字+数据+校验+帧尾),怎么实现严格的发送指令和接收指令比对,并且要求必须在100ms内有返回,否则也认为是通信失败,为这个,头疼了快一周了。
...全文
3268 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
学习了,路过。。
zmyouren1983 2018-01-04
  • 打赏
  • 举报
回复
如果使用主从模式,硬件是在接收到你的上位机命令后才响应的话,建议你需要维护一个地址、命令、发送时间的链表,接收到硬件回复查链表删除。定时查链表超时认为通信失败,清链表。
wanghui0380 2018-01-03
  • 打赏
  • 举报
回复
额,无论串口还是网口,其实处理方法一摸一样。所以没啥话说,先从你们以前的串口改起 别动不动sleep,那不是正常流程,那是靠巧合在运行,不是靠逻辑在运行。
quanhai_yu 2018-01-03
  • 打赏
  • 举报
回复
直接使用网口通信吧,也不是多难,选则一款芯片,在调试,可以的。没什么问题,有服务器和客户端的区别了。
  • 打赏
  • 举报
回复
只要你有最后发送数据和最后接收的时间,自然就能做出比较。 发送和接受本来就是两个异步的东西,搞所谓的 Sleep 这本来就是极其不合理的所谓“凑合式”的做法。之前的串口的软件的设计本来就比较低效(故意拖延了系统效率)。
「已注销」 2016-10-18
  • 打赏
  • 举报
回复
Socket 可以设置超时时间的。这个很容易就能做到
  • 打赏
  • 举报
回复
刚刚在网上看到了,是有串口转网口是有这个硬件设备的,这样的话,就不用你改写程序了吧,我也用过串口转USB的数据线,只要装了驱动,就行了 网口通信一般是socket,你可以百度一下

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧