Revision edc6c2e7

View differences:

applications/sliposc/serialtoosc.py
1 1
#!/usr/bin/env python3
2
#vim:ts=2:sw=2:expandtab:autoindent
2 3
#v 0.1
3 4
#dumb router
4 5
#echos serial from serial port to a udp socket
......
14 15
package_path.append('SlipLib/src')
15 16
sys.path.append('/'.join(package_path))
16 17

  
17
from sliplib import Driver
18
import sliplib
18 19

  
19 20
import serial
20 21
import socket
......
23 24
from time import sleep
24 25
import threading
25 26

  
27
DEBUG = False
28

  
29
if(len(sys.argv) > 1 and sys.argv[1] == '-v'):
30
    DEBUG = True
31

  
26 32
UDP_HOST="127.0.0.1"
27
UDP_PORT=1234
33
UDP_PORTS=[1234, 57120, 57121, 57122];
34

  
28 35
#RECV_PORT=9999
29 36
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
30 37
#client = SimpleUDPClient(UDP_HOST,UDP_PORT)
......
32 39
#TODO:autodetect serialport
33 40
ser = serial.Serial('/dev/ttyACM0',9600)
34 41
messages = []
35
drv = Driver()
42
drv = sliplib.Driver()
36 43

  
37 44
#class MessageHandler(socketserver.BaseRequestHandler):
38 45
#    def handle(self):
......
46 53
#server_thread.daemon=True
47 54
#server_thread.start()
48 55

  
56
#import subprocess, shlex
57
#sc_port_cmd = "lsof -p `pidof sclang`|grep UDP|awk '{ print $9}'|cut -d: -f2"
58
#sp = subprocess.Popen(sc_port_cmd, stdout=subprocess.PIPE, shell=True)
59
#print(sp.returncode)
60

  
49 61
while True:
50
  sleep(0.005)
51 62
  #TODO: handle drv errors on improper packet
52 63
  messages = drv.receive(ser.read(ser.inWaiting()))
64

  
65
  if DEBUG:
66
    print(len(messages), " messages in read")
67

  
53 68
  for msg in messages:
54
    print(msg)
55
    sock.sendto(msg, (UDP_HOST,UDP_PORT))
69
    try:
70
      dec = sliplib.decode(msg)
71
      if DEBUG:
72
        print(len(msg), dec)
73
      if sliplib.is_valid(msg):
74
        for port in UDP_PORTS:
75
          sock.sendto(msg, (UDP_HOST, port))
76
    except sliplib.ProtocolError:
77
      if DEBUG:
78
        print ("Invalid Packet received")
79

  
80
  print("---");
81
  sleep(1)
82
  #sleep(0.005)
56 83
#server.shutdown()
57 84
#server.server_close()
58 85
sock.close()

Also available in: Unified diff