c++ - QSerialPort 读取字符串

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

到目前为止,我的应用程序运行良好。但是有一个问题。我们需要从串口读取数据。此数据可能仅包含字节,因此使用 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 函数并可能存储字符,直到找到新行或类似的东西。你能帮帮我吗?

谢谢!

最佳答案

在您的 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
   }
}

关于c++ - QSerialPort 读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49841208/

相关文章:

c++ - 解析自然语言

c++ - 奇怪的图像行为(Qt Quick 2)

c++ - glEnableClientState 已弃用

c++ - 为什么 `std::pair` 允许使用用户定义的已删除 move 构造函数从类类型的右值进行初始化?

c++ - 使用Eigen::Transpose <const Matrix3>的正确方法?

qt - QtDesigner 中的重叠小部件

c++ - 如何更改由 QAction 信号触发的插槽内的光标

c++ - 如何编写可以采用 const 迭代器的 C++11 模板

ruby-on-rails - 将保存的 Rails 参数从字符串中取回参数

python - 从字符串中提取字典