Revision 5ef3477f
| applications/sliposc/serialtoosc.py | ||
|---|---|---|
| 1 |
#!/usr/bin/env python3 |
|
| 2 |
#v 0.1 |
|
| 3 |
#dumb router |
|
| 4 |
#echos serial from serial port to a udp socket |
|
| 5 |
# |
|
| 6 |
#TODO: OSC client as well |
|
| 7 |
#TODO: OSCQuery everything |
|
| 8 |
|
|
| 9 |
# local packages |
|
| 10 |
import os, sys |
|
| 11 |
path = os.path.realpath(__file__).split('/')
|
|
| 12 |
package_path = path[:-1] |
|
| 13 |
#package_path.append('python-packages')
|
|
| 14 |
package_path.append('SlipLib/src')
|
|
| 15 |
sys.path.append('/'.join(package_path))
|
|
| 16 |
|
|
| 17 |
from sliplib import Driver |
|
| 18 |
|
|
| 19 |
import serial |
|
| 20 |
import socket |
|
| 21 |
import socketserver |
|
| 22 |
#from pythonosc import udcp_client |
|
| 23 |
from time import sleep |
|
| 24 |
import threading |
|
| 25 |
|
|
| 26 |
UDP_HOST="127.0.0.1" |
|
| 27 |
UDP_PORT=1234 |
|
| 28 |
#RECV_PORT=9999 |
|
| 29 |
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) |
|
| 30 |
#client = SimpleUDPClient(UDP_HOST,UDP_PORT) |
|
| 31 |
|
|
| 32 |
#TODO:autodetect serialport |
|
| 33 |
ser = serial.Serial('/dev/ttyACM0',9600)
|
|
| 34 |
messages = [] |
|
| 35 |
drv = Driver() |
|
| 36 |
|
|
| 37 |
#class MessageHandler(socketserver.BaseRequestHandler): |
|
| 38 |
# def handle(self): |
|
| 39 |
# data=self.request[0] |
|
| 40 |
# socket=self.request[1] |
|
| 41 |
# ser.write(drv.send(data)) |
|
| 42 |
# print(drv.send(data)) |
|
| 43 |
# |
|
| 44 |
#server= socketserver.UDPServer(('',RECV_PORT),MessageHandler)
|
|
| 45 |
#server_thread=threading.Thread(target=server.serve_forever) |
|
| 46 |
#server_thread.daemon=True |
|
| 47 |
#server_thread.start() |
|
| 48 |
|
|
| 49 |
while True: |
|
| 50 |
sleep(0.005) |
|
| 51 |
#TODO: handle drv errors on improper packet |
|
| 52 |
messages = drv.receive(ser.read(ser.inWaiting())) |
|
| 53 |
for msg in messages: |
|
| 54 |
print(msg) |
|
| 55 |
sock.sendto(msg, (UDP_HOST,UDP_PORT)) |
|
| 56 |
#server.shutdown() |
|
| 57 |
#server.server_close() |
|
| 58 |
sock.close() |
|
Also available in: Unified diff