QT串口通信上位机设置

串口设置

pro文件里添加

QT += core gui serialport

.h文件中添加

#include 
#include 

//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串口通信上位机设置_第1张图片

定义串口参数与打开串口

    M->setPortName(ui->Cboxport->currentText());   //控件中目前显示的串口名称
    M->setBaudRate(QSerialPort::Baud9600);         //波特率 9600
    M->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 
#include 
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发送出去

你可能感兴趣的:(单片机,qt,c++)