Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}