diff options
author | cliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a> | 2002-03-04 22:17:53 +0000 |
---|---|---|
committer | cliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a> | 2002-03-04 22:17:53 +0000 |
commit | 95c6221a7507abcd11081ff1f9d024bc7ecdac5a (patch) | |
tree | f9ad7f81b40c81d8940583936ef68b73136070c1 | |
parent | 8b3ad393dea271aedb71dd8b3bdbdf5b52756a7c (diff) | |
download | pyserial-git-95c6221a7507abcd11081ff1f9d024bc7ecdac5a.tar.gz |
added setBaudrate() to change the baudrate after the port is open
-rw-r--r-- | pyserial/serial/serialjava.py | 35 | ||||
-rw-r--r-- | pyserial/serial/serialposix.py | 13 | ||||
-rw-r--r-- | pyserial/serial/serialwin32.py | 11 |
3 files changed, 42 insertions, 17 deletions
diff --git a/pyserial/serial/serialjava.py b/pyserial/serial/serialjava.py index 9049731..5f098f7 100644 --- a/pyserial/serial/serialjava.py +++ b/pyserial/serial/serialjava.py @@ -8,7 +8,7 @@ import sys, os, string, javax.comm import serialutil -VERSION = string.split("$Revision: 1.2 $")[1] #extract CVS version +VERSION = string.split("$Revision: 1.3 $")[1] #extract CVS version PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE = (0,1,2,3,4) STOPBITS_ONE, STOPBITS_TWO, STOPBITS_ONE_HALVE = (1, 2, 3) @@ -52,35 +52,35 @@ class Serial(serialutil.FileLike): self.outstream = self.sPort.getOutputStream() self.sPort.enableReceiveTimeout(30) if bytesize == FIVEBITS: - databits = javax.comm.SerialPort.DATABITS_5 + self.databits = javax.comm.SerialPort.DATABITS_5 elif bytesize == SIXBITS: - databits = javax.comm.SerialPort.DATABITS_6 + self.databits = javax.comm.SerialPort.DATABITS_6 elif bytesize == SEVENBITS: - databits = javax.comm.SerialPort.DATABITS_7 + self.databits = javax.comm.SerialPort.DATABITS_7 elif bytesize == EIGHTBITS: - databits = javax.comm.SerialPort.DATABITS_8 + self.databits = javax.comm.SerialPort.DATABITS_8 else: raise ValueError, "unsupported bytesize" if stopbits == STOPBITS_ONE: - jstopbits = javax.comm.SerialPort.STOPBITS_1 + self.jstopbits = javax.comm.SerialPort.STOPBITS_1 elif stopbits == STOPBITS_ONE_HALVE: - jstopbits = javax.comm.SerialPort.STOPBITS_1_5 + self.jstopbits = javax.comm.SerialPort.STOPBITS_1_5 elif stopbits == STOPBITS_TWO: - jstopbits = javax.comm.SerialPort.STOPBITS_2 + self.jstopbits = javax.comm.SerialPort.STOPBITS_2 else: raise ValueError, "unsupported number of stopbits" if parity == PARITY_NONE: - jparity = javax.comm.SerialPort.PARITY_NONE + self.jparity = javax.comm.SerialPort.PARITY_NONE elif parity == PARITY_EVEN: - jparity = javax.comm.SerialPort.PARITY_EVEN + self.jparity = javax.comm.SerialPort.PARITY_EVEN elif parity == PARITY_ODD: - jparity = javax.comm.SerialPort.PARITY_ODD + self.jparity = javax.comm.SerialPort.PARITY_ODD elif parity == PARITY_MARK: - jparity = javax.comm.SerialPort.PARITY_MARK + self.jparity = javax.comm.SerialPort.PARITY_MARK elif parity == PARITY_SPACE: - jparity = javax.comm.SerialPort.PARITY_SPACE + self.jparity = javax.comm.SerialPort.PARITY_SPACE else: raise ValueError, "unsupported parity type" @@ -92,7 +92,7 @@ class Serial(serialutil.FileLike): jflowin = jflowin | javax.comm.SerialPort.FLOWCONTROL_XONXOFF_IN jflowout = jflowout | javax.comm.SerialPort.FLOWCONTROL_XONXOFF_OUT - self.sPort.setSerialPortParams(baudrate, databits, jstopbits, jparity) + self.sPort.setSerialPortParams(baudrate, databits, self.jstopbits, self.jparity) self.sPort.setFlowControlMode(jflowin | jflowout) self.timeout = timeout @@ -101,7 +101,6 @@ class Serial(serialutil.FileLike): else: self.sPort.disableReceiveTimeout() - def close(self): if self.sPort: self.instream.close() @@ -109,6 +108,12 @@ class Serial(serialutil.FileLike): self.sPort.close() self.sPort = None + def setBaudrate(self, baudrate): + """change baudrate after port is open""" + if not self.sPort: raise portNotOpenError + self.sPort.setSerialPortParams(baudrate, self.databits, self.jstopbits, self.jparity) + + def inWaiting(self): if not self.sPort: raise portNotOpenError return self.instream.available() diff --git a/pyserial/serial/serialposix.py b/pyserial/serial/serialposix.py index 6b2db69..e1a0286 100644 --- a/pyserial/serial/serialposix.py +++ b/pyserial/serial/serialposix.py @@ -12,7 +12,7 @@ import sys, os, fcntl, termios, struct, string, select import serialutil -VERSION = string.split("$Revision: 1.3 $")[1] #extract CVS version +VERSION = string.split("$Revision: 1.4 $")[1] #extract CVS version PARITY_NONE, PARITY_EVEN, PARITY_ODD = range(3) STOPBITS_ONE, STOPBITS_TWO = (1, 2) @@ -257,6 +257,17 @@ class Serial(serialutil.FileLike): os.close(self.fd) self.fd = None + def setBaudrate(self, baudrate): + """change baudrate after port is open""" + if not self.fd: raise portNotOpenError + self.__tcgetattr() #read current settings + #setup baudrate + try: + self.ispeed = self.ospeed = baudIntToEnum[baudrate] + except: + raise ValueError,'invalid baud rate: %s' % baudrate + self.__tcsetattr() + def inWaiting(self): """how many character are in the input queue""" s = fcntl.ioctl(self.fd, TERMIOS.FIONREAD, TIOCM_zero_str) diff --git a/pyserial/serial/serialwin32.py b/pyserial/serial/serialwin32.py index 8fda924..72b353e 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.4 $")[1] #extract CVS version +VERSION = string.split("$Revision: 1.5 $")[1] #extract CVS version PARITY_NONE, PARITY_EVEN, PARITY_ODD = range(3) STOPBITS_ONE, STOPBITS_TWO = (1, 2) @@ -160,6 +160,15 @@ class Serial(serialutil.FileLike): win32file.CloseHandle(self.hComPort) self.hComPort = None + def setBaudrate(self, baudrate): + """change baudrate after port is open""" + if not self.hComPort: raise portNotOpenError + # Setup the connection info. + # Get state and modify it: + comDCB = win32file.GetCommState(self.hComPort) + comDCB.BaudRate = baudrate + win32file.SetCommState(self.hComPort, comDCB) + def inWaiting(self): """returns the number of bytes waiting to be read""" flags, comstat = win32file.ClearCommError(self.hComPort) |