从 QByteArray 中的 RS232 接收字节时出现问题。我连接了 readyread() 信号来调用我的串行端口方法,并在其中使用 readAll() 将字节读取到 QByteArray。只要数据可用,它就会重写 QByteArray,但我想全部接收,然后使用数据,但现在我不能,因为它是部分的。该怎么办?
user5585984
问问题
1558 次
1 回答
2
只需附加到数组。您还需要一些标准来确定您何时收到了您想要的所有数据。例如,这可以是给定数量的字节:
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;
}
});
...
};
于 2016-03-29T17:16:30.053 回答