gpt4 book ai didi

c++ - 串行数据包丢失 - QTSerialPort

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:58 26 4
gpt4 key购买 nike

我正在制作一个程序,以每秒 250 个样本(115200 波特)的速度读取来自串行 RN42 蓝牙连接的数据流。运行代码时,我注意到一些数据没有被删除和读取,因此不同步。

SerialMonitor::SerialMonitor(QObject *parent) :
QObject(parent)
{

// Initialization here

DAQ = new QSerialPort(this);
DAQ->setPortName("/dev/tty.BIOEXG-SPP");
DAQ->setBaudRate(QSerialPort::Baud115200);
DAQ->setDataBits(QSerialPort::Data8);
DAQ->setParity(QSerialPort::NoParity);
DAQ->setStopBits(QSerialPort::OneStop);
DAQ->setFlowControl(QSerialPort::NoFlowControl);

if (DAQ->open(QIODevice::ReadOnly)) printf("Success!\n");
else printf("FAILED...\n");

connect(DAQ, SIGNAL(readyRead()), this, SLOT(WriteToText()));
}

void SerialMonitor::WriteToText()
{
while (DAQ->canReadLine()) {
QString IncomingData = DAQ->readLine();

// More processing here

}
}

我的代码有问题吗?如果没有,有没有办法解决这个问题?这是脑电图设备,因此每个数据点都至关重要。

提前致谢!

最佳答案

您已禁用所有错误检查和同步机制:

  • 禁用奇偶校验位。
  • 已禁用流量控制。

如果您可以控制设备上的微 Controller ,一个不错的选择是实现 chk 机制来恢复丢失的数据。如果您的设备是黑盒,则必须使用硬件机制来提高稳定性。当使用无线通信时,存在丢失一些数据的可能性,并且在项目中被考虑。

注意:串口参数应该在打开之后设置,不能在打开之前设置。

关于c++ - 串行数据包丢失 - QTSerialPort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26917013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com