示例#1
0
unsigned simple_thread::entry()
{
	try
	{
		threadProc();
	}
	catch (...)
	{
	}
	return 0;
}
示例#2
0
bool irtiny::CIRDriver::initPort()
{
    buffer_.clear();

    if (thread_.joinable())
    {
        finishEvent_.setEvent();
        thread_.join();
    }

    Settings settings;
    settings.load();

    SerialPort serialPort = SerialPort(settings.port());
    if (!serialPort)
        return false;

    DCB dcb = { 0 };

    // The device is powered by RTS
    // and running at fixed baud rate.

    dcb.DCBlength = sizeof(dcb);
    dcb.BaudRate = CBR_115200;
    dcb.fBinary = TRUE;
    dcb.fRtsControl = RTS_CONTROL_ENABLE;
    dcb.ByteSize = 8;
    dcb.Parity = NOPARITY;
    dcb.StopBits = ONESTOPBIT;

    if (!SetCommState(serialPort.get(), &dcb))
        return false;

    PurgeComm(serialPort.get(), PURGE_RXABORT | PURGE_RXCLEAR);
    ClearCommError(serialPort.get(), nullptr, nullptr);

    serialPort_ = std::move(serialPort);
    thread_ = std::thread([=]() { threadProc(); });

    return true;
}