Commit 70925cf685c1e7bcb800f0b9e1cd072aa4ab2b0e

Authored by Hugo Stephens
2 parents 654dbda9 72f2bf83
Exists in master

Merge remote-tracking branch 'origin/master'

.gitignore
1 1  
2 2 # File automatically generated by some file managers
3 3 .directory
  4 +
4 5 # Blender creates backup copies of files, which needn't be distributed
5 6 *.blend1
  7 +
6 8 # Backup files
7 9 ~*
8 10 # Solidworks log files
9 11 *.log.*
10   -# Temprary files used for solidworks conversion from creo
  12 +
  13 +# Temporary files used for solidworks conversion from creo
11 14 *.stp
  15 +
  16 +# Python caching
12 17 robots/little_john/telemetry/code/monitor/__pycache__/
  18 +*.pyc
... ...
robots/little_john/telemetry/code/monitor/graph_plotter_rewrite.py
... ... @@ -14,77 +14,13 @@ import numpy
14 14 import os
15 15 import platform
16 16 import sys
  17 +from serialselect import selectserial
17 18  
18 19 from colours import *
19   -# Who doesn't like cross platform development
20   -#if platform.system()=='Windows':
21   -# targetdevs='COM5'
22   -# os='Windows'
23   -
24   -devpatterns = ['ttyACM', 'ttyUSB', 'rfcomm']
25   -targetdevs = []
26   -if platform.system()=='Windows':
27   - com_ports = ['COM%s' % (i + 1) for i in range(256)]
28   - for port in com_ports:
29   - try:
30   - s = serial.Serial(port)
31   - s.close()
32   - targetdevs.append(port)
33   - except (OSError, serial.SerialException):
34   - pass
35   - os='Windows' #may be useful
36   -else:
37   - alldevs = os.listdir("/dev/")
38   - targetdevs = []
39   - for dev in alldevs:
40   - for pattern in devpatterns:
41   - if pattern in dev:
42   - targetdevs.append("/dev/" + dev)
43   - os='Other' #may be useful
44   -
45   -
46   -if len(targetdevs) == 0:
47   - print("Sorry, no serial devices found.")
48   - print("Exiting...")
49   - time.sleep(2)
50   - sys.exit()
51   -elif len(targetdevs) > 1:
52   - print("Found multiple serial devices: ")
53   - for i, dev in enumerate(targetdevs):
54   - print(" " + str(i) + ": " + dev)
55   - while True:
56   - try:
57   - selection = int(input("Please enter your selection (as a digit):\n > "))
58   - if selection >= 0 and selection < len(targetdevs):
59   - break
60   - except KeyboardInterrupt:
61   - sys.exit()
62   - except:
63   - print("Choice unrecognised: please try again:")
64   -else:
65   - if os=='Windows':
66   - print("Only found one likely serial device: " + targetdevs[0])
67   - selection = 0
68   - else:
69   - print("Only found one likely serial device: " + dev)
70   -
71   -serialport=targetdevs[selection]
72   -
73 20  
74   -try:
75   - datafeed = serial.Serial(
76   - port=serialport,
77   - baudrate = 9600,
78   - parity=serial.PARITY_NONE,
79   - stopbits=serial.STOPBITS_ONE,
80   - bytesize=serial.EIGHTBITS,
81   - timeout=1
82   - )
  21 +datafeed = selectserial()
83 22  
84   - print("Sucessfully opened " + serialport + " as data source!")
85   -except Exception as e:
86   - print("Failed to access " + serialport + " because:")
87   - print(e)
  23 +if datafeed == None:
88 24 print("Exiting...")
89 25 sys.exit()
90 26  
... ...
robots/little_john/telemetry/code/monitor/serialselect.py 0 โ†’ 100644
... ... @@ -0,0 +1,73 @@
  1 +# Module to choose and open a serial port
  2 +# Written as a telemetry tool by:
  3 +# The UoN Robot Wars Project, 2018
  4 +
  5 +def selectserial():
  6 + import platform
  7 + import serial
  8 + import os
  9 +
  10 + devpatterns = ['ttyACM', 'ttyUSB', 'rfcomm']
  11 + targetdevs = []
  12 + if platform.system()=='Windows':
  13 + com_ports = ['COM%s' % (i + 1) for i in range(256)]
  14 + for port in com_ports:
  15 + try:
  16 + s = serial.Serial(port)
  17 + s.close()
  18 + targetdevs.append(port)
  19 + except (OSError, serial.SerialException):
  20 + pass
  21 + os='Windows' #may be useful
  22 + else:
  23 + alldevs = os.listdir("/dev/")
  24 + targetdevs = []
  25 + for dev in alldevs:
  26 + for pattern in devpatterns:
  27 + if pattern in dev:
  28 + targetdevs.append("/dev/" + dev)
  29 + os='Other' #may be useful
  30 +
  31 + if len(targetdevs) == 0:
  32 + print("Sorry, no serial devices found.")
  33 + print("Exiting...")
  34 + return None
  35 + elif len(targetdevs) > 1:
  36 + print("Found multiple serial devices: ")
  37 + for i, dev in enumerate(targetdevs):
  38 + print(" " + str(i) + ": " + dev)
  39 + while True:
  40 + try:
  41 + selection = int(input("Please enter your selection (as a digit):\n > "))
  42 + if selection >= 0 and selection < len(targetdevs):
  43 + break
  44 + except KeyboardInterrupt:
  45 + sys.exit()
  46 + except:
  47 + print("Choice unrecognised: please try again:")
  48 + else:
  49 + if os=='Windows':
  50 + print("Only found one likely serial device: " + targetdevs[0])
  51 + else:
  52 + print("Only found one likely serial device: " + targetdevs[0])
  53 + selection = 0
  54 +
  55 + serialport=targetdevs[selection]
  56 +
  57 +
  58 + try:
  59 + datafeed = serial.Serial(
  60 + port=serialport,
  61 + baudrate = 9600,
  62 + parity=serial.PARITY_NONE,
  63 + stopbits=serial.STOPBITS_ONE,
  64 + bytesize=serial.EIGHTBITS,
  65 + timeout=1
  66 + )
  67 +
  68 + print("Sucessfully opened " + serialport + " as data source!")
  69 + return datafeed
  70 + except Exception as e:
  71 + print("Failed to access " + serialport + " because:")
  72 + print(e)
  73 + return None
... ...