Программирование серийного описания
Можно ли запрограммировать собственное описание, чтобы моя программа на Python могла точно знать, к какому USB-порту подключаться для этого конкретного программирования?
Он должен иметь возможность найти любую плату с этой программой, поэтому лучший подход — это запрограммировать собственное описание с помощью загружаемой активной программы.
Я хочу, чтобы моя установка могла работать с несколькими платами Arduino и всегда знать, какой USB использовать для каждого конкретного случая.
Это находит обычное устройство Arduino:
for port in serial.tools.list_ports.comports():
if "Arduino" in port.description:
print "Arduino device!"
Но я хочу что-то вроде этого:
for port in serial.tools.list_ports.comports():
if "proximity_sensor" in port.description:
print "My specific Arduino program!"
@Espen, 👍0
Обсуждение1 ответ
Лучший ответ:
На обычной плате Arduino нет, это невозможно с точки зрения скетча. С помощью платы Leonardo или аналогичной платы на базе ATMega32U4 можно задать уникальную комбинацию VID/PID и даже, возможно, специальные строки производителя и продукта. Возможно, вы сможете сделать это, создав собственное определение платы в файле boards.txt (или, возможно, манипулируя ядром AVR), но я никогда не пробовал такого рода вещи с Arduino, поэтому не могу ручаться, насколько это будет просто.
Однако (здесь идет бесстыдная самореклама...), если вы откажетесь от Arduino и будете использовать плату ChipKIT, такую как Lenny (или любую другую плату ChipKIT с прямым USB-разъемом), соединение, например, платы Fubarino), тогда можно создать полностью собственный профиль USB из вашего скетча, включая VID/PID, строки производителя и продукта и даже то, какие устройства реализует плата. Например:
USBFS usbDevice;
USBManager USB(usbDevice, 0xf055, 0x1234, "Espentech", "My Little Widget");
CDCACM USBSerial;
void setup() {
USB.addDevice(USBSerial);
USB.begin();
}
void loop() {
USBSerial.println(millis());
delay(1000);
}
Что приводит к:
[ 661.328155] usb 2-1.2.7: new full-speed USB device number 10 using ehci-pci
[ 661.458613] usb 2-1.2.7: New USB device found, idVendor=f055, idProduct=1234
[ 661.458616] usb 2-1.2.7: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 661.458619] usb 2-1.2.7: Product: My Little Widget
[ 661.458621] usb 2-1.2.7: Manufacturer: Espentech
[ 661.458623] usb 2-1.2.7: SerialNumber: CK2660A05312F3
[ 661.459181] cdc_acm 2-1.2.7:1.0: ttyACM0: USB ACM device
- Отправлять числа в arduino через последовательный порт с помощью python
- Устройства CH340G и CP2102 не распознаются Thinkpad L380
- Не удается связаться с ардуино с помощью python (Windows)
- Максимальная последовательная скорость CH340
- Последовательная связь Arduino с Python: отправка массива
- Построение графика на Python с использованием Tkinter Canvas
- Можно ли загрузить скетч Arduino через последовательный порт (RX) вместо USB?
- Как отправить целое число через pyserial с Python на Arduino и получить тот же результат?
Использовать параметр
serial_number
, чтобы найти конкретную плату?, @MajenkoДа, это найдет одну конкретную доску. Я хочу найти серию плат со специфическим программированием. Я обновлю свой первоначальный вопрос, чтобы прояснить это., @Espen