目的是实现 将串口发来的数据保存在一个文件内。目前可正确的接收,但保存起来的文件内却在字符间有很多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然后再写到文件里试试