bool S0MeterSerial::StartHardware() { StartHeartbeatThread(); //Try to open the Serial Port try { _log.Log(LOG_STATUS,"S0 Meter: Using serial port: %s", m_szSerialPort.c_str()); #ifndef WIN32 openOnlyBaud( m_szSerialPort, m_iBaudRate, boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::even), boost::asio::serial_port_base::character_size(7) ); #else open( m_szSerialPort, m_iBaudRate, boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::even), boost::asio::serial_port_base::character_size(7) ); #endif } catch (boost::exception & e) { _log.Log(LOG_ERROR,"S0 Meter: Error opening serial port!"); #ifdef _DEBUG _log.Log(LOG_ERROR,"-----------------\n%s\n-----------------",boost::diagnostic_information(e).c_str()); #endif return false; } catch ( ... ) { _log.Log(LOG_ERROR,"S0 Meter: Error opening serial port!!!"); return false; } m_bIsStarted=true; m_bufferpos=0; ReloadLastTotals(); setReadCallback(boost::bind(&S0MeterSerial::readCallback, this, _1, _2)); sOnConnected(this); #ifdef DEBUG_S0 int ii = 0; for (ii = 0; ii < TOT_DEBUG_LINES; ii++) { std::string dline = szDebugDataP2[ii]; ParseData((const unsigned char*)dline.c_str(), dline.size()); } #endif return true; }
bool S0MeterTCP::StartHardware() { m_stoprequested=false; m_bDoRestart=false; //force connect the next first time m_retrycntr= S0METER_RETRY_DELAY; m_bIsStarted=true; m_bufferpos = 0; ReloadLastTotals(); //Start worker thread m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&S0MeterTCP::Do_Work, this))); return (m_thread!=NULL); }