首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

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

2012-10-07 
请教:linux下Qt读取串口的问题目的是实现 将串口发来的数据保存在一个文件内。目前可正确的接收,但保存起来

请教: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然后再写到文件里试试

热点排行