日期:2014-05-17  浏览次数:20926 次

C#串口接收一条数据之后才发送另外一条命令,直到接收完最后一条命令的响应数据,就再发送第一条命令,依次轮循发送这一组命令。
如:发送第一条命令接收到第一条命令之后
再发送第二条命令接收到第二条响应数据包之后
再发送第三条命令接收到第三条响应数据包之后
再发送第一条命令。。。这样依次轮循发送这一组命令。
如果发送第一条命令没有接收到响应数据包就再重新发第一条命令如果重发三条之后还是没有返回就发第二条命令。这个代码应该怎么写?请高手指点

------解决方案--------------------
如果没理解错,是个有限自动机模型

看看是不是使用状态模式可以处理
------解决方案--------------------
发送一条,超时几秒,超过次数就不发了
------解决方案--------------------
这个需要你了解通讯协议  每一条发送之后,返回来的你要知道是不是你发过的 
比如协议中规定第一条你发了01为结尾 返回的数据必须返回也是01为结尾的数据
  那么你程序就可以判断了 返回值中判断末尾是不是01 如果不是 则进行再次发送 知道返回给你的是尾数01为止
------解决方案--------------------
这个你需要制定应答,你要发命令给串口,让他发数据,这样一问一答才行,否则,你怎么知道是第一条,最后一条,共有多少条,你都不知道,不要异想天开,想有规矩,都要有规则的
------解决方案--------------------
引用:
这个你需要制定应答,你要发命令给串口,让他发数据,这样一问一答才行,否则,你怎么知道是第一条,最后一条,共有多少条,你都不知道,不要异想天开,想有规矩,都要有规则的

我也一直在思考定制应答问题,编码上觉得比较难处理,switch会很长
可使用生产者-消费者方式 处理
------解决方案--------------------
给串口发送命令后有没有状态呢,有的话判断状态就行了
------解决方案--------------------
没有状态就用时间判断,定时等待,超时重发,超时三次放弃,应该不是很麻烦啊,三条命令的发送封装一下,单条命令的发送就用时间判断,无限循环就是了