diff options
-rw-r--r-- | pyserial/CHANGES.txt | 6 | ||||
-rw-r--r-- | pyserial/serial/serialwin32.py | 27 |
2 files changed, 23 insertions, 10 deletions
diff --git a/pyserial/CHANGES.txt b/pyserial/CHANGES.txt index cbce157..92995cb 100644 --- a/pyserial/CHANGES.txt +++ b/pyserial/CHANGES.txt @@ -436,11 +436,15 @@ Bugfixes (win32): Version 2.7 2012-nn-nn --------------------------- +- Win32: setRTS and setDTR can be called before the port is opened and it will + set the initial state on port open. +- Posix: add platform specific method: outWaiting (already pesent for Win32) +- Posix: rename flowControl to setXON to match name on Win32, add + flowControlOut function Bugfixes (posix): - [Patch 3462364] Fix: NameError: global name 'base' is not defined -- add platform specific method: outWaiting Bugfixes (win32): diff --git a/pyserial/serial/serialwin32.py b/pyserial/serial/serialwin32.py index 9a62fa0..3802d4b 100644 --- a/pyserial/serial/serialwin32.py +++ b/pyserial/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() |