Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. from autobahn.asyncio.websocket import WebSocketServerProtocol, WebSocketServerFactory
  2. import asyncio
  3. import serial.aio
  4.  
  5. serial_transport = None
  6.  
  7. class Output(asyncio.Protocol):
  8. def connection_made(self, transport):
  9. global serial_transport
  10. serial_transport = transport
  11. self.transport = transport
  12. print('port opened', transport)
  13. transport.serial.rts = False
  14.  
  15. def data_received(self, data):
  16. print('data received', repr(data))
  17.  
  18. def connection_lost(self, exc):
  19. print('port closed')
  20. asyncio.get_event_loop().stop()
  21.  
  22.  
  23. class MyServerProtocol(WebSocketServerProtocol):
  24.  
  25. def onConnect(self, request):
  26. print("Client connecting: {0}".format(request.peer))
  27.  
  28. def onOpen(self):
  29. print("WebSocket connection open.")
  30.  
  31. def onMessage(self, payload, isBinary):
  32. if isBinary:
  33. print("Binary message received: {0} bytes".format(len(payload)))
  34. if serial_transport is not None:
  35. serial_transport.write(payload)
  36. else:
  37. print("Text message received: {0}".format(payload.decode('utf8')))
  38.  
  39. def onClose(self, wasClean, code, reason):
  40. print("WebSocket connection closed: {0}".format(reason))
  41.  
  42.  
  43. if __name__ == '__main__':
  44.  
  45. loop = asyncio.get_event_loop()
  46.  
  47. # Web Socket Server
  48. factory = WebSocketServerFactory(u"ws://127.0.0.1:9000")
  49. factory.protocol = MyServerProtocol
  50. coro = loop.create_server(factory, '0.0.0.0', 9000)
  51. server = loop.run_until_complete(coro)
  52.  
  53. # Serial Server
  54. coro = serial.aio.create_serial_connection(loop, Output, '/dev/cu.usbmodem401111', baudrate=115200)
  55. loop.run_until_complete(coro)
  56.  
  57. try:
  58. loop.run_forever()
  59. except KeyboardInterrupt:
  60. pass
  61. finally:
  62. server.close()
  63. loop.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement