C# 串口通讯, 发送和接收是同步的,这个时候很容易出现读取超时问题,
this.serialPort.Read(receivedBuffer, 0, receivedBuffer.Length);
改为事件接收读取没问题
,请问,同步怎么避免超时问题,或者事件接收怎么保证一发一回
有么有什么好的解决方案
C# 串口同步读取超时
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
wanghui0380 2023-10-16 15:46关注额,你离结果还差好几步。
慢慢来把,先理解第一步把。//伪代码 Task<bool> SendMsg(string msg) { TaskCompletionSource<bool> res = new TaskCompletionSource<bool>(); var 接收事件 = (Send, e) => { 串口.接收事件 -= 接收事件; res.TrySetResult(true); }; 串口.接收事件 += 接收事件; 串口.write(msg); return res.Task; }你先理解这个,当然离最终完成还有好多步。但是如果你不理解这个,非要跟那个快倒的园子折腾啥 while(true)sleep read这套我也拦不住。只能默默“祝福”了
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报