Blame view

robots/little_john/telemetry/code/monitor/serialselect.py 1.8 KB
cfa61172   Christopher Stone   Moved serial port...
1
2
3
4
5
6
7
8
# Module to choose and open a serial port
# Written as a telemetry tool by:
# The UoN Robot Wars Project, 2018

def selectserial():
    import platform
    import serial
    import os
c0c9a4b1   Christopher Stone   Migrated serial p...
9
    import easygui
cfa61172   Christopher Stone   Moved serial port...
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    
    devpatterns = ['ttyACM', 'ttyUSB', 'rfcomm']
    targetdevs = []
    if platform.system()=='Windows':
        com_ports = ['COM%s' % (i + 1) for i in range(256)]
        for port in com_ports:
            try:
                s = serial.Serial(port)
                s.close()
                targetdevs.append(port)
            except (OSError, serial.SerialException):
                pass
        os='Windows'    #may be useful
    else:
        alldevs = os.listdir("/dev/")
        targetdevs = []
        for dev in alldevs:
            for pattern in devpatterns:
                if pattern in dev:
                    targetdevs.append("/dev/" + dev)
        os='Other'     #may be useful

    if len(targetdevs) == 0:
376deebd   Christopher Stone   Began to actually...
33
        return "Sorry, no serial devices found."
cfa61172   Christopher Stone   Moved serial port...
34
35
36
37
    elif len(targetdevs) > 1:
        print("Found multiple serial devices: ")
        for i, dev in enumerate(targetdevs):
            print("  " + str(i) + ": " + dev)
c0c9a4b1   Christopher Stone   Migrated serial p...
38
39
40
        message = "Please choose a serial port to recieve data through:"
        title = "Found multiple serial ports!"
        serialport = easygui.choicebox(message, title, targetdevs)
cfa61172   Christopher Stone   Moved serial port...
41
    else:
51707558   Christopher Stone   removed redundant...
42
        print("Only found one likely serial device: " + targetdevs[0])
c0c9a4b1   Christopher Stone   Migrated serial p...
43
44
        serialport = targetdevs[0]
        
cfa61172   Christopher Stone   Moved serial port...
45
46
47
48
49
50
51
52
53
54
55
56
57
58

    try:
        datafeed = serial.Serial(
        port=serialport,
        baudrate = 9600,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS,
        timeout=1
        )

        print("Sucessfully opened " + serialport + " as data source!")
        return datafeed
    except Exception as e:
376deebd   Christopher Stone   Began to actually...
59
        return str(e)