Serialport 多命令时候接收事件的处理

doudou798 2013-02-15 06:46:25
大家,过年好!问个问题,向串口发送一个或者两个命令,每次会得到10个数,如果只发送1个命令,直接把得到的10个数填入表格,如果两个命令,10个数相互相减后填入表格。第一个命令发完,数据全部接受完后,才可以发第二个命令,否则机器无响应!可是第一个命令发送后,就已经触发了SerialPort.DataReceived事件,直接把第一个命令的结果的10个数填入了表格了。这个问题怎么解决呢?
我是用serialport.readto一直读取到结束的符号,但是这样会导致程序中间不能用了,直到读到那个符号,才可以点击其他按钮 。。。
...全文
157 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
doudou798 2013-02-18
  • 打赏
  • 举报
回复
引用 1 楼 gxingmin 的回复:
一个命令 和 两个命令中的第一个命令,你是怎么判断的?两个命令间隔时间吗? 如果你能判断是一个命令,还是两个命令中的第一个命令, 如果是一个命令,直接显示到表格;如果是两个命令中第一个命令,则把数记录在变量里,等接收到第二个命令后,在把变量里的数据 跟第二个命令计算,将结果显示在表格。
用readto实现的啊,直到第一个命令读取到字母B为止,然后才发送第二个命令,但是readto功能将导致期间系统假死啊 。。。
xiaoid 2013-02-17
  • 打赏
  • 举报
回复
不需要DataReceived事件. 你发送命令后, 写代码读取readerbuffer里的字节就是了. BytesRead就是接收缓冲区里收到的字节数.
gxingmin 2013-02-17
  • 打赏
  • 举报
回复
一个命令 和 两个命令中的第一个命令,你是怎么判断的?两个命令间隔时间吗? 如果你能判断是一个命令,还是两个命令中的第一个命令, 如果是一个命令,直接显示到表格;如果是两个命令中第一个命令,则把数记录在变量里,等接收到第二个命令后,在把变量里的数据 跟第二个命令计算,将结果显示在表格。

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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