| OLD | NEW |
| (Empty) |
| 1 # Copyright (c) 2001-2007 Twisted Matrix Laboratories. | |
| 2 # See LICENSE for details. | |
| 3 | |
| 4 | |
| 5 """ | |
| 6 Serial Port Protocol | |
| 7 """ | |
| 8 | |
| 9 # system imports | |
| 10 import os, errno | |
| 11 | |
| 12 # dependent on pyserial ( http://pyserial.sf.net/ ) | |
| 13 # only tested w/ 1.18 (5 Dec 2002) | |
| 14 import serial | |
| 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 | |
| 18 | |
| 19 from serialport import BaseSerialPort | |
| 20 | |
| 21 # twisted imports | |
| 22 from twisted.internet import abstract, fdesc, main | |
| 23 | |
| 24 class SerialPort(BaseSerialPort, abstract.FileDescriptor): | |
| 25 """ | |
| 26 A select()able serial device, acting as a transport. | |
| 27 """ | |
| 28 | |
| 29 connected = 1 | |
| 30 | |
| 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 = serial.Serial(deviceNameOrPortNumber, baudrate = baudrate
, bytesize = bytesize, parity = parity, stopbits = stopbits, timeout = timeout,
xonxoff = xonxoff, rtscts = rtscts) | |
| 36 self.reactor = reactor | |
| 37 self.flushInput() | |
| 38 self.flushOutput() | |
| 39 self.protocol = protocol | |
| 40 self.protocol.makeConnection(self) | |
| 41 self.startReading() | |
| 42 | |
| 43 def fileno(self): | |
| 44 return self._serial.fd | |
| 45 | |
| 46 def writeSomeData(self, data): | |
| 47 """ | |
| 48 Write some data to the serial device. | |
| 49 """ | |
| 50 return fdesc.writeToFD(self.fileno(), data) | |
| 51 | |
| 52 def doRead(self): | |
| 53 """ | |
| 54 Some data's readable from serial device. | |
| 55 """ | |
| 56 return fdesc.readFromFD(self.fileno(), self.protocol.dataReceived) | |
| 57 | |
| 58 def connectionLost(self, reason): | |
| 59 abstract.FileDescriptor.connectionLost(self, reason) | |
| 60 self._serial.close() | |
| OLD | NEW |