unsigned simple_thread::entry() { try { threadProc(); } catch (...) { } return 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; }