QT——收手打造一款自己的串口助手

serialAssistant

使用方式:直接打开AppPackage,双击EXE文件即可运行,已经打包好。

源代码在serialAssistan目录下,直接用qt打开.pro工程即可查看。

代码说明

UI界面设计

在这里插入图片描述

用到的空控件:PushButton、ComboBox、LineEdit、PlainTextEdit、Label和弹簧及一些布局控件。

直接从左边拖拽到右边放到指定的位置即可。需要注意的时接受框PlainTextEdit需要设置为只读模式。

逻辑思路
串口号的获取
QStringList serialNamePortList;
// 遍历电脑中可用的COM口,并赋值到list中
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){
    serialNamePortList << info.portName();
}
// 将可用串口放到下拉框中
ui->serialPortNum->addItems(serialNamePortList);
1. 定义一个QStringList存放电脑上发现的串口号。
2. 通过foreach顺序遍历序列数据,并将串口名放进QStringList中。
3. 将QStringLIst添加到ComboBox中,这样下拉框就可以选择。
连接
QSerialPort::BaudRate baudRate;
QSerialPort::DataBits dataBits;
QSerialPort::StopBits stopBits;
QSerialPort::Parity checkBits;

// 初始化波特率
if(ui->baudRate->currentText() == "4800"){
    baudRate = QSerialPort::Baud4800;
}else if (ui->baudRate->currentText() == "9600") {
    baudRate = QSerialPort::Baud9600;
}else if (ui->baudRate->currentText() == "115200") {
    baudRate = QSerialPort::Baud115200;
}

// 初始化数据位
if(ui->dataCb->currentText() == "6"){
    dataBits = QSerialPort::Data6;
}else if(ui->dataCb->currentText() == "7"){
    dataBits = QSerialPort::Data7;
}else if(ui->dataCb->currentText() == "8"){
    dataBits = QSerialPort::Data8;
}

// 初始化停止位
if(ui->stopCb->currentText() == "1"){
    stopBits = QSerialPort::OneStop;
}else if(ui->stopCb->currentText() == "1.5"){
    stopBits = QSerialPort::OneAndHalfStop;
}else if(ui->stopCb->currentText() == "2"){
    stopBits = QSerialPort::TwoStop;
}

// 初始化校验位
checkBits = QSerialPort::NoParity;

// 设置串口
serialPort->setPortName(ui->serialPortNum->currentText());
serialPort->setBaudRate(baudRate);
serialPort->setDataBits(dataBits);
serialPort->setStopBits(stopBits);
serialPort->setParity(checkBits);

if(serialPort->open(QIODevice::ReadWrite) == true){
    QMessageBox::information(this, "提示", "成功");
}else {
    QMessageBox::critical(this, "提示", "失败");
}
  1. 打开串口需要设置几个串口的参数,基本的就是波特率,数据位,停止位,校验位和串口号。
  2. 通过下拉款中的参数初始化参数,参数通过判断赋值。
  3. 通过提示框提示是否打开。
数据的接受
serialPort = new QSerialPort(this);
connect(serialPort, SIGNAL(readyRead()), this, SLOT(serialPortReadyRead_Slot()));
  1. 连接信号糟,当有数据发送过来的时候触发。
QString buf;
buf = QString(serialPort->readAll());
ui->plainTextEditReceive->appendPlainText(buf);
  1. 自定义槽函数,通过一个buf接受发送过来的数据,并显示到接受信息框中。
数据的发送
serialPort->write(ui->lineEditSend->text().toLocal8Bit().data());

将发送框中输入的数据获取并转换为八位的数据,并写进串口。

关闭和清除
serialPort->close();
serialPort->clear();

直接使用API提供的就好。

源码连接

GitHub链接:https://github.com/wtzhu13/CPPOrCProectDemo/tree/master/serialAssistant
国内链接:https://gitee.com/wtzhu13/CPPOrCProectDemo.git

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值