Commit 70925cf685c1e7bcb800f0b9e1cd072aa4ab2b0e
Exists in
master
Merge remote-tracking branch 'origin/master'
Showing
3 changed files
with
83 additions
and
68 deletions
Show diff stats
.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 | ... | ... |