使用QT串口类serialport笔记

磕磕绊绊把Ubuntu18.04+QT+serialport 给理顺了,该笔记只是用来记录自己在使用以上工具时遇到的问题和解决办法,省的日后遇到一样的问题,不至于找不到答案。
1.安装Ubuntu18.04过程不累述,18.04比16.04好的地方很多,比如会主动根据自己位置换源,换源后的Ubuntu下载速度可以提升好几个层次。
2.在QT下载镜像站下载qt的安装包,linux版和WIN版的都有,放在U盘里面,直接插入后安装
3.如果是新装的Ubuntu18.04,那起码做以下几件事:
①.安装g++,sudo apt+get install g++ 就成
②.配置QT环境变量,能让QT找到qmake,
(我使用的方法,是进入 /etc//profile文件,然后加入:
export QTDIR=/opt/qtsdk-xxxx/qt 这个路径根据自己安装的位置进行配置
export LD_LIBRARY_PATH= $ LD_LIBRARY_PATH: $ QTDIR/lib
export PATH= $ PATH: $ QTDIR/bin

③.配置GDI,网上都是资料,下载一个安装包就成了
④.可能还要下载make,反正找个安装包下载

4.在完成基本的QT配置后就能正常使用QT了,现在开始配置serialport相关
①想使用serialport,除了引入serialport相关的类,还必须在pro文件中,引入QT += serialport
(pro文件类似于一个给qmake看的使用文档,把这个程序需要的库文件,包含目录或者预处理的信息都写进去了)
②想正常使用Ubuntu的串口,需要给与操控串口的权限,否则无法打开串口
输入sudo usermod -a -G dialout user_name 后重启电脑即可
5.使用serialport类,主要需要的是open,close,各种配置函数,write和readall函数
①open(QIODevice::ReadWrite)就成了,close无参数,但是使用前最好使用一次clead函数清理下
②配置函数,基本是一堆枚举,但是坑爹的是,枚举类内置了value,比如baud115200的枚举数就是115200,需要注意
例程:
#include

	QSerialPort *m_serialPort = new QSerialPort();//实例化串口类一个对象

	if(m_serialPort->isOpen())//如果串口已经打开了 先给他关闭了
	{
		m_serialPort->clear();
		m_serialPort->close();
	}

//设置串口名字 假设我们上面已经成功获取到了 并且使用第一个
m_serialPort->setPortName(m_serialPortName[0]);

if(!m_serialPort->open(QIODevice::ReadWrite))//用ReadWrite 的模式尝试打开串口
{
		qDebug()<

//打开成功

m_serialPort->setBaudRate(QSerialPort::Baud115200,QSerialPort::AllDirections);//设置波特率和读写方向
m_serialPort->setDataBits(QSerialPort::Data8);		//数据位为8位
m_serialPort->setFlowControl(QSerialPort::NoFlowControl);//无流控制
m_serialPort->setParity(QSerialPort::NoParity);	//无校验位
m_serialPort->setStopBits(QSerialPort::OneStop); //一位停止位

//连接信号槽 当下位机发送数据QSerialPortInfo 会发送个 readyRead 信号,我们定义个槽void receiveInfo()解析数据
connect(m_serialPort,SIGNAL(readyRead()),this,SLOT(receiveInfo()));


③可以引用QSerialPortInfo 类检索设备上的串口,获得串口名后,可以开启对应的串口
例程:
QStringList m_serialPortName;
	foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
	{
		m_serialPortName << info.portName();
		qDebug()<<"serialPortName:"<

你可能感兴趣的:(使用QT串口类serialport笔记)