串口通信解决方法

串口通信
我们在开发一个项目

  主要是串口控制机械运动
  1.升降
  2.旋转
  3.平移
   
  例如: 上升30mm

  发送: 24 e2 30 01  
   
  然后 马达走了30mm 返回个数据给你 

  回复 :24 e2 30 00 
   

  API串口控制有两种方式 同步和重叠方式

  怎么能保证可靠性

  或者有时 串口收不到数据怎么办


   


------解决方案--------------------
API串口如果是桌面系统就用重叠,如果是Wince就只能用同步的方式。

串口用起来还是很稳定的,一般不会有什么问题。数据的可靠性只能靠你们自己的协议保证,通常都是有特定的数据格式、校验。

或者有时 串口收不到数据怎么办

这个也要根据你们的具体操作来,一般都会有超时处理的。
------解决方案--------------------
// 没看懂你的SetEvent干嘛。
// 如果在前一个动作结束前,不允许第二个动作的话
// 重叠方式,ReadFile()后,WaitForSingleObject等待RX事件。
// 同步方式,就阻塞在ReadFile()处,直到读到数据或者超时。
// 读取数据,最好另开线程。
------解决方案--------------------
是不是可以在发送数据的同时写一个定时器,假设时间是5秒,再写一个BOOL m_b=FALSE;如果在1秒内有返回数据并且是24 e2 30 00,就将m_b=TRUE,这样过了5秒在定时器回调函数中判断
if m_b=TRUE 提示正常,m_b=FALSE
else 重发 24 e2 30 01