
Dear Lucas Taylor Thankyou for your fast enlightment. It's time for me to re-build my ejabberd turnkey linux Sincerely -bino- On 12/22/2011 01:12 PM, Lucas Taylor wrote:
This is a relevant FAQ for this situation: http://twistedmatrix.com/trac/wiki/FrequentlyAskedQuestions#HowdoImakeinputo...
More specifically: 1. Create a Protocol class for your SerialPort that will communicate with the Arduino. Instances of this class will have access to the serial transport and can write out to the serial port. Incoming messages from the Arduino will be handled by the dataReceived method of the protocol.
2. Give your EchoBotProtocol a reference to the SerialPort somehow (e.g. via init), and set a reference to the EchoBotProtocol on the SerialPort.
Here's a quick sketch:
# Basic line receiver protocol class ArduinoReceiver(LineReceiver): def lineReceived(self, line): print "Line Received from Arduino" self.echobot.send('some xmpp message for which I do not know the format')
# Wire up the serial port and protocol...note there are more parameters to create the SerialPort (baudrate, etc.) serial = SerialPort(ArduinoReceiver, '/dev/tty.usbserial', reactor)
# EchoBot gets a reference to the serialport class EchoBotProtocol(MessageProtocol): def __init__(self, serial, *args, **kwargs): self.serial = serial # Set a reference to self on the serial protocol self.serial.protocol.echobot = self MessageProtocol.__init__(self, *args, **kwargs)
def onMessage(self, msg): self.serial.transport.write('some message\n')
echobot = EchoBotProtocol(serial)
...and an update to your pastebin that may be helpful for context: http://pastebin.com/2EJ22wXa