2016-01-14 40 views
0

我正在使用Qt 5,當我打開一個串行端口打開成功,但立即收到錯誤信號。我打開的端口是這樣的:QSerialPort錯誤信號打開,但打開返回true

m_serial->setPortName(m_deviceName); 
m_serial->setBaudRate(QSerialPort::Baud9600); 
m_serial->setDataBits(QSerialPort::Data8); 
m_serial->setParity(QSerialPort::NoParity); 
m_serial->setStopBits(QSerialPort::OneStop); 
m_serial->setFlowControl(QSerialPort::NoFlowControl); 
if (m_serial->open(QIODevice::ReadWrite)) { 
    qDebug() << "Opened port"; 
} else { 
    qDebug() << "Port error on open:" << m_serial->errorString(); 
    return; 
} 

和開放的作品(說「打開端口」),但錯誤的Slot立即報告:

錯誤編號:0,味精:「沒有這樣的文件或目錄「

爲什麼這個錯誤被觸發?開放後,我可以寫&讀的是端口沒有錯誤(不知道數據是流動的,只是沒有錯誤)

回答

0

QSerialPort錯誤枚舉說,0其實是沒有發生錯誤,信號很可能被解僱時的端口打開以確認沒有錯誤。 QSerialPort錯誤的列表在這裏:http://doc.qt.io/qt-5/qserialport.html#SerialPortError-enum

+0

我同意 - 我只是不明白爲什麼設計明智。由於端口打開函數返回true,爲什麼發出一個信號呢? (除非我錯過了一些東西) – TSG

+0

這似乎是一個奇怪的決定,但我認爲他們已經在連接生命週期的所有階段發佈錯誤,並希望保證他們會得到一些回退。 –