1 # Copyright (c) Twisted Matrix Laboratories.
2 # See LICENSE for details.
12 # dependent on pyserial ( http://pyserial.sf.net/ )
13 # only tested w/ 1.18 (5 Dec 2002)
15 from serial import PARITY_NONE, PARITY_EVEN, PARITY_ODD
16 from serial import STOPBITS_ONE, STOPBITS_TWO
17 from serial import FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS
19 from serialport import BaseSerialPort
22 from twisted.internet import abstract, fdesc, main
24 class SerialPort(BaseSerialPort, abstract.FileDescriptor):
26 A select()able serial device, acting as a transport.
31 def __init__(self, protocol, deviceNameOrPortNumber, reactor,
32 baudrate = 9600, bytesize = EIGHTBITS, parity = PARITY_NONE,
33 stopbits = STOPBITS_ONE, timeout = 0, xonxoff = 0, rtscts = 0):
34 abstract.FileDescriptor.__init__(self, reactor)
35 self._serial = self._serialFactory(
36 deviceNameOrPortNumber, baudrate=baudrate, bytesize=bytesize,
37 parity=parity, stopbits=stopbits, timeout=timeout,
38 xonxoff=xonxoff, rtscts=rtscts)
39 self.reactor = reactor
42 self.protocol = protocol
43 self.protocol.makeConnection(self)
48 return self._serial.fd
51 def writeSomeData(self, data):
53 Write some data to the serial device.
55 return fdesc.writeToFD(self.fileno(), data)
60 Some data's readable from serial device.
62 return fdesc.readFromFD(self.fileno(), self.protocol.dataReceived)
65 def connectionLost(self, reason):
67 Called when the serial port disconnects.
69 Will call C{connectionLost} on the protocol that is handling the
72 abstract.FileDescriptor.connectionLost(self, reason)
74 self.protocol.connectionLost(reason)