C#serialPort如何区分数据?

.Net技术 码拜 10年前 (2015-05-10) 1594次浏览 0个评论

我在使用serialPort类来接发数据现在功能已经基本实现了,可是我在接收数据的时候有些疑问因为下位机的数据是不定时的发送过来的那么我怎么判断一条数据结束继而处理下一条呢?我已经深深的感觉自己脑子不够用了So上CSDN求各路大神能给一个脑洞打开的方案叩谢

20分
最近也在使用serialPort开发串口通信楼主有没有什么好的教程可以分享一下?
5分
一般发过来的数据都是有起始符或者停止符的,例如673403072877287623803075346524746,起始符是0307,一般是两位,除了起始位出现0307,其他数据位不会出现0307,这个需要咨询硬件接口厂商了解具体数据格式。
引用 1 楼 u014694753 的回复:

最近也在使用serialPort开发串口通信楼主有没有什么好的教程可以分享一下?

你可以在CSDN搜索博文那里会有很多优秀的基础介绍哦写的都很详细

5分
如果知道下位机数据长度,可以加以个_serialPort.ReceivedBytesThreshold = 长度;
引用 3 楼 yjg864 的回复:
Quote: 引用 1 楼 u014694753 的回复:

最近也在使用serialPort开发串口通信楼主有没有什么好的教程可以分享一下?

你可以在CSDN搜索博文那里会有很多优秀的基础介绍哦写的都很详细

好哒谢谢

引用 4 楼 phdmm 的回复:

如果知道下位机数据长度,可以加以个_serialPort.ReceivedBytesThreshold = 长度;

下位机发过来的长度是不固定的

5分
如果长度不固定,那只能通过字节数组起止符来处理判断。一次读多少个字节,分别判断起止符,读到结束符的时候算一条完整数据。
下位机每次发过来数据的时候,都加上起止标识符应该就可以了。
引用 8 楼 dxd0128 的回复:

下位机每次发过来数据的时候,都加上起止标识符应该就可以了。

蛋疼的是PLC的协议不能修改所以起止标识符这个方法应该是行不通的

5分
PLC 设备有好多中,各厂商的通讯协议也略有不同。不知道你们的是哪家的

你只要按照通讯协议开发软件,就不会有问题的 
PLC串行通讯协议


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#serialPort如何区分数据?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!