std::string CAsciiBufferLogger::msgToString(const CByteBuffer& data) const { std::ostringstream ss; for (size_t idx = 0 ; idx < data.size() ; ++ idx) { char c = data[idx]; switch(c) { case 0x00 : ss << "<nul>"; break; case 0x01 : ss << "<soh>"; break; case 0x02 : ss << "<stx>"; break; case 0x03 : ss << "<etx>"; break; case 0x04 : ss << "<eot>"; break; case 0x05 : ss << "<enq>"; break; case 0x06 : ss << "<ack>"; break; case 0x07 : ss << "<bel>"; break; case 0x08 : ss << "<bs>"; break; case 0x09 : ss << "<tab>"; break; case 0x0A : ss << "<lf>"; break; case 0x0B : ss << "<vt>"; break; case 0x0C : ss << "<ff>"; break; case 0x0D : ss << "<cr>"; break; case 0x0E : ss << "<so>"; break; case 0x0F : ss << "<si>"; break; case 0x10 : ss << "<dle>"; break; case 0x11 : ss << "<dc1>"; break; case 0x12 : ss << "<dc2>"; break; case 0x13 : ss << "<dc3>"; break; case 0x14 : ss << "<dc4>"; break; case 0x15 : ss << "<nak>"; break; case 0x16 : ss << "<syn>"; break; case 0x17 : ss << "<etb>"; break; case 0x18 : ss << "<can>"; break; case 0x19 : ss << "<em>"; break; case 0x1A : ss << "<sub>"; break; case 0x1B : ss << "<esc>"; break; case 0x1C : ss << "<fs>"; break; case 0x1D : ss << "<gs>"; break; case 0x1E : ss << "<rs>"; break; case 0x1F : ss << "<us>"; break; case 0x7F : ss << "<del>"; break; default: ss << c; break; } } return ss.str(); }
void CAsyncSerialPort::send(const CByteBuffer& buffer) { try { m_boostSerialPort.write_some(boost::asio::const_buffers_1(buffer.begin(), buffer.size())); } catch (boost::system::system_error& e) { // boost::asio::error::eof is the normal stop if (e.code() != boost::asio::error::eof) { YADOMS_LOG(error) << "Serial port write error : " << e.what(); disconnect(); } notifyEventHandler(false); throw CPortException( (e.code() == boost::asio::error::eof) ? CPortException::kConnectionClosed : CPortException::kConnectionError, e.what()); } }