diff options
author | cliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a> | 2011-12-29 00:17:53 +0000 |
---|---|---|
committer | cliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a> | 2011-12-29 00:17:53 +0000 |
commit | 1d068e3d79b443c063c5d0af6d984f8bc90bc49b (patch) | |
tree | 9515e3e5641f033411d7c7729b4ebd0f5c9027ad | |
parent | 8252ce2a8a2de245eab529d6cc7f9904bb10b2a6 (diff) | |
download | pyserial-1d068e3d79b443c063c5d0af6d984f8bc90bc49b.tar.gz |
allow setRTS, setDTR before opening on Win32 (to set initial state), doc update
git-svn-id: http://svn.code.sf.net/p/pyserial/code/trunk/pyserial@445 f19166aa-fa4f-0410-85c2-fa1106f25c8a
-rw-r--r-- | CHANGES.txt | 6 | ||||
-rw-r--r-- | serial/serialwin32.py | 27 |
2 files changed, 23 insertions, 10 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index cbce157..92995cb 100644 --- a/CHANGES.txt +++ b/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/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() |