当前位置: 代码迷 >> QT开发 >> 请问:linux上Qt读取串口的有关问题
  详细解决方案

请问:linux上Qt读取串口的有关问题

热度:69   发布时间:2016-04-25 04:30:26.0
请教:linux下Qt读取串口的问题
目的是实现 将串口发来的数据保存在一个文件内。目前可正确的接收,但保存起来的文件内却在字符间有很多0.
例如:使用串口调试工具发送5个“Hello”。
在程序中可以正确接收,但保存起来的文件却是“……00 00 06 68 65 6c 6c 6f 21 01 00 00 00 00……06 68 65 6c 6c 6f 21 01 00 00……”这个样子的。。。。
以下是代码:
[code=C/C++][/void Download::readMyCom()
{
  qWarning("read!");
  qDebug() << "read: "<< myCom->bytesAvailable()<<"bytes";
  QByteArray temp = myCom->readAll();
  ui->textBrowser->insertPlainText(temp);

  QFile file("write2fileName");
  //如果打开失败则给出提示并退出函数
  if(!file.open(QFile::Append | QIODevice::Text)){
  qWarning("fail to open the file!");
   
  return;
  }
  QDataStream out(&file);
  out<<temp<<endl;
  file.close();
}
]

------解决方案--------------------
readall读出的是串口所有数据,串口有头尾协议。。所以。可能需要自己去剔除哈。。

68 65 6c 6c 6f 这个应该就是hello
------解决方案--------------------
“……00 00 06 68 65 6c 6c 6f 21 01 00 00 00 00……06 68 65 6c 6c 6f 21 01 00 00……” 你这里不只一组数据啊,总共应该有5组68 65 6c 6c 6f,你检查看看保存的文件里是不是有5个?
------解决方案--------------------
hello前面和后面的数据可能是串口的头和尾,其实只有中间的才是发送的数据,想办法把他弄掉看看。或者看看用串口调试助手看看出来的数据和您qt读出来的数据一样不。
------解决方案--------------------
还是使用你原来的那段代码,就是把temp转成QString然后再写到文件里试试