newtio.c_cc[VTIME] =100;
newtio.c_cc[VMIN] = 128;
为什么阻塞模式下,这两个参数设置的作用不大呢,c_cc[VMIN]设置较大时每次只能读取64字节,设置较小时却能读取130字节左右,好奇怪啊
一般来说,termios结构中的c_cc数组用于配置各种终端控制设置,包括阻断串口的输入和输出操作的超时。
c_cc数组中的VTIME和VMIN成员用于指定阻断串行端口上的输入操作的超时。VTIME设置指定了串口在返回前等待新数据到达的时间,而VMIN则指定了在读操作返回前必须接收的最小字符数。
当在串口上使用阻塞式I/O时,为了确保你的应用程序能够从串口接收数据,而不会因为等待新数据的到来而卡住,设置这些值是很重要的。然而,同样重要的是要注意,这些设置的行为可能会有所不同,这取决于你系统上的串口驱动的具体实现,所以你所选择的设置有可能无法达到预期效果。
不过,你为VTIME和VMIN选择的值可能不适合你的使用情况。将VTIME设置为100,将VMIN设置为128,意味着串口在返回之前将等待100个十分之一秒(10秒)的新数据到达,并且在读操作返回之前需要至少收到128个字符。这可能会导致从串口读取时出现很长的延迟。
你可以试试对VTIME和VMIN的不同设置。