its_a_sunshine 2022-12-13 15:25 采纳率: 23.8%
浏览 9
已结题

linux串口怎么用

newtio.c_cc[VTIME] =100;
newtio.c_cc[VMIN] = 128;
为什么阻塞模式下,这两个参数设置的作用不大呢,c_cc[VMIN]设置较大时每次只能读取64字节,设置较小时却能读取130字节左右,好奇怪啊

  • 写回答

1条回答 默认 最新

  • ShowMeAI 2022-12-13 16:08
    关注

    一般来说,termios结构中的c_cc数组用于配置各种终端控制设置,包括阻断串口的输入和输出操作的超时。


    c_cc数组中的VTIME和VMIN成员用于指定阻断串行端口上的输入操作的超时。VTIME设置指定了串口在返回前等待新数据到达的时间,而VMIN则指定了在读操作返回前必须接收的最小字符数。


    当在串口上使用阻塞式I/O时,为了确保你的应用程序能够从串口接收数据,而不会因为等待新数据的到来而卡住,设置这些值是很重要的。然而,同样重要的是要注意,这些设置的行为可能会有所不同,这取决于你系统上的串口驱动的具体实现,所以你所选择的设置有可能无法达到预期效果。


    不过,你为VTIME和VMIN选择的值可能不适合你的使用情况。将VTIME设置为100,将VMIN设置为128,意味着串口在返回之前将等待100个十分之一秒(10秒)的新数据到达,并且在读操作返回之前需要至少收到128个字符。这可能会导致从串口读取时出现很长的延迟。


    你可以试试对VTIME和VMIN的不同设置。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月22日
  • 已采纳回答 12月14日
  • 创建了问题 12月13日

悬赏问题

  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误