首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Qt 5实现串口调试助手 (源工程文件、0积分下载)

开发技术 8.83KB 21 需要积分: 0
立即下载

资源介绍:

基于Qt 5实现串口调试助手,程序仅供参考,修改了之前十六进制接收0xA0--0xFF有误的问题,新增了窗口自适应(ui文件设置栅格),文件详情可看博客链接https://blog.csdn.net/m0_51294753/article/details/121405661。
#include "widget.h" #include "ui_widget.h" #include #include #include #include #include #include Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); resize(800,600); //窗口限制 setWindowTitle("Serial_Port"); SendByte=0;ReceByte=0; serial = new QSerialPort(this); ui->comboBox_2->setCurrentIndex(5); //初始化 ui->comboBox_3->setCurrentIndex(3); ui->comboBox_4->setCurrentIndex(2); ui->comboBox_5->setCurrentIndex(0); ui->lineEdit->setText("1000"); ui->checkBox->setCheckState(Qt::Checked); ui->checkBox_4->setCheckState(Qt::Checked); ui->pushButton_7->setEnabled(false); ui->checkBox_7->setEnabled(false); connect(serial,SIGNAL(readyRead()), //信号与槽函数 this,SLOT(serialPort_readyRead())); Times=0;portTime=0; lineEditData=1000; timer = new QTimer; timer->start(1); //connect(timer,&QTimer::timeout,this,&Widget::TimerEvent); connect(timer,SIGNAL(timeout()),this,SLOT(TimerEvent())); //信号与槽函数 } Widget::~Widget() { delete ui; } void Widget::on_pushButton_2_clicked() { if(ui->pushButton_2->text()==QString("打开串口")) { //设置串口名 serial->setPortName(ui->comboBox->currentText()); //设置波特率 serial->setBaudRate(ui->comboBox_2->currentText().toInt()); //设置数据位 switch(ui->comboBox_3->currentText().toInt()) { case 5:serial->setDataBits(QSerialPort::Data5);break; case 6:serial->setDataBits(QSerialPort::Data6);break; case 7:serial->setDataBits(QSerialPort::Data7);break; case 8:serial->setDataBits(QSerialPort::Data8);break; default:serial->setDataBits(QSerialPort::UnknownDataBits);break; } //设置奇偶校验位 switch(ui->comboBox_4->currentIndex()) { case 0:serial->setParity(QSerialPort::EvenParity);break; case 1:serial->setParity(QSerialPort::MarkParity);break; case 2:serial->setParity(QSerialPort::NoParity);break; case 3:serial->setParity(QSerialPort::OddParity);break; default:serial->setParity(QSerialPort::UnknownParity);break; } //设置停止位 switch (ui->comboBox_5->currentIndex()) { case 0:serial->setStopBits(QSerialPort::OneStop);break; case 1:serial->setStopBits(QSerialPort::OneAndHalfStop);break; case 2:serial->setStopBits(QSerialPort::TwoStop);break; default:serial->setStopBits(QSerialPort::UnknownStopBits);break; } //设置流控制 serial->setFlowControl(QSerialPort::NoFlowControl); //打开串口 if(!serial->open(QIODevice::ReadWrite)) { QMessageBox::about(NULL,"提示","无法打开串口"); return; } //下拉控件失能 ui->comboBox->setEnabled(false); ui->comboBox_2->setEnabled(false); ui->comboBox_3->setEnabled(false); ui->comboBox_4->setEnabled(false); ui->comboBox_5->setEnabled(false); ui->pushButton->setEnabled(false); ui->checkBox_7->setEnabled(true); ui->pushButton_2->setText(tr("关闭串口")); ui->pushButton_7->setEnabled(true); } else { //关闭串口 serial->close(); //下拉按键使能 ui->comboBox->setEnabled(true); ui->comboBox_2->setEnabled(true); ui->comboBox_3->setEnabled(true); ui->comboBox_4->setEnabled(true); ui->comboBox_5->setEnabled(true); ui->pushButton->setEnabled(true); ui->checkBox_7->setEnabled(false); ui->pushButton_2->setText(tr("打开串口")); //发送失能 ui->pushButton_7->setEnabled(false); } } void Widget::on_pushButton_clicked() //扫描串口 { int i,n; ui->comboBox->clear(); portStringLine.clear(); foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts()) portStringLine +=info.portName(); n=portStringLine.size(); for(i=0;isetPortName(portStringLine[i]); if(!serial->open(QIODevice::ReadWrite)) { portStringLine[i]+="(不可用)"; QVariant v(0); //禁用 ui->comboBox->setItemData(1, v, Qt::UserRole - 1); } else { QVariant v(1|32); //可用 ui->comboBox->setItemData(1, v, Qt::UserRole - 1); } serial->close(); } ui->comboBox->addItems(portStringLine); } void Widget::serialPort_readyRead() //串口接收 { int i,length; QString lasttext; if(ui->checkBox_3->checkState()!=Qt::Checked) { lasttext=ui->textEdit->toPlainText(); Receivetext = serial->readAll(); ReceByte+=Receivetext.length(); ui->label_10->setText(QString::number(ReceByte)); if(ui->checkBox_2->checkState()==Qt::Checked) { Receivetext=Receivetext.toLatin1().toHex(); //字符串转十六进制 length=Receivetext.length(); for(i=0;i<=length/2;i++) { Receivetext.insert((2+3*i),' '); //插入空格字符串 } } else Receivetext=Receivetext.toLatin1(); lasttext=lasttext.append(Receivetext); ui->textEdit->setText(lasttext); } } void Widget::on_pushButton_7_clicked() //串口发送 { QByteArray bytearray; Sendtext=ui->textEdit_2->toPlainText(); if(ui->checkBox_6->checkState()==Qt::Checked) Sendtext += '\n'; if(ui->checkBox_5->checkState()!=Qt::Checked) bytearray = Sendtext.toLatin1(); else bytearray = QByteArray::fromHex(Sendtext.toUtf8()); //十六进制转字符串 serial->write(bytearray); //定长发送 //serial->write((const char *)param_data,16); SendByte+=Sendtext.length(); ui->label_9->setText(QString::number(SendByte)); ui->textEdit_2->moveCursor(QTextCursor::End); } void Widget::TimerEvent() //定时事件,1ms { int t=500; //扫描串口时间 Times++;portTime++; if(Times>=lineEditData) //定时发送 { if(ui->checkBox_7->checkState()==Qt::Checked) Widget::on_pushButton_7_clicked(); Times=0; } if(portTime==t) //定时扫描串口 { QStringList newPortStringList; newPortStringList.clear(); foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts()) newPortStringList += info.portName(); if(newPortStringList.size() != portStringLine.size()) { portStringLine = newPortStringList; ui->comboBox->clear(); ui->comboBox->addItems(portStringLine); } portTime=0; } } void Widget::on_pushButton_8_clicked() //清除计数 { SendByte=0; ReceByte=0; ui->label_9->setText(QString::number(SendByte)); ui->label_10->setText(QString::number(ReceByte)); } void Widget::on_pushButton_4_clicked() //清除接收区 { ui->textEdit->clear(); } void Widget::on_pushButton_6_clicked() //清除发送区 { ui->textEdit_2->clear(); } void Widget::on_checkBox_clicked() //文本接收 { ui->checkBox->setCheckState(Qt::Checked);

