bool CDavisLoggerSerial::OpenSerialDevice() { //Try to open the Serial Port try { open(m_szSerialPort,m_iBaudRate); _log.Log(LOG_STATUS,"Davis: Using serial port: %s", m_szSerialPort.c_str()); m_statecounter=0; m_state=DSTATE_WAKEUP; } catch (boost::exception & e) { _log.Log(LOG_ERROR,"Davis: 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,"Davis: Error opening serial port!!!"); return false; } m_bIsStarted=true; setReadCallback(boost::bind(&CDavisLoggerSerial::readCallback, this, _1, _2)); sOnConnected(this); return true; }
bool Teleinfo::StartHardware() { StartHeartbeatThread(); //Try to open the Serial Port try { _log.Log(LOG_STATUS, "Teleinfo: Using serial port: %s", m_szSerialPort.c_str()); open( m_szSerialPort, m_iBaudRate, m_iOptParity, m_iOptCsize ); } catch (boost::exception & e) { _log.Log(LOG_ERROR, "Teleinfo: 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, "Teleinfo: Error opening serial port!!!"); return false; } setReadCallback(boost::bind(&Teleinfo::readCallback, this, _1, _2)); m_bIsStarted = true; sOnConnected(this); return true; }
bool OTGWSerial::OpenSerialDevice() { //Try to open the Serial Port try { _log.Log(LOG_STATUS,"OTGW: Using serial port: %s", m_szSerialPort.c_str()); 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) ); } catch (boost::exception & e) { _log.Log(LOG_ERROR,"OTGW: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,"OTGW:Error opening serial port!!!"); return false; } m_bIsStarted=true; m_bufferpos=0; setReadCallback(boost::bind(&OTGWSerial::readCallback, this, _1, _2)); sOnConnected(this); m_bRequestVersion = true; return true; }
bool P1MeterSerial::StartHardware() { #ifdef DEBUG_FROM_FILE FILE *fIn=fopen("E:\\meter.txt","rb+"); BYTE buffer[1000]; int ret=fread((BYTE*)&buffer,1,sizeof(buffer),fIn); fclose(fIn); ParseData((const BYTE*)&buffer,ret); #endif m_stoprequested = false; m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&P1MeterSerial::Do_Work, this))); //Try to open the Serial Port try { _log.Log(LOG_STATUS,"P1 Smart Meter: Using serial port: %s", m_szSerialPort.c_str()); if (m_iBaudRate==9600) { 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) ); } else { //DSMRv4 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) ); } } catch (boost::exception & e) { _log.Log(LOG_ERROR,"P1 Smart Meter: 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,"P1 Smart Meter: Error opening serial port!!!"); return false; } m_bIsStarted=true; m_linecount=0; m_exclmarkfound=0; setReadCallback(boost::bind(&P1MeterSerial::readCallback, this, _1, _2)); sOnConnected(this); return true; }
bool CRFLink::OpenSerialDevice() { //Try to open the Serial Port try { open(m_szSerialPort, 57600); _log.Log(LOG_STATUS,"RFLink: Using serial port: %s", m_szSerialPort.c_str()); } catch (boost::exception & e) { _log.Log(LOG_ERROR,"RFLink: 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,"RFLink: Error opening serial port!!!"); return false; } m_bIsStarted=true; m_LastReceivedTime = mytime(NULL); setReadCallback(boost::bind(&CRFLink::readCallback, this, _1, _2)); sOnConnected(this); return true; }
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 Meteostick::OpenSerialDevice() { //Try to open the Serial Port try { _log.Log(LOG_STATUS, "Meteostick: Using serial port: %s", m_szSerialPort.c_str()); 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) ); } catch (boost::exception & e) { _log.Log(LOG_ERROR, "Meteostick: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, "Meteostick:Error opening serial port!!!"); return false; } m_state = MSTATE_INIT; m_bIsStarted = true; m_bufferpos = 0; int ii; for (ii = 0; ii < MAX_IDS; ii++) { m_LastOutsideTemp[ii] = 12345; m_LastOutsideHum[ii] = 0; m_ActRainCounter[ii] = -1; m_LastRainValue[ii] = -1; } setReadCallback(boost::bind(&Meteostick::readCallback, this, _1, _2)); sOnConnected(this); return true; }
bool CTeleinfoSerial::StartHardware() { StartHeartbeatThread(); //Try to open the Serial Port try { _log.Log(LOG_STATUS, "(%s) Teleinfo device uses serial port: %s at %i bauds", Name.c_str(), m_szSerialPort.c_str(), m_iBaudRate); open(m_szSerialPort, m_iBaudRate, m_iOptParity, m_iOptCsize); } catch (boost::exception & e) { #ifdef DEBUG_TeleinfoSerial _log.Log(LOG_ERROR, "-----------------\n%s\n-----------------", boost::diagnostic_information(e).c_str()); #else (void)e; #endif _log.Log(LOG_STATUS, "Teleinfo: Serial port open failed, let's retry with CharSize:8 ..."); try { open(m_szSerialPort,m_iBaudRate,m_iOptParity,boost::asio::serial_port_base::character_size(8)); _log.Log(LOG_STATUS, "Teleinfo: Serial port open successfully with CharSize:8 ..."); } catch (...) { _log.Log(LOG_ERROR, "Teleinfo: Error opening serial port, even with CharSize:8 !"); return false; } } catch (...) { _log.Log(LOG_ERROR, "Teleinfo: Error opening serial port!!!"); return false; } setReadCallback(boost::bind(&CTeleinfoSerial::readCallback, this, _1, _2)); m_bIsStarted = true; sOnConnected(this); teleinfo.CRCmode1 = 255; // Guess the CRC mode at first run if (m_bDisableCRC) _log.Log(LOG_STATUS, "(%s) CRC checks on incoming data are disabled", Name.c_str()); else _log.Log(LOG_STATUS, "(%s) CRC checks will be performed on incoming data", Name.c_str()); return true; }
bool CPluginTransportSerial::handleConnect() { try { if (!isOpen()) { m_bConnected = false; open(m_Port, m_Baud, boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::none), boost::asio::serial_port_base::character_size(8), boost::asio::serial_port_base::flow_control(boost::asio::serial_port_base::flow_control::none), boost::asio::serial_port_base::stop_bits(boost::asio::serial_port_base::stop_bits::one)); m_bConnected = isOpen(); ConnectedMessage* Message = NULL; if (m_bConnected) { Message = new ConnectedMessage(m_HwdID, 0, "SerialPort " + m_Port + " opened successfully."); setReadCallback(boost::bind(&CPluginTransportSerial::handleRead, this, _1, _2)); } else { Message = new ConnectedMessage(m_HwdID, -1, "SerialPort " + m_Port + " open failed, check log for details."); } boost::lock_guard<boost::mutex> l(PluginMutex); PluginMessageQueue.push(Message); } } catch (std::exception& e) { ConnectedMessage* Message = new ConnectedMessage(m_HwdID, -1, std::string(e.what())); boost::lock_guard<boost::mutex> l(PluginMutex); PluginMessageQueue.push(Message); return false; } return m_bConnected; }
bool CJabloDongle::OpenSerialDevice() { try { _log.Log(LOG_STATUS, "JabloDongle: Using serial port %s", m_szSerialPort.c_str()); open(m_szSerialPort, 57600); } catch (boost::exception & e) { _log.Log(LOG_ERROR, "JabloDongle: Error opening serial port!"); return false; } catch (...) { _log.Log(LOG_ERROR, "JabloDongle: Error opening serial port!!!"); return false; } m_bIsStarted = true; boost::this_thread::sleep(boost::posix_time::milliseconds(100)); setReadCallback(boost::bind(&CJabloDongle::ReadCallback, this, _1, _2)); sOnConnected(this); return true; }
bool CurrentCostMeterSerial::StartHardware() { m_stoprequested = false; m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&CurrentCostMeterSerial::Do_Work, this))); //Try to open the Serial Port try { _log.Log(LOG_STATUS,"CurrentCost Smart Meter: Using serial port: %s", m_szSerialPort.c_str()); open( m_szSerialPort, m_baudRate, boost::asio::serial_port_base::parity( boost::asio::serial_port_base::parity::none), boost::asio::serial_port_base::character_size(8) ); } catch (boost::exception & e) { _log.Log(LOG_ERROR,"CurrentCost Smart Meter: 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,"CurrentCost Smart Meter: Error opening serial port!!!"); return false; } m_bIsStarted=true; setReadCallback(boost::bind(&CurrentCostMeterSerial::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; }