def menu_scelta(menu_items, zerostart=False): """ riceve in ingresso una lista con le opzioni da stampare a video. La prima deve essere il titolo del menù e non è un opzione selezionabile dall'utente""" ripeti = True while ripeti: for i in range(20): print(" ") print("=======================") print(menu_items[0]) for i in range(1, len(menu_items), 2): if (zerostart == True): if (menu_items[i] == ""): zerostart = True else: if (i < len(menu_items) - 1): print(" ", i - 1, "> ", menu_items[i], " ", i, "> ", menu_items[i + 1]) else: print(" ", i - 1, "> ", menu_items[i]) else: if (menu_items[i] == ""): zerostart = False else: if (i < len(menu_items) - 1): print(" ", i, "> ", menu_items[i], " ", i + 1, "> ", menu_items[i + 1]) else: print(" ", i, "> ", menu_items[i]) print(" ") print(" ") scelta = input("Your choice> ") print("=======================") try: scelta_n = int(scelta) except ValueError: scelta_n = -1 print('Please insert an integer number......') if (zerostart == True): if scelta_n in range(0, len(menu_items) - 1): ripeti = False else: print('Selection not valid') dormi(1) else: if scelta_n in range(1, len(menu_items)): ripeti = False else: print('Selection not valid') dormi(1) for i in range(30): print(" ") return scelta
def ScriviOut(db, ser): for i in range(20): print(" ") ripeti = True while ripeti: #numeroPin = (int(input("Quale PIN vuole scrivere? > "))) menu_scelta_pinNo = [ "SELECTION OF PIN NUMBER WHERE YOU WANT TO WRITE OUTPUT", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "D13", "", "", "A0", "A1", "A2", "A3", "A4", "A5", "Cancel" ] numeroPin = int(menu_scelta(menu_scelta_pinNo, True)) if not (((numeroPin >= 2) and (numeroPin <= 13)) or (((numeroPin >= 16)) and (numeroPin <= 22))): print("PIN number not valid!!!") dormi(2) else: ripeti = False if (numeroPin == len(menu_scelta_pinNo) - 2): return (0) ripeti_in = True while ripeti_in: try: for i in range(30): print(" ") valore = ( input("What value you want to write [A=Cancel]? > ")) if str(valore).upper() == 'A': ripeti = True ripeti_in = False else: valore = int(valore) ripeti_in = False except ValueError: print('Please insert an integer number......') ripeti_in = True if (((numeroPin >= 2) and (numeroPin <= 13)) or (((numeroPin >= 16)) and (numeroPin <= 22))): answer = TryGetAnswer(ser, cmdScrivi, numeroPin, valore) print("ScriviOut ---- Err in aswer = ", answer[3], decodeErrCode(answer[3])) if not (decodeErrCode(answer[3]) == "OK"): answer = TryGetAnswer(ser, cmdLeggi, numeroPin, valore) ReadValue = int.from_bytes(answer[2], byteorder='big') print("Value on pin ", numeroPin, " is: ", ReadValue) else: ReadValue = int.from_bytes(answer[2], byteorder='big') print("Output value on pin ", numeroPin, " is: ", ReadValue) print("") input("----------[press ENTER to continue]-------------" ) #pausa riflessiva per mostrare output return (ReadValue) else: print("Pin number you enterd is not valid!!!") dormi(3) #pausa riflessiva per mostrare messaggio di errore return (-1) dormi(1) return (0)
def SetPinMode(db, ser): for i in range(20): print("") ripeti = True while ripeti: menu_scelta_pinNo = [ "SELECTION OF PIN NUMBER WHOSE MODE YOU WANT TO SET", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "D13", "", "", "A0", "A1", "A2", "A3", "A4", "A5", "Cancel" ] numeroPin = int(menu_scelta(menu_scelta_pinNo, True)) if not ((((numeroPin >= 2) and (numeroPin <= 13)) or ((numeroPin >= 16)) and (numeroPin <= 22))): print("PIN number not valid!!!") dormi(2) else: ripeti = False if (numeroPin == len(menu_scelta_pinNo) - 2): return (0) ripeti_in = True while ripeti_in: menu_scelta_modo = [ "SELECTION OF MODE FOR PIN: " + str(decodePinNo(numeroPin)) ] for i in range(5): menu_scelta_modo.append(decodeMode(i)) menu_scelta_modo.append("Cancel") modo = int(menu_scelta(menu_scelta_modo, True)) if (modo == len(menu_scelta_modo) - 2): ripeti = True ripeti_in = False if ((numeroPin >= 2) and (numeroPin <= 13)) or ((numeroPin >= 16) and (numeroPin <= 21)): answer = TryGetAnswer(ser, cmdImpostaModo, numeroPin, modo) if not (decodeErrCode(answer[3]) == "OK"): answer = TryGetAnswer(ser, cmdGetModo, numeroPin, 0) ReadValue = int.from_bytes(answer[2], byteorder='big') print("Mode of Pin ", numeroPin, " is set to: ", decodeMode(ReadValue)) else: ReadValue = int.from_bytes(answer[2], byteorder='big') print("Mode on pin ", numeroPin, " is set to: ", decodeMode(ReadValue)) print("") input("----------[press ENTER to continue]-------------" ) #pausa riflessiva per mostrare output return (ReadValue) else: print("PIN number you eneterd is not valid!!!") dormi(3) #pausa riflessiva per mostrare messaggio di errore return (-1) dormi(1) return (0)
def LeggiIn(db, ser): for i in range(20): print("") ripeti = True while ripeti: menu_scelta_pinNo = [ "SELECTION OF PIN NUMBER TO READ", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "D13", "", "", "A0", "A1", "A2", "A3", "A4", "A5", "Cancel" ] numeroPinInt = int(menu_scelta(menu_scelta_pinNo, True)) if not (((numeroPinInt >= 0) and (numeroPinInt <= 13)) or (((numeroPinInt >= 16)) and (numeroPinInt <= 22))): print("PIN number not valid!!!") dormi(2) else: ripeti = False if (numeroPinInt == len(menu_scelta_pinNo) - 2): return (0) if (((numeroPinInt >= 0) and (numeroPinInt <= 13)) or ((numeroPinInt >= 16)) and (numeroPinInt <= 21)): answer = TryGetAnswer(ser, cmdLeggi, numeroPinInt, 0) print("LeggiDigIn ---- Err in aswer = ", answer[3], decodeErrCode(answer[3])) ReadValue = int.from_bytes(answer[2], byteorder='big') print("Input value on pin ", numeroPinInt, " is: ", ReadValue) print("") input("----------[press ENTER to continue]-------------" ) #pausa riflessiva per mostrare output return (ReadValue) else: print("Pin number not valid!!!") dormi(3) #pausa riflessiva per mostrare messaggio di errore return (-1)
def GetPinMode(db, ser): for i in range(20): print("") ripeti = True while ripeti: menu_scelta_pinNo = [ "SELECTION OF PIN NUMBER WHOSE MODE YOU WANT TO KNOW", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "D13", "", "", "A0", "A1", "A2", "A3", "A4", "A5", "Cancel" ] numeroPin = int(menu_scelta(menu_scelta_pinNo, True)) if not (((numeroPin >= 0) and (numeroPin <= 13)) or ((numeroPin >= 16) and (numeroPin <= 22))): print("PIN number not valid!!!") dormi(2) else: ripeti = False if (numeroPin == len(menu_scelta_pinNo) - 2): return (0) if (((numeroPin >= 0) and (numeroPin <= 13)) or ((numeroPin >= 16)) and (numeroPin <= 21)): answer = TryGetAnswer(ser, cmdGetModo, numeroPin, 0) ReadValue = int.from_bytes(answer[2], byteorder='big') print("Mode of Pin ", numeroPin, " is set to: ", decodeMode(ReadValue)) print("") input("----------[press ENTER to continue]-------------" ) #pausa riflessiva per mostrare output return (ReadValue) else: print("Pin number you entered is not valid!!!") dormi(3) #pausa riflessiva per mostrare messaggio di errore return (-1) dormi(1) return (0)
if menu_scelta_UART[numeroUART+1]=="/dev/ttyS0": ser = serial.Serial("/dev/ttyS0", baudrate, timeout=3) elif (Autofind == "YES") or (useDefaultUART=="YES"): ser = serial.Serial(menu_scelta_UART[numeroUART], baudrate, timeout=3) else: ser = serial.Serial(ports[numeroUART].device, baudrate, timeout=3) ser.reset_input_buffer() print("Port Name: ",ser.name) print("Port details: ", ser) #input("avanti") else: ser = 0 if not(menu_scelta_UART[numeroUART+1]=="/dev/ttyS0"): dormi(2) #let Arduino get started! CreaDb(db,ser) while continua: main_menu=["FUNCTION SELECTION","Read an input","Write output","Set Pin Mode","Get Pin Mode","Show Arduino I/O status","Exit"] scelta = menu_scelta(main_menu) funcs = {'1':LeggiIn, '2':ScriviOut, '3':SetPinMode, '4':GetPinMode, '5':PrintArdStatus} if int(scelta,10) in range(len(main_menu)-1): func = funcs[scelta] res = func(db,ser) else: print("Goodbye!!! ") continua = False