一、创建工程
正常创建一个widget项目工程,控件的方式进行代码研究。创建好编译测试一下工程。可以编译进行下一步操作。
二、串口UI界面设计
1、选择ui控件
- 串口接收下位机数据显示界面控件
- 选择容器、波特率、串口号、数据位等多选择容器的控件
- 上位机串口发送数据的控件
- 制作一些广告,加入自己的元素,比如作者电话等等个人信息
- 最后经过布局以后效果如下:
2、设置UI默认显示
- 容器、波特率、串口号、数据位等多选择容器的控件
- 修改控件的属性名字,便于写代码进行调试
3、添加串口识别代码
#include <qserialportinfo.h>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QStringList serialNamePort;
foreach(const QSerialPortInfo &info ,QSerialPortInfo::availablePorts()){
serialNamePort<<info.portName();
}
ui->Serial->addItems(serialNamePort);
}
效果如下:
三、实现按钮的逻辑功能:
当打开串口按钮的时候需要初始化串口,也就是初始化串口的一系列参数,下面为初始化代码。
QSerialPort::BaudRate baudrate;
QSerialPort::DataBits databits;
QSerialPort::StopBits stopbits;
QSerialPort::Parity parity;
if(ui->bote->currentText() == "1200"){
baudrate = QSerialPort::Baud1200;
}else if(ui->bote->currentText() == "4800"){
baudrate = QSerialPort::Baud4800;
}else if(ui->bote->currentText() == "9600"){
baudrate = QSerialPort::Baud9600;
}else if(ui->bote->currentText() == "38400"){
baudrate = QSerialPort::Baud38400;
}else if(ui->bote->currentText() == "115200"){
baudrate = QSerialPort::Baud115200;
}
if(ui->shujubit->currentText() == "5"){
databits = QSerialPort::Data5;
}else if(ui->shujubit->currentText() == "6"){
databits = QSerialPort::Data6;
}else if(ui->shujubit->currentText() == "7"){
databits = QSerialPort::Data7;
}else if(ui->shujubit->currentText() == "8"){
databits = QSerialPort::Data8;
}
if(ui->closebit->currentText() == "1"){
stopbits = QSerialPort::OneStop;
}else if(ui->closebit->currentText() == "1.5"){
stopbits = QSerialPort::OneAndHalfStop;
}else if(ui->closebit->currentText() == "2"){
stopbits = QSerialPort::TwoStop;
}
if(ui->jiaoyanwei->currentText() == "None"){
parity = QSerialPort::NoParity;
}else if(ui->jiaoyanwei->currentText() == "Odd"){
parity = QSerialPort::OddParity;
}else if(ui->jiaoyanwei->currentText() == "Even"){
parity = QSerialPort::EvenParity;
}
再设置对应参数
serilaPort->setPortName(ui->Serial->currentText());
serilaPort->setBaudRate(baudrate);
serilaPort->setDataBits(databits);
serilaPort->setStopBits(stopbits);
serilaPort->setParity(parity);
增加按钮事件,弹出提示框。
if(serilaPort->open(QIODevice::ReadWrite) == true){
QMessageBox::information(this,"提示","成功");
}else {
QMessageBox::critical(this,"提示","失败");
}
编写串口显示的槽函数
学习产出:
提示:这里统计学习计划的总量
例如:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)