0
我有一個通過串行端口的雙向通信。如何正確處理通訊錯誤? QT SerialPort
MyClass::MyClass(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
//setUp
connect(serial, SIGNAL(error(QSerialPort::SerialPortError)), this,
SLOT(handleError(QSerialPort::SerialPortError)));
}
void MyClass::handleError(QSerialPort::SerialPortError error)
{
//show error
//close connection
}
void MyClass::send(QString data)
{
if(!data.endsWith('\r'))
data.append('\r');
//should be like this:
serial->write(data.toLocal8Bit());
serial->waitForBytesWritten(TIMEOUT);
//or this?
if(serial->write(data.toLocal8Bit()) < 0)
emit serial->error(QSerialPort::WriteError);
if(!serial->waitForBytesWritten(TIMEOUT))
emit serial->error(QSerialPort::TimeoutError);
}
void MyClass::receive(char &dest, int size)
{
//similar to send
}
也就是說,的HandleError會自動處理串行端口錯誤或我應該檢測&扔?
2種方法哪種更正確?或者沒有一個是正確的?