> 文章列表 > QT串口通信上位机设置

QT串口通信上位机设置

QT串口通信上位机设置

串口设置

pro文件里添加

QT += core gui serialport

.h文件中添加

#include <QtSerialPort/QSerialPort>
#include <QSerialPortInfo>//public:中添加QSerialPort *M ;//串口指针

cpp文件中添加

    QStringList serialNamePort;M = new QSerialPort(this);foreach(const QSerialPortInfo &info ,QSerialPortInfo::availablePorts()){serialNamePort<<info.portName();}ui->Cboxport->addItems(serialNamePort);//Cboxport为设置的QComboBox,得到的串口号将会显示在控件

Cboxport为设置的QComboBox,得到的串口号将会显示在控件中,如下所示
QT串口通信上位机设置

定义串口参数与打开串口

    M->setPortName(ui->Cboxport->currentText());   //控件中目前显示的串口名称M->setBaudRate(QSerialPort::Baud9600);         //波特率 9600M->setDataBits(QSerialPort::Data8);            //数据位 8位M->setParity(QSerialPort::NoParity);           //校验位 无校验M->setStopBits(QSerialPort::OneStop);          //停止位 1位M->setFlowControl(QSerialPort::NoFlowControl); //无流控if(M->open(QIODevice::ReadWrite)==true){QMessageBox::information(this,"提示","成功");}else{QMessageBox::critical(this,"提示","失败");}

定时器

头文件

#include <Qtimer>
#include <Qtime>
public:QTimer timer;QTime time;

开启定时器

timer.start(50);  //单位毫秒,开始定时timer.stop();			//停止定时

中断函数设置

connect(&timer,SIGNAL(timeout()),this,SLOT(timeout_slot()));
//每过50ms,timeout()触发一次,通过connect链接到中断函数中 
void Widget::timeout_slot(){}

发射16进制数据

第一种方法

	char *data = new char [2];data[1] = '\\0';data[0] = static_cast<char>(0xaa);//将16进制数据转化为字符,再将数据发送出去M->write(data);

缺点:无法发送0x00

第二种方法

QByteArray senddata;
senddata.resize(3);//定义数组大小
senddata[0] = static_cast<char>(0xAA);
senddata[1] = static_cast<char>(0x12);
senddata[2] = static_cast<char>(0x00);
M->write(senddata);

可以将数据0x00发送出去