VB通过串口接收下位机定时上传的数据,怎么根据特定格式判断数据包头?
例如:上位机下达开始指令后,下位机每隔10ms上传一组数据,其格式为十六进制B4B4ssxxxxxxxxyyyy,其中B4B4是固定的包头数据,ss为状态字节,xx和yy...
例如:上位机下达开始指令后,下位机每隔10ms上传一组数据,其格式为十六进制 B4 B4 ss xx xx xx xx yy yy,其中B4 B4是固定的包头数据,ss为状态字节,xx和yy是数据字节。
用VB编写上位机程序进行读取,怎么采集实时、准确地判断从什么时候开始有一整帧数据,并提取出xx和yy数据呢?
新手上路,谢谢指点! 展开
用VB编写上位机程序进行读取,怎么采集实时、准确地判断从什么时候开始有一整帧数据,并提取出xx和yy数据呢?
新手上路,谢谢指点! 展开
2个回答
展开全部
初学者的思路一般是:收到B4就计数加1,当收到2个后开始读后面的 SS xx 之类。
但是这个路子问题很多,容错性很差,容易出现错误死锁。
专业做法是开辟一块缓冲区(简单的话定义一个足够大的数组即可),然后将读取数据和处理数据分开。有能力的可以用双线程,初学者也最好采用事件驱动的模式。
一段代码负责将收到的数据存入缓冲区;另一段代码负责解析处理缓冲区中的数据。
看上去好像挺高大上,其实实现起来真没多难。按照这个思路钻研一下吧,会有提高的。
但是这个路子问题很多,容错性很差,容易出现错误死锁。
专业做法是开辟一块缓冲区(简单的话定义一个足够大的数组即可),然后将读取数据和处理数据分开。有能力的可以用双线程,初学者也最好采用事件驱动的模式。
一段代码负责将收到的数据存入缓冲区;另一段代码负责解析处理缓冲区中的数据。
看上去好像挺高大上,其实实现起来真没多难。按照这个思路钻研一下吧,会有提高的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-01-08
展开全部
你都 接收这些数据
然后 在 处理不就行啦 ?
然后 在 处理不就行啦 ?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询