1
0
mirror of https://github.com/wjwwood/serial.git synced 2026-01-23 04:04:54 +08:00

Merge 2143e8d4751e522bc32ebcf4cecf249949325c28 into a0a586cf5b75e4ca39c5a49d229c9f4b46403d7f

This commit is contained in:
William Woodall 2013-07-30 14:10:41 -07:00
commit 0920ebb2e5

View File

@ -240,6 +240,17 @@ Serial::SerialImpl::reconfigurePort ()
if(!SetCommState(fd_, &dcbSerialParams)){ if(!SetCommState(fd_, &dcbSerialParams)){
THROW (IOException, "Error setting serial port settings."); THROW (IOException, "Error setting serial port settings.");
} }
// Setup timeouts
COMMTIMEOUTS timeouts = {0};
timeouts.ReadIntervalTimeout = timeout_.inter_byte_timeout;
timeouts.ReadTotalTimeoutConstant = timeout_.read_timeout_constant;
timeouts.ReadTotalTimeoutMultiplier = timeout_.read_timeout_multiplier;
timeouts.WriteTotalTimeoutConstant = timeout_.write_timeout_constant;
timeouts.WriteTotalTimeoutMultiplier = timeout_.write_timeout_multiplier;
if (!SetCommTimeouts(fd_, &timeouts)) {
THROW (IOException, "Error setting timeouts.");
}
} }
void void
@ -312,14 +323,8 @@ void
Serial::SerialImpl::setTimeout (serial::Timeout &timeout) Serial::SerialImpl::setTimeout (serial::Timeout &timeout)
{ {
timeout_ = timeout; timeout_ = timeout;
COMMTIMEOUTS timeouts = {0}; if (is_open_) {
timeouts.ReadIntervalTimeout = timeout_.inter_byte_timeout; reconfigurePort ();
timeouts.ReadTotalTimeoutConstant = timeout_.read_timeout_constant;
timeouts.ReadTotalTimeoutMultiplier = timeout_.read_timeout_multiplier;
timeouts.WriteTotalTimeoutConstant = timeout_.write_timeout_constant;
timeouts.WriteTotalTimeoutMultiplier = timeout_.write_timeout_multiplier;
if(!SetCommTimeouts(fd_, &timeouts)){
THROW (IOException, "Error setting timeouts.");
} }
} }