diff options
Diffstat (limited to 'serial/serialwin32.py')
-rw-r--r-- | serial/serialwin32.py | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/serial/serialwin32.py b/serial/serialwin32.py index 9a62fa0..3802d4b 100644 --- a/serial/serialwin32.py +++ b/serial/serialwin32.py @@ -28,6 +28,10 @@ class Win32Serial(SerialBase): def __init__(self, *args, **kwargs): self.hComPort = None self._rtsToggle = False + + self._rtsState = win32.RTS_CONTROL_ENABLE + self._dtrState = win32.DTR_CONTROL_ENABLE + SerialBase.__init__(self, *args, **kwargs) def open(self): @@ -65,9 +69,6 @@ class Win32Serial(SerialBase): self._orgTimeouts = win32.COMMTIMEOUTS() win32.GetCommTimeouts(self.hComPort, ctypes.byref(self._orgTimeouts)) - self._rtsState = win32.RTS_CONTROL_ENABLE - self._dtrState = win32.DTR_CONTROL_ENABLE - self._reconfigurePort() # Clear buffers: @@ -302,23 +303,31 @@ class Win32Serial(SerialBase): def setRTS(self, level=1): """Set terminal status line: Request To Send""" - if not self.hComPort: raise portNotOpenError + # remember level for reconfigure if level: self._rtsState = win32.RTS_CONTROL_ENABLE - win32.EscapeCommFunction(self.hComPort, win32.SETRTS) else: self._rtsState = win32.RTS_CONTROL_DISABLE - win32.EscapeCommFunction(self.hComPort, win32.CLRRTS) + # also apply now if port is open + if self.hComPort: + if level: + win32.EscapeCommFunction(self.hComPort, win32.SETRTS) + else: + win32.EscapeCommFunction(self.hComPort, win32.CLRRTS) def setDTR(self, level=1): """Set terminal status line: Data Terminal Ready""" - if not self.hComPort: raise portNotOpenError + # remember level for reconfigure if level: self._dtrState = win32.DTR_CONTROL_ENABLE - win32.EscapeCommFunction(self.hComPort, win32.SETDTR) else: self._dtrState = win32.DTR_CONTROL_DISABLE - win32.EscapeCommFunction(self.hComPort, win32.CLRDTR) + # also apply now if port is open + if self.hComPort: + if level: + win32.EscapeCommFunction(self.hComPort, win32.SETDTR) + else: + win32.EscapeCommFunction(self.hComPort, win32.CLRDTR) def _GetCommModemStatus(self): stat = win32.DWORD() |