以下是一個使用Qt進行RS232通訊的具體示例,包括讀取和寫入數據的操作:
#include <QCoreApplication>
#include <QDebug>
#include <QSerialPort>
#include <QTimer>QSerialPort serial; // 串口對象void readData() {QByteArray data = serial.readAll();qDebug() << "接收到數據:" << data;
}void writeData() {QByteArray sendData = "Hello, RS232!";serial.write(sendData);qDebug() << "發送數據:" << sendData;
}int main(int argc, char *argv[]) {QCoreApplication app(argc, argv);// 設置串口名稱和波特率serial.setPortName("COM1");serial.setBaudRate(QSerialPort::Baud9600);// 打開串口if (!serial.open(QIODevice::ReadWrite)) {qDebug() << "無法打開串口" << serial.portName();return 1;}// 讀取串口數據QObject::connect(&serial, &QSerialPort::readyRead, readData);// 定時發送數據QTimer timer;QObject::connect(&timer, &QTimer::timeout, writeData);timer.start(1000); // 1秒鐘發送一次數據return app.exec();
}
在這個示例中,我們定義了一個全局的QSerialPort
對象serial
用于串口通訊。首先設置串口名稱和波特率,并打開串口。通過連接readyRead
信號到readData
槽函數來讀取串口數據。readData
函數讀取串口數據并輸出到調試信息中。
另外,我們使用QTimer
定時器來定時發送數據。我們將timeout
信號連接到writeData
槽函數,writeData
函數中實現了向串口寫入數據的操作。在這個例子中,每隔1秒鐘,我們將字符串"Hello, RS232!"發送到串口上。
在使用此示例代碼之前,請確保正確設置串口名稱和波特率,并且將其與實際的RS232設備匹配