summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2011-12-29 00:17:53 +0000
committercliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2011-12-29 00:17:53 +0000
commit1d068e3d79b443c063c5d0af6d984f8bc90bc49b (patch)
tree9515e3e5641f033411d7c7729b4ebd0f5c9027ad
parent8252ce2a8a2de245eab529d6cc7f9904bb10b2a6 (diff)
downloadpyserial-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.txt6
-rw-r--r--serial/serialwin32.py27
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()