uart的介绍请参考http://blog.csdn.net/jklinux/article/details/72124110
我们需要配置波特率,数据位,校验位,停止位, 硬件流控.
在QT里已封装成一个名为QSerialPort的类, 还有一个QSerialPortInfo类.
qmake: QT += serialport
用法:
QSerialPortInfo 类用于查看当前系统有哪些可用的uart接口,及可支持的波特率
QList<QSerialPortInfo> availablePorts()
QList<qint32> standardBaudRates()
代码:
QList<QSerialPortInfo> list;
list = QSerialPortInfo::availablePorts();
for (int i = 0; i < list.size(); i++)
{
qDebug() << list.at(i).portName() ;
qDebug() << list.at(i).description();
qDebug() << "#########";
}
编译执行后的输出:
"ttyUSB0"
"USB-Serial Controller"
#########
"ttyS0"
""
#########
即我的系统里有usb转uart的设备("/dev/ttyUSB0"),也有一个pc上本身的uart设备("/dev/ttyS0");
//
QSerialPort类用于操作uart设备.
1 创建对象
QSerialPort *port = new QSerialPort("/dev/ttyS0");
2 配置uart的波特率,数据位,校验位,停止位, 硬件流件
port->setBaudRate(QSerialPort::Baud115200);
port->setDataBits(QSerialPort::Data8);
port->setParity(QSerialPort::NoParity);
port->setStopBits(QSerialPort::OneStop);
port->setFlowControl(QSerialPort::NoFlowControl);
if (!port->open(QIODevice::ReadWrite))
qDebug() << "serial open failed";
3 uart设备打开后,就可以调用read, write收发数据. 当有数据需接收时会有信号readyRead.