Qt有自带的串口通信类QSerialPort:
提供访问串口的功能。您可以使用QSeralPortinfo助手类获得关于可用串行端口的信息,该帮助程序允许枚举系统中的所有端口。有助于获得您想要使用的串行端口的正确名称。您可以将助手类的对象作为参数传递给setPort()或setPortName()方法,以分配所需的串行设备。
在设置端口之后,您可以使用open()方法以只读(r/o)、只写(w/o)或读写(r/w)模式打开它。注意:串行端口总是以独占访问的方式打开(也就是说,没有其他进程或线程可以访问已经打开的串行端口)使用close()方法关闭端口并取消I/0操作。
在工程文件中添加
QT += serialport
在头文件中添加
#include //Qt串口功能接口类
#include //提供设备现有串行端口的信息
//检测系统现有串口,显示到comboBox控件
foreach (const QSerialPortInfo &qspinfo, QSerialPortInfo::availablePorts())
{
ui->portComboBox->addItem(qspinfo.portName());
}
先声明并初始化一个串口类
QSerialPotr myPort;
myPort = new QSerialPort;
设置串口配置并打开串口
myPort->setPortName(PortName);
myPort->setBaudRate(QSerialPort::Baud19200); //设置波特率
myPort->setParity(QSerialPort::NoParity); //设置校验位
myPort->setDataBits(QSerialPort::Data8); //设置数据位
myPort->setStopBits(QSerialPort::OneStop); //设置停止位
myPort->open(QIODevice::ReadWrite);
if(myPort->isOpen())
qDebug()<<"串口打开成功";
发送数据
QString str = "需要发送的字符数据";
QByteArray array = str.toLocal8Bit();
myPort->write(array);
接收数据
//先建立信号槽
connect(this,SIGNAL(readyRead()),this,receiveDate()));
//接收函数
void MainWindow::receiveDate()
{
QString str = myPort->readAll();
//然后把接收到的信息自定义处理就ok了
}
关闭串口
myPort->close();
如有不到之处,请联系我指正,诚恳求教!