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,得到的串口号将会显示在控件中,如下所示
定义串口参数与打开串口
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(){
}
第一种方法
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发送出去