代码之家  ›  专栏  ›  技术社区  ›  e.jahandar

在qserialport中实际写入设备的字节数

  •  0
  • e.jahandar  · 技术社区  · 7 年前

    在qserialport中,有一个bytesswrited信号(继承自qiodevice),当向下位设备写入多个字节时会发出该信号。 如果我们使用qserialport write方法发送10KB的数据,bytesswrite信号将立即发出,指示4K的数据已写入Linux串行端口设备的缓冲区(因为默认的串行端口写入缓冲区大小为1page=4096b)。

    但是,要显示进度条,我们需要知道串行端口传输了多少数据。 qserialport甚至linux串行端口字符设备中是否有这样的功能?啊!

    注: qserialport中有waitforbytes,它等待缓冲区被清空,但此方法会阻塞事件循环并冻结ui。将串行端口移到另一个线程中似乎是一个很好的解决方案,但在我的情况下,需要做很多更改,这是不可取的。

    编辑: 有ioctl用于获取输出缓冲区中的字节数,称为tiocoutq。我无法验证这是否适用于串行端口,但是我测试了它,每次调用tiocoutq ioctl时都会得到零(即使串行端口正在发送某些东西)。

    0 回复  |  直到 7 年前