#include "mainwindow.h"
#include "setpara.h"
#include "ui_mainwindow.h"
class Setpara *setpara;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
Status = 0;
Serial_1 = new QSerialPort;
connect(Serial_1, SIGNAL(readyRead()), this, SLOT(Serial_1_DataINCome()));
Serial_2 = new QSerialPort;
connect(Serial_2, SIGNAL(readyRead()), this, SLOT(Serial_2_DataINCome()));
connect(ui->toolButton_1, SIGNAL(clicked()), this, SLOT(StartWork()));
connect(ui->toolButton_2, SIGNAL(clicked()), this, SLOT(StopWork()));
connect(ui->toolButton_3, SIGNAL(clicked()), this, SLOT(SerialSetpara()));
//初始化串口列表
QStringList m_serialPortName;
ui->comboBox_1->addItems(QStringList (" "));
m_serialPortName.clear();
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
m_serialPortName << info.portName() + " "+ info.description();
}
ui->comboBox_1->addItems(m_serialPortName);
m_serialPortName.clear();
ui->comboBox_2->addItems(QStringList (" "));
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
m_serialPortName << info.portName() + " "+ info.description();
}
ui->comboBox_2->addItems(m_serialPortName);
//标签定时器
Timer = new QTimer;
connect(Timer, SIGNAL(timeout()), this, SLOT(RefreshOutTime()));
Timer->start(800);
Timer_Serial_1 = new QTimer;
connect(Timer_Serial_1, SIGNAL(timeout()), this, SLOT(Serial_1_TimeOut()));
Timer_Serial_2 = new QTimer;
connect(Timer_Serial_2, SIGNAL(timeout()), this, SLOT(Serial_2_TimeOut()));
}
MainWindow::~MainWindow()
{
delete ui;
}
//串口缓冲区数据就绪
void MainWindow::Serial_1_DataINCome(void)
{
if(U1.autoframe == 0)
{ Serial_1_TimeOut(); }
else
{ Timer_Serial_1->start(U1.autoframe); }
}
void MainWindow::Serial_2_DataINCome(void)
{
if(U2.autoframe == 0)
{ Serial_2_TimeOut(); }
else
{ Timer_Serial_2->start(U2.autoframe); }
}
//定时器定时
void MainWindow::Serial_1_TimeOut(void)
{
QByteArray arry;
arry = Serial_1->readAll();
if(!arry.isEmpty())
{
ui->textEdit->append("串口 1 -> 串口 2:" + arry.toHex(' '));
Serial_2->write(arry);
}
}
void MainWindow::Serial_2_TimeOut(void)
{
QByteArray arry;
arry = Serial_2->readAll();
if(!arry.isEmpty())
{
ui->textEdit->append("串口 2 -> 串口 1:" + arry.toHex(' '));
Serial_1->write(arry);
}
}
//按钮槽
void MainWindow::StartWork(void)
{
int ErrFlag1 = 0, ErrFlag2 = 0;
QString Serial_1_COM, Serial_2_COM;
enum QSerialPort::BaudRate br = QSerialPort::Baud19200;
enum QSerialPort::DataBits db = QSerialPort::Data8;
enum QSerialPort::FlowControl fc = QSerialPort::NoFlowControl;
enum QSerialPort::Parity p = QSerialPort::NoParity;
enum QSerialPort::StopBits sb = QSerialPort::OneStop;
Serial_1_COM = ui->comboBox_1->currentText().split(' ').at(0);
Serial_2_COM = ui->comboBox_2->currentText().split(' ').at(0);
if(Serial_1_COM == Serial_2_COM)
{ QMessageBox::information(this, "提示", "不能选择同一串口! ", QMessageBox::Ok); }
else
{
Serial_1->setPortName(Serial_1_COM);
Serial_1->close();
//打开串口
if( Serial_1->open(QIODevice::ReadWrite) )
{
//打开成功
//设置波特率和读写方向
if(U1.buadrate == "1200") br = QSerialPort::Baud1200;
if(U1.buadrate == "2400") br = QSerialPort::Baud2400;
if(U1.buadrate == "4800") br = QSerialPort::Baud4800;
if(U1.buadrate == "9600") br = QSerialPort::Baud9600;
if(U1.buadrate == "19200") br = QSerialPort::Baud19200;
if(U1.buadrate == "38500") br = QSerialPort::Baud38400;
if(U1.buadrate == "115200") br = QSerialPort::Baud115200;
Serial_1->setBaudRate(br, QSerialPort::AllDirections);
//数据位为8位
if(U1.databit == "5") db = QSerialPort::Data5;
if(U1.databit == "6") db = QSerialPort::Data6;
if(U1.databit == "7") db = QSerialPort::Data7;
if(U1.databit == "8") db = QSerialPort::Data8;
Serial_1->setDataBits(db);
//无流控制
if(U1.hardctl == "NoFlowControl") fc = QSerialPort::NoFlowControl;
if(U1.hardctl == "HardwareControl") fc = QSerialPort::HardwareControl;
if(U1.hardctl == "SoftwareControl") fc = QSerialPort::SoftwareControl;
Serial_1->setFlowControl(fc);
//无校验位
if(U1.parity == "None") p = QSerialPort::NoParity;
if(U1.parity == "ODD") p = QSerialPort::OddParity;
if(U1.parity == "EVEN") p = QSerialPort::EvenParity;
Serial_1->setParity(p);
//一位停止位
if(U1.stopbit == "1") sb = QSerialPort::OneStop;
if(U1.stopbit == "2") sb = QSerialPort::TwoStop;
if(U1.stopbit == "1.5") sb = QSerialPort::OneAndHalfStop;
Serial_1->setStopBits(sb);
ErrFlag1 = 2;
}
else
{
ErrFlag1 = 1;
QMessageBox::information(this, "提示", "打开串口 1 时遇到错误! ", QMessageBox::Ok);
}
Serial_2->setPortName(Serial_2_COM);
Serial_2->close();
//打开串口
if( Serial_2->open(QIODevice::ReadWrite) )
{
//打开成功
//设置波特率和读写方向
if(U2.buadrate == "1200") br = QSerialPort::Baud1200;
if(U2.buadrate == "2400") br = QSerialPort::Baud2400;
if(U2.buadrate == "4800") br = QSerialPort::Baud4800;
if(U2.buadrate == "9600") br = QSerialPort::Baud9600;
if(U2.buadrate == "19200") br = QSerialPort::Baud19200;
if(U2.buadrate == "38500") br = QSerialPort::Baud38400;
if(U2.buadrate == "115200") br = QSerialPort::Baud115200;
Serial_2->setBaudRate(br, QSerialPort::AllDirections);
//数据位为8位
if(U2.databit == "5") db = QSerialPort::Data5;
if(U2.databit == "6") db = QSerialPort::Data6;
if(U2.databit == "7") db = QSerialPort::Data7;
if(U2.databit == "8") db = QSerialPort::Data8;
Serial_2->setDataBits(db);
//无流控制
if(U2.hardctl == "NoFlowControl") fc = QSerialPort::NoFlowControl;
if(U2.hardctl == "HardwareControl") fc = QSerialPort::HardwareControl;
if(U2.hardctl == "SoftwareControl") fc = QSerialPort::SoftwareControl;
Serial_2->setFlowControl(fc);
//无校验位
if(U2.parity == "None") p = QSerialPort::NoParity;
if(U2.parity == "ODD") p = QSerialPort::OddParity;
if(U2.parity == "EVEN") p = QSerialPort::EvenParity;
Serial_2->setParity(p);
//一位停止位
if(U2.stopbit == "1") sb = QSerialPort::OneStop;
if(U2.stopbit == "2") sb = QSerialPort::TwoStop;
if(U2.stopbit == "1.5") sb = QSerialPort::OneAndHalfStop;
Serial_2->setStopBits(sb);
ErrFlag2 = 2;
}
else
{
ErrFlag2 = 1;
QMessageBox::information(this, "提示", "打开串口 2 时遇到错误! ", QMessageBox::Ok);
}
if(ErrFlag1 == 2 && ErrFlag2 == 2)
{
ui->label_3->setText("正在工作.");
Status = 1;
ui->toolButton_1->setEnabled(false);
T
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
USART_Convert.rar (62个子文件)
USART_Convert
串口转发工具V1.1
iconengines
qsvgicon.dll 47KB
Convert.exe 105KB
libGLESV2.dll 4.3MB
Qt5SerialPort.dll 89KB
libEGL.dll 29KB
Qt5Svg.dll 362KB
imageformats
qwbmp.dll 30KB
qjpeg.dll 388KB
qtiff.dll 522KB
qtga.dll 31KB
qico.dll 40KB
qgif.dll 39KB
qicns.dll 49KB
qsvg.dll 32KB
qwebp.dll 450KB
platforms
qwindows.dll 1.89MB
libwinpthread-1.dll 46KB
libstdc++-6.dll 1.47MB
D3Dcompiler_47.dll 3.31MB
Qt5Core.dll 6.32MB
opengl32sw.dll 15.25MB
translations
qt_fi.qm 176KB
qt_fr.qm 162KB
qt_gd.qm 185KB
qt_ru.qm 184KB
qt_ko.qm 130KB
qt_ca.qm 180KB
qt_pl.qm 161KB
qt_de.qm 199KB
qt_bg.qm 161KB
qt_uk.qm 157KB
qt_en.qm 23B
qt_lv.qm 150KB
qt_hu.qm 157KB
qt_sk.qm 123KB
qt_cs.qm 171KB
qt_ja.qm 129KB
qt_da.qm 170KB
qt_zh_TW.qm 115KB
qt_ar.qm 156KB
qt_he.qm 135KB
qt_es.qm 164KB
qt_it.qm 157KB
styles
qwindowsvistastyle.dll 196KB
libgcc_s_dw2-1.dll 111KB
Qt5Widgets.dll 6.05MB
Qt5Gui.dll 6.63MB
Code
Convert
setpara.h 429B
Convert.pro 1KB
Convert.pro.user 24KB
setpara.ui 13KB
setpara.cpp 5KB
ICON.rc 36B
main.cpp 183B
mainwindow.ui 5KB
mainwindow.cpp 9KB
mainwindow.h 1KB
B.ico 9KB
ICO
ICON.rc 36B
ICO.qrc 128B
B.ico 9KB
B.png 12KB
共 62 条
- 1
bxd1234
- 粉丝: 4
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页