繁体   English   中英

QSerialPort readyread()信号

[英]QSerialPort readyread() SIGNAL

从QByteArray中的RS232接收字节时出现问题。 我连接了readyread()信号以调用我的serialport方法,并且在其中将带有readAll()的字节读取到QByteArray。 每当有可用数据时,它都会重写QByteArray,但是我想全部接收它,然后再使用数据,但是现在我不能,因为它是局部的。 该怎么办?

只需追加到数组即可。 您还需要一些标准来确定何时收到所需的所有数据。 可以是例如给定的字节数:

class Communicator {
  int expect;
  QSerialPort port;
  QByteArray reply;
  void processReply() {
    ...
  }
public:
  Communicator() {
    QObject::connect(&port, &QIODevice::readyRead, [this]{
      reply += port.readAll();
      if (expect && reply.size() >= expect) {
        processReply();
        reply.clear();
        expect = 0;
      }
    });
  ...
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM