#include "main.h"
#include "ui_qtserial.h"
#include <QDebug>
#include <QtSerialPort>
#include <QList>
QtSerial::QtSerial(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::QtSerial)
{
ui->setupUi(this);
//刷新定义的按钮状态
mIsOpen = false;
mIsOpenDtu = false;
ui->BtWeight->setEnabled(mIsOpen);
ui->BtSend->setEnabled(mIsOpen);
ui->BtSetZeroRecv->setEnabled(mIsOpen);
ui->BtSetZeroSend->setEnabled(mIsOpen);
//识别当前系统有效串口号
QList<QSerialPortInfo> serialPortInfo = QSerialPortInfo::availablePorts();//查看系统有哪些可用的UART
//QList<qint32> standardBaudRates();
if(serialPortInfo.isEmpty())
{
qDebug() << "当前没有可用串口";
ui->cBoxName->addItem("无串口");
}
else
{
int count = serialPortInfo.count();
for (int i=0; i < count; i++)
{
//qDebug() << serialPortInfo.size();//打印串口数量
qDebug() << serialPortInfo.at(i).portName();//打印串口名字
qDebug() << serialPortInfo.at(i).description();//打印串口描述
ui->cBoxName->addItem(serialPortInfo.at(i).portName());//把识别的串口加到cBoxName中
ui->cBoxDtu->addItem(serialPortInfo.at(i).portName());//把识别的串口加到cBoxDtu中
// if(mSerialDtu.open(QIODevice::ReadWrite))
// {
// ui->cBoxDtu->addItem(serialPortInfo.at(i).portName());//把识别的串口加到cBoxDtu中
// mSerialDtu.close();
// }
}
}
//窗口大小
this->resize(800,450);
qDebug() << "==============================";
initDtuPort();
ConnectShow();
}
QtSerial::~QtSerial()
{
delete ui;
}
void QtSerial::ConnectShow()
{
//连接串口信号和显示数据的槽函数
connect(&mSerialPort, SIGNAL(readyRead()), this, SLOT(on_BtWeight_clicked()));
// connect(&mSerialPort, &QSerialPort::readyRead, this, &QtSerial::on_SerialPort_readyRead);
// connect(&mSerialDtu, &QSerialPort::readyRead, this, &QtSerial::dtuSendData);
}
//串口初始化配置函数
bool QtSerial::getSerialPortConfig()
{
qDebug() << "getSerialPortConfig" ;
//获取串口配置
mPortName = ui->cBoxName->currentText();
mBaudRate = ui->cBoxBaudRate->currentText();
mParity = ui->cBoxParity->currentText();
mDateBits = ui->cBoxDateBits->currentText();
mStopBits = ui->cBoxStopBits->currentText();
//设置串口
mSerialPort.setPortName(mPortName); //端口号
if("9600" == mBaudRate)
{
mSerialPort.setBaudRate(QSerialPort::Baud9600);
}
else
{
mSerialPort.setBaudRate(QSerialPort::Baud115200);
}
//校验位
if("Even" == mParity)
{
mSerialPort.setParity(QSerialPort::EvenParity);
}
else if("odd" == mParity)
{
mSerialPort.setParity(QSerialPort::OddParity);
}
else
{
mSerialPort.setParity(QSerialPort::NoParity);
}
//数据位
if("5" == mDateBits)
{
mSerialPort.setDataBits(QSerialPort::Data5);
}
else if("6" == mDateBits)
{
mSerialPort.setDataBits(QSerialPort::Data6);
}
else if("7" == mDateBits)
{
mSerialPort.setDataBits(QSerialPort::Data7);
}
else
{
mSerialPort.setDataBits(QSerialPort::Data8);
}
//停止位
if("1.5" == mStopBits)
{
mSerialPort.setStopBits(QSerialPort::OneAndHalfStop);
}
else if("2" == mStopBits)
{
mSerialPort.setStopBits(QSerialPort::TwoStop);
}
else
{
mSerialPort.setStopBits(QSerialPort::OneStop);
}
return mSerialPort.open(QSerialPort::ReadWrite);
}
//
void QtSerial::initDtuPort()
{
qDebug() << "initDtuPort";
//获取串口配置
mPortNameDtu = ui->cBoxDtu->currentText();
mBaudRateDtu = ui->cBoxDBDtu->currentText();
mParityDtu = ui->cBoxParityDtu->currentText();
mDateBitsDtu = ui->cBoxBRdtu->currentText();
mStopBitsDtu = ui->cBoxSBDtu->currentText();
//设置串口
mSerialDtu.setPortName(mPortNameDtu); //端口号
if("9600" == mBaudRateDtu)
{
mSerialDtu.setBaudRate(QSerialPort::Baud9600);
}
else
{
mSerialDtu.setBaudRate(QSerialPort::Baud115200);
}
//校验位
if("Even" == mParityDtu)
{
mSerialDtu.setParity(QSerialPort::EvenParity);
}
else if("odd" == mParityDtu)
{
mSerialDtu.setParity(QSerialPort::OddParity);
}
else
{
mSerialDtu.setParity(QSerialPort::NoParity);
}
//数据位
if("5" == mDateBitsDtu)
{
mSerialDtu.setDataBits(QSerialPort::Data5);
}
else if("6" == mDateBitsDtu)
{
mSerialDtu.setDataBits(QSerialPort::Data6);
}
else if("7" == mDateBitsDtu)
{
mSerialDtu.setDataBits(QSerialPort::Data7);
}
else
{
mSerialDtu.setDataBits(QSerialPort::Data8);
}
//停止位
if("1.5" == mStopBitsDtu)
{
mSerialDtu.setStopBits(QSerialPort::OneAndHalfStop);
}
else if("2" == mStopBitsDtu)
{
mSerialDtu.setStopBits(QSerialPort::TwoStop);
}
else
{
mSerialDtu.setStopBits(QSerialPort::OneStop);
}
}
void QtSerial::on_BtOpenDtu_clicked()
{
qDebug() << "on_BtOpenDtu_clicked" ;
//判断当前串口是否已经打开了,打开的话执行关闭动作
if(true == mIsOpenDtu)
{
mSerialDtu.close();
ui->BtOpenDtu->setText("打开");
mIsOpenDtu = false;
//其它选项进行禁止选项操作
//其它选项进行打开选项操作
ui->cBoxDtu->setEnabled(true);
ui->cBoxParityDtu->setEnabled(true);
ui->cBoxBRdtu->setEnabled(true);
ui->cBoxDBDtu->setEnabled(true);
ui->cBoxSBDtu->setEnabled(true);
}
else
{
//当前没有串口是打开的,进行打开操作
if(true == mSerialDtu.open(QSerialPort::ReadWrite))
{
mIsOpenDtu = true;
ui->BtOpenDtu->setText("关闭");
qDebug() << "DTU串口打开成功" ;
//其它选项进行打开选项操作
//其它选项进行禁止选项操作
ui->cBoxDtu->setEnabled(false);
ui->cBoxParityDtu->setEnabled(false);
ui->cBoxBRdtu->setEnabled(false);
ui->cBoxDBDtu->setEnabled(false);
ui->cBoxSBDtu->setEnabled(false);
// while (!mSerialDtu.atEnd())
// {
// }
int flg = mSerialDtu.write(senData.toUtf8());
qDebug() << "flg = " << flg;
// mSerialDtu.writeData(senData.toStdString().data(), senData.length());
qDebug() << "senData.toUtf8()" << senData.toUtf8();
// Delay_MSec(1000);
}
else
{
qDebug() << "DTU串口打开失败" ;
}
}
//ui->BtOpenDtu->setEnabled(mIsOpenDtu);
}
//void QtSerial::dtuSendData(QString sData)
//{
// if(mIsOpenDtu == true)
// {
// mSerialDtu.write(sData);
// qDebug() << "mSerialDtu.write(senData)" << sData;
// }
//}
void QtSerial::on_BtOpen_clicked()
{
qDebug() << "on_btOpen_clicked" ;
//判断当前串口是否已经打开了,打开的话执行关闭动作
if(true == mIsOpen)
{
mSerialPort.close();
ui->BtOpen->setText("打开");
mIsOpen = false;
//其它选项进行禁止选项操作
ui->BtWeight->setEnabled(mIsOpen);
ui->BtSetZeroRecv->setEnabled(mIsOpen);
ui->BtSend->setEnabled(mIsOpen);
ui->BtSetZeroRecv->setEnabled(mIsOpen);
ui->BtSetZeroSend->setEnabled(mIsOpen);
//其它选项进行打开选项操作
ui->cBoxName->setEnabled(true);
ui->cBoxParity->setEnabled(true);
ui->cBoxBaudRate->setEnabled(true);
ui->cBoxDateBits->setEnabled(true);
ui->cBox
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。 深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。 深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。 深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。深度学习,神经网络学习资源,机器学习源码及案例,经典人工智能算法。
资源推荐
资源详情
资源评论
收起资源包目录
基础传统神经网络算法大杂烩.zip (11个子文件)
arithmetic-master
Qt5
Qserial
Qserial.pro.user 23KB
Qserial.pro 1KB
qtserial.cpp 12KB
Qserial.pro.user.46d3c5d.22 24KB
main.cpp 166B
rfid.cpp 847B
main.h 2KB
dtu.qrc 7B
Qserial.pro.user.8a52bdf.4.10-pre1 24KB
qtserial.ui 10KB
dtu.cpp 2KB
共 11 条
- 1
资源评论
白话机器学习
- 粉丝: 8910
- 资源: 7681
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功