QT串口打开和读写

关于QT串口打开和读写的程序实现

1、串口打开
串口打开包括两个过程,一是串口查找,二是设置并打开串口。具体实现见如下代码

foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
	{
		qDebug() << "Name        : " << info.portName();
		qDebug() << "Description : " << info.description()
		
       //将读取到的串口显示到界面上
		if (ui.Com->currentText() != info.portName())
			ui.Com->addItem(info.portName());	
	}
	
	QSerialPort *serial;
//  设置并打开串口
	void first::UartOpen()
{
	//	serial->setPortName();    //设置串口名  
	serial.setPortName(ui.Com->currentText());	 //	选取串口  
	serial.open(QIODevice::ReadWrite);  	//打开串口  
	serial.setBaudRate(9600);   //设置波特率  
	serial.setDataBits(QSerialPort::Data8);  //设置数据位数  
	serial.setParity(QSerialPort::NoParity); 	//设置奇偶校验   
	serial.setStopBits(QSerialPort::OneStop);  	//设置停止位 
	serial.setFlowControl(QSerialPort::NoFlowControl);	//设置流控制  
}

检测当前连接的com口,用foreach(),设置并打开串口之后,为了检验串口是否被真正打开,可以使用 isOpen()来判断。

2、串口读写
串口读写的过程,主要用到两个函数write() 函数和 readAll() 函数

const QByteArray Send_temp;
QByteArray Read_buf;
serial->write(Send_temp);
Read_buf = serial->readAll();

3、问题发生和注意点
1)要包含头文件

#include "QtSerialPort\qserialport.h"
#include "QtSerialPort\qserialportinfo.h"

2)设置串口
如果有多个串口,在设置串口时注意选取正确的串口名。

3)读写问题
如果发生串口消息发送失败的现象:检查下发送的 形式是否正确?文本形式还是HEX格式:是否是定时发送?发送时间太短会造成堵塞,尽量先单步调试下;收发是否异步?读写堵塞会有问题

你可能感兴趣的:(个人学习记录)