2017-01-19 5 views
1

Ich benutze Boost Asio seriellen Port. Wenn eine serielle Schnittstelle geöffnet ist, kann ich eine Parität zum Beispiel festgelegt:Paritätsprüfung der seriellen Schnittstelle fehlgeschlagen in Boost Asio

boost::asio::serial_port_base::parity::even 

Dann beginne ich einen seriellen Anschluss lesen:

serialPort_.async_read_some(boost::asio::buffer(serialPortData_), 
boost::bind(&MySerialPort::readComplete, this, 
boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); 

Was passiert, wenn Paritätsprüfung nicht bestanden? Wird readComplete mit spezifischem Fehler (was?) Und bytes_transfered = 0 aufgerufen?

Antwort

2

Boost umschließt nur den Systemfehler in einer error_code Instanz.

So ist es, was auch immer Fehlercode der zugrunde liegenden syscalls (wie ::tcsendbreak) zurückgeben.

Bei einem Fehler bleiben die meisten asynchronen Operationen bytes_transferred unspezifiziert (sofern nicht anders angegeben).