QSerialPort 读取字符串

QSerialPort read string

到目前为止,我的应用程序运行良好。但是有一个问题。我们需要从串口读取数据。此数据可能仅包含字节,因此使用 readLine() 函数读取可能会为我们提供错误数据或无数据。现在这是代码,所以你可以理解我的问题。

void MainWindow::readData()
{
  while(serial->canReadLine())
  {
       QByteArray data = serial->readLine();

       emit serialPortData(data, false);

       QString myString(data);
       if(myString.startsWith("SensorUpdate"))
       emit sensorData(myString) ;
  }
}

我正在读取数据,如果它以字符串(某些值)开头,我会将这些值发送到另一个 class,它将在其中更新 QTableWidget。但是这个 "startsWith()" 只有当我从串行端口逐行读取时才有效。我想使用 readAll 函数并可能存储字符,直到找到新行或类似的东西。你能帮帮我吗?

谢谢!

在您的 GUI 中,您可以将 QString 拆分为 list 在 \n 上拆分。然后循环列表并像往常一样处理每个列表。所以如果你得到一个以上的输入也没关系。

这就是你必须做的。

void SensorWidget::fillTable(QString serialString)
{
   tempList = serialString.split("\r\n");

   for(int i=0;i<tempList.size();i++)
   {
       //filll table code
   }
}