summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2004-07-28 01:08:25 +0000
committercliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2004-07-28 01:08:25 +0000
commit7ffcfefb04d183fbf56879fbff42916bc64a9833 (patch)
treefd46370023c544aaa5e0db49aee5eaf8ede0ef32
parentaf3dfd59c12d667d73b753db1a82fbb8c87a0403 (diff)
downloadpyserial-git-7ffcfefb04d183fbf56879fbff42916bc64a9833.tar.gz
apply [Patch 983106]
-rw-r--r--pyserial/CHANGES.txt6
-rw-r--r--pyserial/serial/serialwin32.py13
2 files changed, 16 insertions, 3 deletions
diff --git a/pyserial/CHANGES.txt b/pyserial/CHANGES.txt
index d8b7211..7f93e64 100644
--- a/pyserial/CHANGES.txt
+++ b/pyserial/CHANGES.txt
@@ -150,3 +150,9 @@ Version 2.1 28 Jul 2004
New Features:
- Implement write timeouts ('writeTimeout' parameter)
+
+
+Version 2.2 XXXX
+ Bugfixes (win32):
+ - keep RTS/CTS state on port setting changes [Patch 983106]
+
diff --git a/pyserial/serial/serialwin32.py b/pyserial/serial/serialwin32.py
index 5a22efd..af94bd8 100644
--- a/pyserial/serial/serialwin32.py
+++ b/pyserial/serial/serialwin32.py
@@ -11,7 +11,7 @@ import win32event # We use events and the WaitFor[Single|Multiple]Objects functi
import win32con # constants.
from serialutil import *
-VERSION = "$Revision: 1.29 $".split()[1] #extract CVS version
+VERSION = "$Revision: 1.30 $".split()[1] #extract CVS version
#from winbase.h. these should realy be in win32con
MS_CTS_ON = 16
@@ -59,6 +59,9 @@ class Serial(SerialBase):
#Save original timeout values:
self._orgTimeouts = win32file.GetCommTimeouts(self.hComPort)
+ self._rtsState = win32file.RTS_CONTROL_ENABLE
+ self._dtrState = win32file.RTS_CONTROL_ENABLE
+
self._reconfigurePort()
# Clear buffers:
@@ -141,8 +144,8 @@ class Serial(SerialBase):
comDCB.fRtsControl = win32file.RTS_CONTROL_HANDSHAKE
comDCB.fDtrControl = win32file.DTR_CONTROL_HANDSHAKE
else:
- comDCB.fRtsControl = win32file.RTS_CONTROL_ENABLE
- comDCB.fDtrControl = win32file.DTR_CONTROL_ENABLE
+ comDCB.fRtsControl = self._rtsState
+ comDCB.fDtrControl = self._dtrState
comDCB.fOutxCtsFlow = self._rtscts
comDCB.fOutxDsrFlow = self._rtscts
comDCB.fOutX = self._xonxoff
@@ -245,16 +248,20 @@ class Serial(SerialBase):
"""Set terminal status line: Request To Send"""
if not self.hComPort: raise portNotOpenError
if level:
+ self._rtsState = win32file.RTS_CONTROL_ENABLE
win32file.EscapeCommFunction(self.hComPort, win32file.SETRTS)
else:
+ self._rtsState = win32file.RTS_CONTROL_DISABLE
win32file.EscapeCommFunction(self.hComPort, win32file.CLRRTS)
def setDTR(self,level=1):
"""Set terminal status line: Data Terminal Ready"""
if not self.hComPort: raise portNotOpenError
if level:
+ self._dtrState = win32file.DTR_CONTROL_ENABLE
win32file.EscapeCommFunction(self.hComPort, win32file.SETDTR)
else:
+ self._dtrState = win32file.DTR_CONTROL_DISABLE
win32file.EscapeCommFunction(self.hComPort, win32file.CLRDTR)
def getCTS(self):