summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2002-03-04 22:17:53 +0000
committercliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2002-03-04 22:17:53 +0000
commit95c6221a7507abcd11081ff1f9d024bc7ecdac5a (patch)
treef9ad7f81b40c81d8940583936ef68b73136070c1
parent8b3ad393dea271aedb71dd8b3bdbdf5b52756a7c (diff)
downloadpyserial-git-95c6221a7507abcd11081ff1f9d024bc7ecdac5a.tar.gz
added setBaudrate() to change the baudrate after the port is open
-rw-r--r--pyserial/serial/serialjava.py35
-rw-r--r--pyserial/serial/serialposix.py13
-rw-r--r--pyserial/serial/serialwin32.py11
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)