用qextserialport实现921600波特率串口助手
第三方串口类下载:
链接:https://pan.baidu.com/s/1skVai9YUwrPUDcsPLsQN3w
提取码:7yot
(源文件在文末)
值得注意的是,qextserialport-1.2rc是最新的第三方串口类,如果用的是别的版本的qextserialport,此代码不一定可行。
创建一个工程,将压缩包中的文件复制到工程目录中,需要在.pro文件中加include (qextserialport.pri)并保存
保存后生成结果如下图(以Windows系统为例开发):
qextserialport.cpp文件中的波特率列表并没有921600波特率,如有需要,手动添加即可。
qextserialport获取可用串口列表代码:
QList<QextPortInfo> ports = QextSerialEnumerator::getPorts();
foreach( QextPortInfo port, ports )
{
ui->com_num->addItem(port.portName);
}
但我的电脑上加上这部分代码就不能进行debug了,但可以运行。所以测试的时候可以把端口号写死,测试完了后把这个部分加上即可。
头部校验的部分是我自己工程中内容,根据自己需要更改。
将数据存入文本文档代码如下:
void MainWindow::file()
{
fileName = "./data.csv";//在默认路径中添加文件并命名
if(fileName.isNull())
{
QMessageBox::information(this,tr("Error"),tr("Open file fail"),QMessageBox::Ok);
return;
}
QFile file(fileName);
file.open(QFile::WriteOnly|QFile::Truncate);//清除文件中的内容
file.close();
}
typedef union
{
int16_t val;
char data[2];
}myint16_t;
void MainWindow::saveToFile(QByteArray senddata)
{
QFile file;
QList<int> data;
file.setFileName(fileName);
if(!file.open(QIODevice::Append | QIODevice::Text))//QIODevice::WriteOnly:会删除文件中的全部内容,如不删除,改为append
{
qDebug()<<"open file fail";
return;
}
QTextStream out(&file); //创建一个文本流,向保存文件中写入文本
for(int i = 0 ; i < senddata.length() ; i+=2){
myint16_t tmp;
tmp.data[0] = senddata.at(i);
tmp.data[1] = senddata.at(i+1);
data.append(tmp.val);
}
QTextStream in(&file); //创建一个文本流,向保存文件中写入文本
//写数据
for(int idx = 0 ; idx < data.length() ; idx++){
in<<QString::number( data[idx])<<",";
}
in<<"\n";
file.close();
}
源代码请移步:
https://download.csdn.net/download/qq_43489868/40687983