串口通信write函数执行时间长

缺头发 2021-02-25 11:41:28
开发环境redhat,程序功能接收控制命令然后通过串口转发到下位机,周期大概640毫秒转发一次。串口波特率115200,没有流控制,停止位1,校验位8,问题是每过一段时间,查看串口write函数执行时间长达三到五毫秒,下位机接收命令正常,各位感觉可能我哪里出了问题
...全文
394 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
movsd 2021-02-25
  • 打赏
  • 举报
回复 1
windows中如果打开串口时不设置为overlapped模式,write发送数据时会等待发送完成再返回,你这个应该也是相同的原因,需要改为异步读写。
开心大爆炸 2022-11-22
  • 举报
回复
@movsd 我就是这种情况,以为自己用的异步,结果自己用的同步。。。
赵4老师 2021-02-25
  • 打赏
  • 举报
回复
输出缓冲区满了,上位机发得太快太多,或者下位机收得太慢太少。 任何收发两端速度不一致的通讯,都需要在它们之间使用一个足够大的FIFO缓冲区。 对任何FIFO缓冲区的使用,都需要仔细考虑接收端接收时超时无数据和发送端发送时FIFO缓冲区已满这两种情况下该如何做。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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