QSerialPort读取字符串

时间:2018-04-15 11:04:49

标签: c++ string qt serial-port signals-slots

到目前为止,我的应用程序运行正常。但是有一个问题。我们需要从serialport读取数据。此数据可能只包含字节,因此使用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) ;
  }
}

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

谢谢!

1 个答案:

答案 0 :(得分:0)

在GUI中,您可以将QString拆分为\ n中的list拆分。然后循环列表并像往常一样处理每个列表。因此,如果你输入的不止一个,那就无所谓了。

这就是你必须要做的事情。

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

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