#include "mainwindow.h"
void MainWindow::combuttonack()
{
qDebug() << ui->combutton->text();
if(ui->combutton->text() == ("打开串口"))
{
ui->combutton->setText("关闭串口");
//设置串口号
my_serialport->setPortName(ui->cmbPortName->currentText());
//以读写方式打开串口
if(my_serialport->open(QIODevice::ReadWrite))
{
//设置波特率
my_serialport->setBaudRate(ui->cmbBaudRate->currentText().toInt());
//设置数据位
switch(ui->cmbDataBits->currentText().toInt())
{
case 5: my_serialport->setDataBits(QSerialPort::Data5);
break;
case 6: my_serialport->setDataBits(QSerialPort::Data6);
break;
case 7: my_serialport->setDataBits(QSerialPort::Data7);
break;
case 8: my_serialport->setDataBits(QSerialPort::Data8);
break;
default: my_serialport->setDataBits(QSerialPort::Data8);
break;
}
//设置校验位
if(ui->cmbParity->currentText() == ("无"))
{
my_serialport->setParity(QSerialPort::NoParity);
}
else if(ui->cmbParity->currentText() == ("奇"))
{
my_serialport->setParity(QSerialPort::EvenParity);
}
else if(ui->cmbParity->currentText() == ("偶"))
{
my_serialport->setParity(QSerialPort::OddParity);
}
else if(ui->cmbParity->currentText() == ("标志"))
{
my_serialport->setParity(QSerialPort::MarkParity);
}
else
{
my_serialport->setParity(QSerialPort::SpaceParity);
}
//设置停止位
if(ui->cmbStopBits->currentText() == ("1"))
{
my_serialport->setStopBits(QSerialPort::OneStop);
}
else if(ui->cmbStopBits->currentText() == ("1.5"))
{
my_serialport->setStopBits(QSerialPort::OneAndHalfStop);
}
else
{
my_serialport->setStopBits(QSerialPort::TwoStop);
}
//设置流控制
if(ui->cmbfluidcontrol->currentText() == ("none"))
{
my_serialport->setFlowControl(QSerialPort::NoFlowControl);
}
else if(ui->cmbfluidcontrol->currentText() == ("hardware"))
{
my_serialport->setFlowControl(QSerialPort::HardwareControl);
}
else
{
my_serialport->setFlowControl(QSerialPort::SoftwareControl);
}
//每秒读一次
connect(timer, SIGNAL(timeout()), this, SLOT(readComDataSlot()));
timer->start(1000);
}
}
else
{
ui->combutton->setText("打开串口");
timer->stop();
my_serialport->close();
}
}
void MainWindow::sendbuttonack()
{
//获取发送区的数据
QString sendData = ui->tetransdata->toPlainText();
QByteArray sendData_2 = sendData.toLatin1();
//写入缓冲区
my_serialport->write(sendData_2);
}
void MainWindow::readComDataSlot()
{
//读取串口数据
QByteArray readComData = my_serialport->readAll();
//将读到的数据显示到数据接收区的te中
if(readComData != NULL)
{
ui->terecvdata->append(readComData);
}
//清除缓冲区
readComData.clear();
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
qDebug()<<"Name:"<<info.portName();
qDebug()<<"Description:"<<info.description();
qDebug()<<"Manufacturer:"<<info.manufacturer();
//这里相当于自动识别串口号之后添加到了cmb,如果要手动选择可以用下面列表的方式添加进去
QSerialPort serial;
serial.setPort(info);
if(serial.open(QIODevice::ReadWrite))
{
//将串口号添加到cmb
ui->cmbPortName->addItem(info.portName());
//关闭串口等待人为(打开串口按钮)打开
serial.close();
}
}
QStringList baudList;//波特率
QStringList parityList;//校验位
QStringList dataBitsList;//数据位
QStringList stopBitsList;//停止位
QStringList fluidcontrolList;//流控
baudList<<"50"<<"75"<<"100"<<"134"<<"150"<<"200"<<"300"
<<"600"<<"1200"<<"1800"<<"2400"<<"4800"<<"9600"
<<"14400"<<"19200"<<"38400"<<"56000"<<"57600"
<<"76800"<<"115200"<<"128000"<<"256000";
ui->cmbBaudRate->addItems(baudList);
ui->cmbBaudRate->setCurrentIndex(12);
parityList<<"无"<<"奇"<<"偶";
parityList<<"标志";
parityList<<"空格";
ui->cmbParity->addItems(parityList);
ui->cmbParity->setCurrentIndex(0);
dataBitsList<<"5"<<"6"<<"7"<<"8";
ui->cmbDataBits->addItems(dataBitsList);
ui->cmbDataBits->setCurrentIndex(3);
stopBitsList<<"1";
stopBitsList<<"1.5";
stopBitsList<<"2";
ui->cmbStopBits->addItems(stopBitsList);
ui->cmbStopBits->setCurrentIndex(0);
fluidcontrolList << "none" << "hardware" << "software";
ui->cmbfluidcontrol->addItems(fluidcontrolList);
ui->cmbfluidcontrol->setCurrentIndex(0);
connect(ui->combutton,SIGNAL(clicked()),this,SLOT(combuttonack()));
connect(ui->sendbutton,SIGNAL(clicked()),this,SLOT(sendbuttonack()));
}
MainWindow::~MainWindow()
{
delete ui;
}
没有合适的资源?快使用搜索试试~ 我知道了~
QT5编写串口调试助手项目源码(适合初学者)
共28个文件
o:6个
h:5个
cpp:4个
需积分: 33 112 下载量 5 浏览量
2019-07-11
14:10:56
上传
评论 9
收藏 853KB RAR 举报
温馨提示
在网上下了好多资源,不是这有问题,就是那有问题,最后自己写了一个
资源推荐
资源详情
资源评论
收起资源包目录
test0002.rar (28个子文件)
test0002
build-test0002-Desktop_Qt_5_10_0_MinGW_32bit-Debug
Makefile 26KB
release
Makefile.Debug 36KB
debug
moc_predefs.h 10KB
mainwindow.o 695KB
main.o 577KB
moc_mainwindow.cpp 4KB
moc_mainwindow.o 524KB
test0002.exe 1.64MB
ui_mainwindow.h 7KB
Makefile.Release 36KB
.qmake.stash 953B
build-test0002-Desktop_Qt_5_10_0_MinGW_32bit-Release
Makefile 26KB
release
moc_predefs.h 10KB
mainwindow.o 45KB
main.o 1KB
moc_mainwindow.cpp 4KB
moc_mainwindow.o 10KB
test0002.exe 51KB
Makefile.Debug 38KB
debug
ui_mainwindow.h 7KB
Makefile.Release 38KB
.qmake.stash 953B
test0002
test0002.pro 1KB
mainwindow.cpp 6KB
mainwindow.h 663B
test0002.pro.user 23KB
main.cpp 183B
mainwindow.ui 6KB
共 28 条
- 1
资源评论
eva456
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功