C#向串口循环发送数据的问题

slnfight 2013-08-06 11:13:20
现有N条命令需要发送到串口,先发送第一条命令,得到应答的数据后,再发送第二条命令,得到第二条命令的应答数据后,再发送第三条命令,依次类推,并循环发送。请问:得到应答数据后触发下一条命令,这块代码该怎么写呢?
...全文
656 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
叫我灰太狼 2013-08-07
  • 打赏
  • 举报
回复
建议做法: 先用一个list将你要发送的指令顺序存进去 新建一个线程对串口发送list第一条数据->等待50ms->接收数据->判断接受数据是否正确;若是(移除list中的此条记录)从头执行,若不是根据要求来. 或者使用serialport的DataReceived事件,建议在事件发生后等待10ms左右再接收,因为有时候串口数据接收不全.
angel_hl 2013-08-07
  • 打赏
  • 举报
回复
与下位机定制协议,例如十六进制包头包尾55 AA XX XX XX XX 00 01 发送第一条数据,然后建立一个list 用串口接收事件把收上来的数据提取出来看是不是你要的,是换下一条命令发送,不是在发送本条命令,或者相应处理。XX为你的数据55AA 包头 0001包尾
feiniao19830822 2013-08-07
  • 打赏
  • 举报
回复
引用 4 楼 slnfight 的回复:
[quote=引用 3 楼 u011303459 的回复:] 同步的方式。 开启一个线程,在线程中循环发送数据,发送一条数据后,判断有无应答数据。 如果没有就sleep,如果有就发送下一条数据。 异步方式。 使用串口的DataReceived事件。DataReceived中取出下一条数据发送。
对于异步方式的问题能再详细一点儿吗?[/quote] 比如一共发送10条数据。 设置当前发送数据的顺序位1,取出第一条数据发送。下位机收到数据后会发送应答给上位机。这时自动进入DataReceived事件中。在DataReceived事件中你把当前的顺序位加1,取出当前的顺序位对应的数据(其实就是下一条数据),当顺位超过数据的总数时停止发送。 上面顺序位是通过类变量实现。如果应答数据中有数据顺位,也可以从应答数据中取。
slnfight 2013-08-07
  • 打赏
  • 举报
回复
希望大家给个指导呢,最近做这个很纠结呢
leafmao 2013-08-07
  • 打赏
  • 举报
回复
在接收数据的部分里分析接收到的数据,确认为应答数据就发送下一帧。我就是这么做的
slnfight 2013-08-06
  • 打赏
  • 举报
回复
引用 3 楼 u011303459 的回复:
同步的方式。 开启一个线程,在线程中循环发送数据,发送一条数据后,判断有无应答数据。 如果没有就sleep,如果有就发送下一条数据。 异步方式。 使用串口的DataReceived事件。DataReceived中取出下一条数据发送。
对于异步方式的问题能再详细一点儿吗?
feiniao19830822 2013-08-06
  • 打赏
  • 举报
回复
同步的方式。 开启一个线程,在线程中循环发送数据,发送一条数据后,判断有无应答数据。 如果没有就sleep,如果有就发送下一条数据。 异步方式。 使用串口的DataReceived事件。DataReceived中取出下一条数据发送。
angel6709 2013-08-06
  • 打赏
  • 举报
回复
Event 。
夜色镇歌 2013-08-06
  • 打赏
  • 举报
回复
不懂串口

110,538

社区成员

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

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

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