串口通信解决方法
串口通信
我们在开发一个项目
主要是串口控制机械运动
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
我们在开发一个项目
主要是串口控制机械运动
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