Как определить, какая скорость передачи данных установлена для виртуального COM-порта?
Я хотел бы, чтобы мое программное обеспечение, работающее на Leonardo, вело себя по-разному в зависимости от скорости передачи данных USB Serial, установленной ПК. Например, я хочу сделать умный преобразователь USB в UART, который выполняет некоторую обработку передаваемых им данных. Было бы гораздо элегантнее установить скорость передачи данных UART на любое значение, запрашиваемое ПК на стороне USB, а не жестко кодировать значение.
Насколько мне известно, чип 32u4 используется в качестве преобразователя USB в UART на Mega, где он поддерживает разные скорости передачи данных, так что это должно быть осуществимо.
У меня также есть плата Teensy 3.2, так что если кто-нибудь знает, как определить скорость передачи данных на этой плате, мне тоже интересно.
1 ответ
Лучший ответ:
Из исходного кода следует, что на платах на базе 32u4 Serial
включает дополнительные методы для доступа к настройкам с USB-хоста:
см.: https://github.com/arduino/ArduinoCore-avr/blob/b7c607663fecc232e598f2c0acf419ceb0b7078c/cores/arduino/USBAPI.h#L129
Из USBAPI.h:
// Они возвращают настройки, указанные хостом USB для
// последовательный порт. Они на самом деле не используются, но предлагаются здесь
// в случае, если скетч хочет действовать в соответствии с этими настройками.
uint32_t baud();
uint8_t stopbits();
uint8_t paritytype();
uint8_t numbits();
bool dtr();
bool rts();
- Может ли Arduino Leonardo одновременно использовать USB-порт и последовательные контакты RX TX?
- Mac не обнаруживает последовательный порт для Леонардо
- Последовательная связь между Teensy и Teensy через USB-разъем
- Максимальная последовательная скорость CH340
- Можно ли загрузить скетч Arduino через последовательный порт (RX) вместо USB?
- Внешнее питание 5 В и последовательный порт USB
- Можно ли использовать Serial.print(сообщение), когда USB-кабель не подключен к хост-компьютеру?
- Как установить последовательные драйверы FTDI на Mac?
Я попробовал. На Leonardo
Serial.baud()
срабатывает сразу после запуска последовательного порта, внутриsetup
. На TeensySerial.baud()
, похоже, возвращает 0 внутриsetup
, поэтому я жду внутриloop
, пока не будет возвращено ненулевое значение., @Dmitry Grigoryev