У меня есть флажок со списком всех последовательных портов, и пользователь выбирает тот из поля со списком, чтобы позже взаимодействовать с Arduino.
Вот интересные биты:
# --- functions ---
def serial_ports():
return serial.tools.list_ports.comports()
def on_select(event=None):
# get selection from event
print("event.widget:", event.widget.get())
# or get selection directly from combobox
print("comboboxes: ", cb.get())
# --- functions ---
label0 = tk.Label(frame1, text="Select the COM port that the device is plugged in: ")
label0.config(font=("TkDefaultFont", 8))
label0.place(relx = 0.1, rely=0.3, relwidth=0.3, relheight=0.5)
cb = ttk.Combobox(frame1, values=serial_ports())
cb.place(relx=0.5, rely=0.5, anchor='center')
# assign function to combobox
cb.bind('<<ComboboxSelected>>', on_select)
cb.bind()
переводит выбор на on_select()
. Однако, когда я распечатываю данные выбора пользователя, используя функцию on_select()
, я получаю:
event.widget: COM14 - Arduino Mega 2560 (COM14)
Я хотел бы получить только COM-порт, например 'COM14
', чтобы он мог быть назначенным в переменной, а затем использоваться следующим образом:
ser = serial.Serial('COM14', baudRate, timeout=0, writeTimeout=0)
где вместо 'COM14
' у меня будет только моя переменная.
Есть ли метод pySerial, чтобы получить только COM-порт, без полного описания?