QT 串口通信 QSerialPort

  • 概念

在常见的通信方式中,少不了串口通信,在应用层,QT为我们提供了专门应用于串口通信的接口; QSerialPort和QSerialPortInfo。

 

QSerialPort类提供了操作串口的各种接口;

QSerialPortInfo是一个辅助类,主要提供了计算机中可用串口的各种信息;

 

  • 使用方法

         1、首先我们再使用串口之前,先在QT的工程文件(.pro)中增加如下内容:

QT += serialport

         2、在使用串口时,我们需要获取当前设备所拥有的串口号,以及对它进行一系列的初始化操作:

            (1)获取串口信息:

		 foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())  
	    {  
	        qDebug() << "Name : " << info.portName();  //串口名,会随着每次插入串口的不同,串口名也会有所变化
	        qDebug() << "Description : " << info.description();  
	        qDebug() << "Manufacturer: " << info.manufacturer();  
	        qDebug() << "Serial Number: " << info.serialNumber();  //这是串口编号,能唯一确定是哪个设备;
	        qDebug() << "System Location: " << info.systemLocation();  
	  }  

                 我们要确定打开某个设备串口时,通常情况下是根据PortName确定的,但是有时候我们设备插入时串口名会有所变化,因为此时利用串口编号(serialNumber),这个号码一般来说是唯一的

 

             (2)打开进行初始化设置串口:

if(m_serialDriver->open(QIODevice::ReadWrite))
    {
        m_serialDriver->setBaudRate(QSerialPort::Baud9600, QSerialPort::AllDirections);//设置波特率
        m_serialDriver->setDataBits(QSerialPort::Data8);//设置数据函数
        m_serialDriver->setParity(QSerialPort:: NoParity);//设置奇偶校验
        m_serialDriver->setStopBits(QSerialPort::OneStop);// 设置停止位的函数
        m_serialDriver–>setFlowControl(QSerialPort::NoFlowControl); //设置控制流模式的函数,此属性保持所需的流控制模式
    }

         3、判读串口是否打开,以及关闭串口

m_serialDriver->isOpen();//判读串口是否打开,打开为true,关闭为false
m_serialDriver->close();//关闭串口

         4、接收和发送数据

           (1)接收

	connect(m_serialDriver, SIGNAL(readyRead()), this, SLOT(recvSerialData()) );//绑定接收槽函数,当串口收到数据会触发进入接收函数

.....


void recvSerialData()
{
    QByteArray data = m_serialDriver->readAll();//读取串口数据
int recvSize = data.size();
}

 

           (2)发送数据

QByteArray sendArr;//该数据为要发送的数据;
m_serialDriver->write(sendArr.data(),sendArr.size());

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值