summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2002-06-11 15:05:25 +0000
committercliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2002-06-11 15:05:25 +0000
commit30b2f28f548789c8773c6bda4bb9223fb5e94c31 (patch)
tree048b1e54d8dc2e404ef3f43d56ca8fe11b2744a0
parent17f177f41de7831d552b3ef3ad6d0ca76e532530 (diff)
downloadpyserial-git-30b2f28f548789c8773c6bda4bb9223fb5e94c31.tar.gz
tested on win98
-rw-r--r--pyserial/serial/serialwin32.py32
1 files changed, 16 insertions, 16 deletions
diff --git a/pyserial/serial/serialwin32.py b/pyserial/serial/serialwin32.py
index 9f8ce62..6a6376f 100644
--- a/pyserial/serial/serialwin32.py
+++ b/pyserial/serial/serialwin32.py
@@ -11,7 +11,7 @@ import win32con # constants.
import sys, string
import serialutil
-VERSION = string.split("$Revision: 1.11 $")[1] #extract CVS version
+VERSION = string.split("$Revision: 1.12 $")[1] #extract CVS version
PARITY_NONE, PARITY_EVEN, PARITY_ODD = range(3)
STOPBITS_ONE, STOPBITS_TWO = (1, 2)
@@ -72,9 +72,8 @@ class Serial(serialutil.FileLike):
# ReadTotalTimeoutConstant,WriteTotalTimeoutMultiplier,
# WriteTotalTimeoutConstant)
if timeout is None:
- timeouts = (0, 0, 0, 0, 0)
+ timeouts = (0, 0, 0, 0, 0)
elif timeout == 0:
- #timeouts = (win32con.MAXDWORD, 0, 0, 0, 1000)
timeouts = (win32con.MAXDWORD, 0, 0, 0, 0)
else:
#timeouts = (0, 0, 0, 0, 0) #timeouts are done with WaitForSingleObject
@@ -142,8 +141,8 @@ class Serial(serialutil.FileLike):
#print win32file.ClearCommError(self.hComPort) #flags, comState =
- self.overlapped = win32file.OVERLAPPED()
- self.overlapped.hEvent = win32event.CreateEvent(None, 0, 0, None)
+ #self.overlapped = win32file.OVERLAPPED()
+ #self.overlapped.hEvent = win32event.CreateEvent(None, 0, 0, None)
def __del__(self):
self.close()
@@ -188,19 +187,20 @@ class Serial(serialutil.FileLike):
if not self.hComPort: raise portNotOpenError
read = ''
if size > 0:
+ overlapped = win32file.OVERLAPPED()
+ overlapped.hEvent = win32event.CreateEvent(None, 1, 0, None)
if self.timeout == 0:
flags, comstat = win32file.ClearCommError(self.hComPort)
n = min(comstat.cbInQue, size)
if n > 0:
- rc, buf = win32file.ReadFile(self.hComPort, win32file.AllocateReadBuffer(n), self.overlapped)
- win32event.WaitForSingleObject(self.overlapped.hEvent, win32event.INFINITE)
+ rc, buf = win32file.ReadFile(self.hComPort, win32file.AllocateReadBuffer(n), overlapped)
+ win32event.WaitForSingleObject(overlapped.hEvent, win32event.INFINITE)
read = str(buf)
else:
flags, comstat = win32file.ClearCommError(self.hComPort)
- getq = size-len(read)
- rc, buf = win32file.ReadFile(self.hComPort, win32file.AllocateReadBuffer(getq), self.overlapped)
- #win32event.WaitForSingleObject(self.overlapped.hEvent, win32event.INFINITE)
- n = win32file.GetOverlappedResult(self.hComPort, self.overlapped, 1)
+ rc, buf = win32file.ReadFile(self.hComPort, win32file.AllocateReadBuffer(size), overlapped)
+ which = win32event.WaitForSingleObject(overlapped.hEvent, win32event.INFINITE)
+ n = win32file.GetOverlappedResult(self.hComPort, overlapped, 0)
read = str(buf[:n])
return read
@@ -209,11 +209,11 @@ class Serial(serialutil.FileLike):
if not self.hComPort: raise portNotOpenError
#print repr(s),
overlapped = win32file.OVERLAPPED()
- overlapped.hEvent = win32event.CreateEvent(None, 0, 0, None)
- win32file.WriteFile(self.hComPort, s, overlapped)
- # Wait for the write to complete.
- win32event.WaitForSingleObject(overlapped.hEvent, win32event.INFINITE)
- #old: win32file.WriteFile(self.hComPort, s) #, 1, NULL)
+ overlapped.hEvent = win32event.CreateEvent(None, 1, 0, None)
+ err, n = win32file.WriteFile(self.hComPort, s, overlapped)
+ if err: #will be ERROR_IO_PENDING:
+ # Wait for the write to complete.
+ win32event.WaitForSingleObject(overlapped.hEvent, win32event.INFINITE)
def flushInput(self):
if not self.hComPort: raise portNotOpenError