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 KMTronicSerial::OpenSerialDevice() { //Try to open the Serial Port try { _log.Log(LOG_STATUS, "KMTronic: 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::none), boost::asio::serial_port_base::character_size(8) ); #else open( m_szSerialPort, m_iBaudRate, boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::none), boost::asio::serial_port_base::character_size(8) ); #endif } catch (boost::exception & e) { _log.Log(LOG_ERROR, "KMTronic: Error opening serial port!"); #ifdef _DEBUG _log.Log(LOG_ERROR, "-----------------\n%s\n-----------------", boost::diagnostic_information(e).c_str()); #else (void)e; #endif return false; } catch (...) { _log.Log(LOG_ERROR, "KMTronic: Error opening serial port!!!"); return false; } m_bIsStarted = true; m_bufferpos = 0; setReadCallback(boost::bind(&KMTronicSerial::readCallback, this, _1, _2)); sOnConnected(this); return true; }
bool MySensorsSerial::OpenSerialDevice() { #ifndef DEBUG_MYSENSORS //Try to open the Serial Port try { _log.Log(LOG_STATUS, "MySensors: 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::none), boost::asio::serial_port_base::character_size(8) ); #else open( m_szSerialPort, m_iBaudRate, boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::none), boost::asio::serial_port_base::character_size(8) ); #endif } catch (boost::exception & e) { _log.Log(LOG_ERROR, "MySensors: Error opening serial port!"); #ifdef _DEBUG _log.Log(LOG_ERROR, "-----------------\n%s\n-----------------", boost::diagnostic_information(e).c_str()); #else (void)e; #endif return false; } catch (...) { _log.Log(LOG_ERROR, "MySensors: Error opening serial port!!!"); return false; } #else std::ifstream infile; std::string sLine; //infile.open("D:\\MySensors.txt"); infile.open("D:\\log-gw.txt"); if (!infile.is_open()) return false; while (!infile.eof()) { getline(infile, sLine); std::vector<std::string> results; StringSplit(sLine, ";", results); if (results.size() != 6) { StringSplit(sLine, " ", results); if (results.size() >= 7) { //std::string orgstr = sLine; sLine = ""; sLine += results[2] + ";"; sLine += results[3] + ";"; sLine += results[4] + ";"; sLine += results[5] + ";"; sLine += results[6] + ";"; //Add the rest for (size_t ii = 7; ii < results.size(); ii++) { sLine += results[ii]; if (ii != results.size() - 1) sLine += " "; } StringSplit(sLine, ";", results); } } if (results.size() != 6) continue; sLine += "\n"; ParseData((const unsigned char*)sLine.c_str(), sLine.size()); } infile.close(); #endif m_bIsStarted = true; m_bufferpos = 0; setReadCallback(boost::bind(&MySensorsSerial::readCallback, this, _1, _2)); sOnConnected(this); return true; }