QT creator实现串口通信操作方法
虚拟串口软件模拟了两个串口,并且互相连通的,就是从com7发送的数据,com8可用接收,反过来也一样。 软件使用com7,串口调试工具使用com8,就可以测试软件的运行情况
安装虚拟串口软件:
虚拟串口软件vspd - txwtech - 博客园虚拟串口软件vspd http://www.winwin7.com/soft/25710.htmlhttps://www.cnblogs.com/txwtech/p/16530492.html
pro文件添加:
QT+=serialport
构造函数里面初始化端口:
MainWindow_Serial_Port::MainWindow_Serial_Port(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow_Serial_Port)
{
ui->setupUi(this);
ui->comboBox_Port->addItem("COM7");
ui->comboBox_Port->addItem("COM8");
q_serial_port=new QSerialPort();
}
打开串口
q_serial_port->setPortName(ui->comboBox_Port->currentText());
//打开串口
if(!q_serial_port->isOpen())
{
if(!q_serial_port->open(QIODevice::ReadWrite))
{
QMessageBox::information(this,"error","串口打开失败");
return;
}
else
{
AddLogInfo("打开串口成功");
}
}
else
{
AddLogInfo("串口已经打开");
}
串口的配置
q_serial_port->setBaudRate(int_BaudRate);
// q_serial_port->setBaudRate(QSerialPort::Baud9600);
//设置数据位数(8位)
q_serial_port->setDataBits(QSerialPort::Data8);
//设置奇偶校验(没有)
q_serial_port->setParity(QSerialPort::NoParity);
//设置停止位 (1)
q_serial_port->setStopBits(QSerialPort::OneStop);
//设置流控制(没有)
q_serial_port->setFlowControl(QSerialPort::NoFlowControl);
//绑定读数据slot
QObject::connect(q_serial_port, SIGNAL(readyRead()), this, SLOT(ready_read_data()));
发送数据:
void MainWindow_Serial_Port::on_pushButton_send_data_clicked()
{
if(q_serial_port->isOpen())
{
ready_write_data(ui->lineEdit_send_data->text());
AddLogInfo("发送:"+ui->lineEdit_send_data->text());
}
else
{
// ui->textEdit_recv_data->append("串口没有打开");
AddLogInfo("串口没有打开");
}
}
接收数据:
//读取串口信息
void MainWindow_Serial_Port::ready_read_data()
{
quint8 i=0;
quint8 arrDLT645Frame[12] = {0x68, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x68, 0x13, 0x00, 0xDF, 0x16};
QByteArray baDLT645Frame;
for (; iDispBTextEdit->setText(strDLT645Framer);
QByteArray data;
data = q_serial_port->readAll();
// std::string string_data = data.toStdString();
//std::string string_data = data.tolocal8();
// QString qarrayToStr = QString::fromStdString(string_data); //无法显示中文
QString qarrayToStr = QString::fromLocal8Bit(data);//可以显示中文
// QMessageBox::information(this,"接收信息", qarrayToStr);
//ui->textEdit_recv_data->append(qarrayToStr);
AddLogInfo("接收:"+qarrayToStr);
}
QByteArray data;
QString qarrayToStr = QString::fromLocal8Bit(data);//可以显示中文,字节转字符串
QString write_content=""; QByteArray send_data=write_content.toLocal8Bit(); //字符串转换中文显示,字符串转字节
工程源码更新:
Serial_Port_Demo_QT实现串口通信.rar-QT文档类资源-CSDN下载https://txwtech.blog.csdn.net/article/details/1260更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/txwtech/86265509