我从串口读取收到的数据的速度有问题。我正在使用QSerialPort类。我把它正确地设置了(设置与发射机上设置的相同的串口选项)。在MainWindow构造函数中,当我读取原始数据时,我将信号从QSerialPort连接到MainWindow的方法(readData())。它看起来像:
MainWindow()
{
std::shared_ptr<QSerialPort> serial; //don't aks me why shared_prt - it has to be shared_ptr, no other option.
serial = std::shared_ptr<QSerialPort>(new QSeralPort)
connect(serial.get(),SIGNAL( readyRead()),this,SLOT(readData()));
}
void MainWindow::readData()
{
QByteArray data = serial->readLine();
qDebug() << data;
}
数据如下:“s03445 \ n”。程序正确读取和显示数据,但非常非常慢(例如它打印“s3445”)。数据以大约20 Hz的频率发送(400个样本 - 之后是1秒和暂停),但在我的程序数据中,频率大约为3-4 Hz。还值得注意的是,当我通过简单的串口终端(Hercules)连接到我的发射器时,我全速接收数据。这种行为可能是什么原因?我究竟做错了什么?有什么建议吗?