LINUX.ORG.RU

История изменений

Исправление KivApple, (текущая версия) :

В смысле? Не понял вопроса.

Отличить CH340 от FT232 - легко. У них разные USB VID:PID, USB строки описания и т. д. Я лично обычно работаю с портами через QSerialPort. И он возвращает всю эту информацию при перечислении портов. Можно сделать то же самое и вручную. Также можно пошаманить с правилами udev, чтобы создавать симлинк для интересующего устройства (опять же на основе VID:PID и прочих USB атрибутов).

Отличить две платы с CH340 сложнее. Во-первых, можно это делать по USB-порту, в который они вставлены (вроде как информацию об этом можно получить через libusb). Во-вторых, у CH340 может быть какой-то способ (у FT232 точно есть) менять некоторые параметры (сменить VID:PID, задать серийный номер и т. д.) через спецсофт. В таком случае можно использовать те же алгоритмы, что и в прошлом случае. По идее это наиболее правильный вариант.

Или ты имеешь ввиду отличить ATMEGA от CH340? Ну как бы если ты запилишь USB-устройство на базе ATMEGA, то можешь задать произвольные VID:PID, серийный номер и т. д. Плюс вообще реализовать не USB CDC, а иной интерфейс (тем более, что USB CDC не очень хорошо через V-USB делается, насколько я помню, используются нарушения стандарта USB и это работает не со всеми ОС и не на всех ядрах Linux). С этим проблем нет.

Если же ты просто будет работать с ATMEGA через UART, то с точки зрения компьютера не будет никакой ATMEGA. Будет лишь виртуальный COM-порт на базе CH340, в который можно слать байтики и из которого можно получать байтики. Микроконтроллер в свою очередь ничего не будет знать про компьютер, ему просто кто-то будет присылать байтики на его UART. Так что тут всё совершенно прозрачно и никакого различения не нужно.

Исходная версия KivApple, :

В смысле? Не понял вопроса.

Отличить CH340 от FT232 - легко. У них разные USB VID:PID, USB строки описания и т. д. Я лично обычно работаю с портами через QSerialPort. И он возвращает всю эту информацию при перечислении портов. Также можно пошаманить с правилами udev, чтобы создавать симлинк для интересующего устройства (опять же на основе VID:PID и прочих USB атрибутов).

Отличить две платы с CH340 сложнее. Во-первых, можно это делать по USB-порту, в который они вставлены (вроде как информацию об этом можно получить через libusb). Во-вторых, у CH340 может быть какой-то способ (у FT232 точно есть) менять некоторые параметры (сменить VID:PID, задать серийный номер и т. д.) через спецсофт. В таком случае можно использовать те же алгоритмы, что и в прошлом случае. По идее это наиболее правильный вариант.

Или ты имеешь ввиду отличить ATMEGA от CH340? Ну как бы если ты запилишь USB-устройство на базе ATMEGA, то можешь задать произвольные VID:PID, серийный номер и т. д. Плюс вообще реализовать не USB CDC, а иной интерфейс (тем более, что USB CDC не очень хорошо через V-USB делается, насколько я помню, используются нарушения стандарта USB и это работает не со всеми ОС и не на всех ядрах Linux). С этим проблем нет.

Если же ты просто будет работать с ATMEGA через UART, то с точки зрения компьютера не будет никакой ATMEGA. Будет лишь виртуальный COM-порт на базе CH340, в который можно слать байтики и из которого можно получать байтики. Микроконтроллер в свою очередь ничего не будет знать про компьютер, ему просто кто-то будет присылать байтики на его UART. Так что тут всё совершенно прозрачно и никакого различения не нужно.