我使用Qserialport每10毫秒接收一个7字节的数据。波特率是115200.我使用信号(readyread)和插槽(readLine在一个单独的函数中)方法。就绪读取信号仅在每16ms发射一次。但我的设备以10毫秒的间隔发送数据。如何以10ms的间隔接收样本。如何使预读信号以10ms的间隔发射。感谢
答案 0 :(得分:2)
一般来说,即使接收到一个字节,也会发出readyread
信号。但响应时间取决于许多因素,如驱动程序,CPU负载或Qt事件循环繁忙程度。
当在串行端口中检测到接收时,将读取驱动程序缓冲区中的所有数据,然后发出信号readyRead()
。从驱动程序检测到接收到尝试读取所有缓冲区的那一刻,可能会有更多字节到达端口。
如果您想以特定间隔阅读数据,则无需使用readyRead
信号。您可以{10}间隔QTimer
,并将其timeout
信号连接到您通过调用readAll()
读取数据的某个插槽。