12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- # Copyright (c) Twisted Matrix Laboratories.
- # See LICENSE for details.
- """
- Serial Port Protocol
- """
- from __future__ import division, absolute_import
- # dependent on pyserial ( http://pyserial.sf.net/ )
- # only tested w/ 1.18 (5 Dec 2002)
- from serial import PARITY_NONE
- from serial import STOPBITS_ONE
- from serial import EIGHTBITS
- from twisted.internet.serialport import BaseSerialPort
- from twisted.internet import abstract, fdesc
- class SerialPort(BaseSerialPort, abstract.FileDescriptor):
- """
- A select()able serial device, acting as a transport.
- """
- connected = 1
- def __init__(self, protocol, deviceNameOrPortNumber, reactor,
- baudrate = 9600, bytesize = EIGHTBITS, parity = PARITY_NONE,
- stopbits = STOPBITS_ONE, timeout = 0, xonxoff = 0, rtscts = 0):
- abstract.FileDescriptor.__init__(self, reactor)
- self._serial = self._serialFactory(
- deviceNameOrPortNumber, baudrate=baudrate, bytesize=bytesize,
- parity=parity, stopbits=stopbits, timeout=timeout,
- xonxoff=xonxoff, rtscts=rtscts)
- self.reactor = reactor
- self.flushInput()
- self.flushOutput()
- self.protocol = protocol
- self.protocol.makeConnection(self)
- self.startReading()
- def fileno(self):
- return self._serial.fd
- def writeSomeData(self, data):
- """
- Write some data to the serial device.
- """
- return fdesc.writeToFD(self.fileno(), data)
- def doRead(self):
- """
- Some data's readable from serial device.
- """
- return fdesc.readFromFD(self.fileno(), self.protocol.dataReceived)
- def connectionLost(self, reason):
- """
- Called when the serial port disconnects.
- Will call C{connectionLost} on the protocol that is handling the
- serial data.
- """
- abstract.FileDescriptor.connectionLost(self, reason)
- self._serial.close()
- self.protocol.connectionLost(reason)
|