资源文件列表:

SerialPort.zip 大约有7个文件
  1. SerialPort/SerialPort.pro 626B
  2. SerialPort/SerialPort.pro.user 21.88KB
  3. SerialPort/main.cpp 175B
  4. SerialPort/widget.cpp 10.42KB
  5. SerialPort/widget.h 1.7KB
  6. SerialPort/widget.ui 12.21KB
  7. SerialPort/
0评论
提交 加载更多评论
其他资源 jquery.validate.js 1.8.1 + 实例
jquery.validate.js 1.8.1 + 实例
nasm编译器
X86-32的汇编编译器
基于stm32f407的示波器+FFT频谱分析
使用DMA直接将ADC->DR中的数据传输到ADC数据缓存区,使用定时器触发adc,可调采样率,最高2.8MHz,可进行fft运算,使用emwin绘制时域图像和频域图。
ExtJS Web应用程序开发指南(第2版).pdf
ExtJS Web应用程序开发指南(第2版) ExtJS Web应用程序开发指南(第2版) ExtJS Web应用程序开发指南(第2版)
LSTM预测实验中用到的航班数据集
数据集有三列:年、月和乘客。“passengers”列包含指定月份中旅行的乘客总数,可以看到数据集中有144行3列,这意味着数据集中包含了乘客12年的出行记录。这项任务是根据前132个月的数据,预测过去12个月出行的乘客数量。请记住,我们有144个月的记录,这意味着前132个月的数据将用于训练我们的LSTM模型,而模型性能将使用最后12个月的值进行评估。
java 模拟登录(含验证码)
使用 tess4j 识别验证码,实现java post 登录网站,忘记了很久以前写的了,改了下积分大家可以免费下载
java 模拟登录(含验证码)
image2lcd V4.0
image2lcd是一款非常简单使用的图片转换成LCD图像数据的图片转换软件。它能够将各种形式来源的图片转换成特定的数据格式以用来匹配单片机系统所需要的显示数据格式。在输入方面,它支持JPG、BMP、EMF、WBMP、GIF、ICO等多种格式图片的输入,输出的数据拥有二进制类型、WBMP格式、C语言数组类型和标准的BMP格式等多种类型。同时它还能将图象的数据扫描方式、亮度、对比度、灰度(颜色数)以及图像数据排列方式等等进行调节。
最全HZK12,HZK16,HZK24,HZK32,HZK40,HZK48,ASC12, ASC16,ASC24, ASC32, ASC48字库+读取代码
这几天接了一个项目,需要制作点阵文字,所以接触了字库这东西,由于网上字库挺多的,但是不全,有的字库全,但是字库的读取代码只有一部分,所以还是花费了一天时间搞这东西。现在整理了一份叫全的字体,并配上每种字体的读取代码。