From 2143e8d4751e522bc32ebcf4cecf249949325c28 Mon Sep 17 00:00:00 2001 From: William Woodall Date: Tue, 30 Jul 2013 14:08:06 -0700 Subject: [PATCH] Apply the timeout settings with reconfigurePort --- src/impl/win.cc | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/impl/win.cc b/src/impl/win.cc index acf281a..bc09cef 100644 --- a/src/impl/win.cc +++ b/src/impl/win.cc @@ -240,6 +240,17 @@ Serial::SerialImpl::reconfigurePort () if(!SetCommState(fd_, &dcbSerialParams)){ 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 @@ -312,14 +323,8 @@ void Serial::SerialImpl::setTimeout (serial::Timeout &timeout) { timeout_ = timeout; - 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."); + if (is_open_) { + reconfigurePort (); } }