Qt5串口调试助手(8)

您所在的位置:网站首页 读取串口数据保存文本 Qt5串口调试助手(8)

Qt5串口调试助手(8)

#Qt5串口调试助手(8)| 来源: 网络整理| 查看: 265

1.文件读取及数据存储功能

在数据量比较大时,我们希望能够直接读取文件发送、或者将接收到的数据存储成文件,方便后续分析。如下图所示两个按钮将实现该功能。

文件功能.png

2.读取文件功能 //读取文件,并显示在发送窗口 void MainWindow::on_pushButtonRdFile_clicked() { QString curPath=QDir::currentPath();//获取系统当前目录 QString dlgTitle="打开一个文件"; //对话框标题 QString filter="文本文件(*.txt);;所有文件(*.*)"; //文件过滤器 QString aFileName=QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter); if (aFileName.isEmpty()) return; openTextByIODevice(aFileName); } /*********************************************************** *编码格式转换 *防止GBK中文乱码 ***********************************************************/ QString MainWindow::byteArrayToUnicode(const QByteArray &array) { // state用于保存转换状态,它的成员invalidChars,可用来判断是否转换成功 // 如果转换成功,则值为0,如果值大于0,则说明转换失败 QTextCodec::ConverterState state; // 先尝试使用utf-8的方式把QByteArray转换成QString QString text = QTextCodec::codecForName("UTF-8")->toUnicode(array.constData(), array.size(), &state); // 如果转换时无效字符数量大于0,说明编码格式不对 if (state.invalidChars > 0) { // 再尝试使用GBK的方式进行转换,一般就能转换正确(当然也可能是其它格式,但比较少见了) text = QTextCodec::codecForName("GBK")->toUnicode(array); } return text; } 3.保存文件功能 /*********************************************************** *写文件函数 *执行文件保存工作 ***********************************************************/ bool MainWindow::saveTextByIODevice(const QString &aFileName) { //用IODevice方式保存文本文件 QFile aFile(aFileName); //aFile.setFileName(aFileName); if (!aFile.open(QIODevice::WriteOnly | QIODevice::Text)) return false; QString str=ui->TextRev->toPlainText();//整个内容作为字符串 QByteArray strBytes=str.toUtf8();//转换为字节数组 aFile.write(strBytes,strBytes.length()); //写入文件 aFile.close(); return true; } 4.小结

上述涉及到文件处理,记得添加相应的头文件。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3