Не работает с виртуальным com портом

У STM32H743ZI не работает корректно CDC Virtual COM port через USB FullSpeed

Борюсь с виртуальным COM портом через USB FS, есть две платы моя собственная и Nucleo. На форуме ST создать тему мне не позволяют, а на сообщение в старой теме ни кто не ответил.

Использую CubeMX 5.2.1 и Firmware FW 1.4.0. Windows 10 определяет COM port, но вот общаться через него нормальным способом не удается. В терминальных программах PuTTY, Real term выдается сообщение, что не верные параметры порта, такое же исключение выбрасывает C# и Qt при попытке открыть порт («The parameter is incorrect»). Параметры пробовал разные и самые простые из настроек драйвера по умолчанию 8 бит, 9600, без четности, 1 стоп, без flowcontrol (в Linux все работает при любых параметрах, что в Qt, что в терминальных программах). Пробовал использовать драйвер Windows по умолчанию и устанавливать с сайта ST для Windows 7 — поведение одинаковое.

В Windows 10 удается однако тоже общаться через COM порт с помощью программы TeraTerm или пользуясь Си функциями: fopen(«COM6», «r+»), fwrite, fread, fclose — т.е. без всяких параметров работы порта. Но хотелось бы, чтобы порт мог работать нормально со всеми программами.

Такое впечатление, что драйверу COM порта не удается записать параметры в USB устройство и он поэтому не хочет с ним работать, Linux видимо такие проверки записываемых параметров не делает.

Читайте также:  Как починить зарядку от самсунга

Пробовал использовать более старые версии CubeMX 4.27.0 и FW 1.3.2 там дела еще хуже — компьютер не видит USB устройство. Точнее, если загрузить и запустить быстро прошивку после более новой, новый COM порт с другим номером появляется и даже работает через PuTTY, но стоит включить/выключить питание COM порт не появляется, так же если просто начисто загрузить прошивку, т.е. FW 1.3.2 не устанавливает соединение (VBUS sense включено, но не работает)

Добавлено через 21 минуту
Размер кучи увеличиваю до 0x400

В файле usbd_desc.c исправляю ошибку

===>Device Descriptor This is a Communication Device
bDeviceSubClass: 0x02
*!*ERROR: bDeviceSubClass of 2 is invalid
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x40 = (64) Bytes
idVendor: 0x0483 = STMicroelectronics
idProduct: 0x5740
bcdDevice: 0x0200
iManufacturer: 0x01
English (United States) «STMicroelectronics»
iProduct: 0x02
English (United States) «STM32 Virtual ComPort»
iSerialNumber: 0x03
English (United States) «383A34463137»
bNumConfigurations: 0x01

на bDeviceSubClass 0x00

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Источник

Не работает с виртуальным com портом

Последовательный или COM-порт — это интерфейс стандарта RS-232, который служит для подключения различного оборудования к компьютеру. Из-за ограничения в размере информации (1 бит), передаваемой за один раз, данный порт получил второе название: последовательный. Интересным является тот факт, что в различных интерфейсах, таких как Ethernet или USB информация передаются также — последовательно, однако, такое название за ними не закрепилось.

Что делать если в компьютере нет COM-порта?

Изначально COM-порты использовались для подключения терминалов, модемов и мыши. В современное время основное назначение сводится к подключению всевозможных источников питания, микроконтроллеров, вычислительных систем, кассовых аппаратов и других устройств. Также COM-порт очень активно использовался для синхронизации компьютеров: к примеру, ноутбука с персональным компьютером. Сейчас такой подход сменился использованием USB-порта.

Что такое виртуальный COM-порт?

Виртуальный COM-порт воображает себе наша операционная система, при этом он отсутствует физически. Для «воображения» существуют специальные программы, одну из которых мы рассмотрим позже.

Для чего используется?

Поняв, что такое реальный COM-порт и для чего он используется, без труда можно представить себе необходимость в виртуальном COM-порте. Представьте: вам нужно подключить вычислительное устройство к компьютеру через COM-порт. Но у вас его нет! Или же подключить несколько устройств, а порт всего один. Как быть в такой ситуации? Спасает именно создание виртуального порта.

Таким образом, виртуальный порт позволяет имитировать его присутствие в компьютере при отсутствии оного. Примеровприменения довольно много. Однако наиболее часто виртуальный COM-порт применяется:

  • При необходимости подключить несколько устройств одновременно.
  • При необходимости отладить (протестировать, найти ошибки) программу для вычислительного устройства при отсутствии порта.

Как создать виртуальные порты?

Для их создания предусмотрены специализированные программы. Стоит выбирать те, которые предлагают нам установить нужные для виртуальных портов драйвера, поскольку их поиск — не очень приятное занятие.

Скачайте и установите программу Advanced Virtual COM Port. Установка занимает считаные минуты, при этом на одном из этапов нам предложат драйвер:

Программа для настройки виртуального com-порта в windows

Соглашаемся и нажимаем «Установить». Следует подождать несколько минут — не пугайтесь, если потребуется 5–10 минут. Это нормально.
После установки, заходим в программу и видим главное окно:

Кернел про -для настройки виртуального com-порта в windows

Оно содержит три основных вкладки: Общие (расширенные), клиентские и локальные порты.

Вкладка общие (или расширенные) порты позволяет делиться COM-портами через локальную сеть (LAN) или интернет. Таким образом, данные с виртуальных портов могут быть легко и быстро переданы другим пользователям.
Вкладка клиентские порты позволяют создавать порты на компьютере, которые подключаются к расширенным портам через виртуальный кабель нуль-модема. Стоит сказать, что виртуальный кабель программа предусматривает автоматически.
Вкладка локальные порты даёт возможность просматривать, создавать и удалять все пары виртуальных COM-портов.

Перейдём во вкладку локальные порты и нажмём кнопку Add. Перед нами откроется окно, предлагающее создать пару COM-портов, которые предполагаются быть соединёнными виртуальным нуль-модемным кабелем:

Создание виртуального com-порта в windows7

Жмём ОК. Переходим в Панель управления -> Система -> Диспетчер устройств.
Видим, что наши COM-порты были успешно созданы:

Виртуальные com-порты windows

Взаимодействие расширенных и клиентских COM-портов

Скорее всего, непонятным остаётся вопрос взаимодействия этих двух вкладок. На самом деле всё просто: расширенные порты позволяют делиться своими com-портами, то есть всей информацией, что доступны с устройств, подключённых к этим портам. Они подключаются к клиентским: тем, которые получают всю необходимую информацию.

Для создания расширенного порта достаточно в первой вкладке нажать кнопку Add и выбрать порт, которым мы делимся:

Расшаренный com-порт windows

Для создания клиентского порта, переходим во вторую вкладку, нажимаем кнопку Add и выбираем сначала порт, который хотим сделать клиентским, а затем адрес компьютера, к порту которого мы хотим подключиться:

Клиентский com-порт windows

Итоги

За бортом осталось ещё много чего интересного на тему COM-портов. Хотя эта технология и отходит на второй план с развитием других интерфейсов для подключения устройств, тем не менее пока что она всё ещё активно используются и знать тонкости её работы очень полезно.

Admin

IT-cпециалист с высшим техническим образованием и 8-летним опытом системного администрирования. Подробней об авторе и контакты. Даю бесплатные консультации по информационным технологиям, работе компьютеров и других устройств, программ, сервисов и сайтов в интернете. Если вы не нашли нужную информацию, то задайте свой вопрос!

Источник

В чем проблема с виртуальным COM-портом STM32? Я не могу это открыть

У меня есть плата Nucleo STM32H743ZI. Я использую CubeMX HAL (я пробовал несколько версий) и TrueStudio. «Виртуальный COM-порт» появляется в Windows 10 (я пробовал драйвер Windows по умолчанию и драйвер ST), но не могу открыть порт. Моя C # программа пишет мне «Параметр неверен», когда я пытаюсь открыть его:

То же сообщение пишет мне программа Realterm, PuTTY ничего не делает и программа «Tera Term» работает правильно — я могу отправлять и получать данные в мою программу MCU.

Может кто-нибудь знает что это?

В моей программе на C # и в терминальных программах я использую одни и те же параметры

Информация о USB-устройстве просмотра:

2 ответа

У меня была такая же проблема, я мог прочитать устройство и увидеть, какой com-порт, но я не мог открыть его. (для CDC)

Там упоминается, что вам нужно добавить несколько линий, если вы хотите связываться с RS232 через VCP.

Я добавил следующее в файл usbd_cdc_if.c:

И настроил функцию CDC_Control_FS:

Я надеюсь, что это все еще полезно для вас.

Прошивка FW1.4.0 для STM32H7 работает некорректно. Я должен использовать FW1.3.2 и CubeMX 5.2.1.

Но если я инициализирую шину FMC, виртуальный COM-порт снова работает некорректно, если я комментирую инициализацию, он снова работает правильно

Интересно, что функции C: «fopen (« COM6 »,« r + »), fwrite, fgetc, fclose» — работают в Windows 10 с FW1.4.0 без настройки порта. Ошибка FW1.4.0 в записи параметров порта (в бодах, битах или других) и драйвер Windows виртуального COM-порта возникает исключение, если не может записать параметры в USB-устройство

Источник

Не работает с виртуальным com портом

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Имею Windows 7. Поставил на неё VirtualBox под Windows XP. Настройки com-порта в VirtualBox неактивны. Соответственно, в диспетчере устройств XP com-порта нет.

Кто знает, куда копать?

группа: участники+
сообщений: 18 370
проживает:
Россия, 76

aik Выключить виртуальную машину, добавить порт в её настройках.
Если она включена или на паузе стоит, то настроек показывается сильно меньше, чем у выключенной.

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн Я её выключал – всё тоже самое.

группа: участники+
сообщений: 18 370
проживает:
Россия, 76

aik

Ну не знаю. У вас там что, вообще вкладки «com-порт» нету?

Присоединённое изображение

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн Чудеса какие-то. Сейчас включил — чек-бокс напротив «Включить последовательный порт» активен стал.

группа: участники+
сообщений: 63 673
проживает:
Россия, Зеленоград

Vladimir_Y С ВиртуалБоксом такое бывает. Подозреваю, что там у него внутре есть какая-то машинерия, которая отсекает все потенциальные неприятности ещё на уровне пользовательского интерфейса. И работает с большим запасом, поэтому очень даже неторопливо.

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн А всё равно запустить не могу. Включаю как хост-устройство, указываю путь к устройству «/dev/ttyS0», а сессия не открывается. Машина пишет «Failed to open host device ‘\dev\ttyS0’ (VERR_PATH_NOT_FOUND)».

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн Разобрался. Надо было COM1 прописать, это же не Линукс.

А теперь самое главное, ради чего это всё затевалось. Мне нужно повесить usb-устройство на виртуальный com-порт.
Так вот. Я пытаюсь это сделать, но не выходит. Прописываю путь к виртуальному порту как «COM3», а виртуальная машина, сволочь такая, пишет мне «Failed to open host device ‘\dev\ttyS0’ (VERR_PATH_NOT_FOUND)».
Не понимаю, куда дальше двигаться.

Присоединённое изображение

группа: участники+
сообщений: 18 370
проживает:
Россия, 76

aik

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн Да, есть usb-устройство, которое не вешается на хостовую ось, потому что драйвер виртуального com-порта под него есть только для XP.
В виртуальной машине при установке драйвера виртуальный com-порт замечательно создаётся, но я не могу его включить.

группа: участники+
сообщений: 18 370
проживает:
Россия, 76

aik

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн Если честно, ничего не понял. А можно подробней, что именно мне сделать нужно?

группа: участники+
сообщений: 63 673
проживает:
Россия, Зеленоград

Vladimir_Y Если у тебя USB-устройство, то подключаешь его к виртуальной машине как USB-устройство, а драйверы ставишь уже на саму виртуальную машину. Так и проще, и надёжнее.

группа: участники+
сообщений: 18 370
проживает:
Россия, 76

aik

Идёте на вкладку usb и добавляете там нужное устройство. Тогда виртуальная машина считает, что оно подключено непосредственно к ней, а хосту на него становится пофиг.

Присоединённое изображение

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн Ну вот, подключил. А как COM3, который я вижу в диспетчере устройств виртуальной машины, теперь задействовать?

Присоединённое изображение

группа: участники+
сообщений: 18 370
проживает:
Россия, 76

aik

Теперь ставьте внутри виртуальной машины драйвера на устройство — оно должно было появиться в диспетчере устройств.
И пользуйтесь.

группа: участники+
сообщений: 56 889
проживает:
Россия, Питер

Chief

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн

группа: участники+
сообщений: 18 370
проживает:
Россия, 76

aik

Судя по скриншотам, он у вас появился до того, как вы пробросили usb-устройство в виртуальную машину.

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн Ну да. Он появился после того, как я инсталлировал драйвер и включил com-порт в настройках виртуальной машины.

группа: участники+
сообщений: 18 370
проживает:
Россия, 76

aik

По-моему, мы тут все запутались. Давайте сначала.

Я так понимаю, что у вас есть устройство без драйверов под семерку. Потому вы хотите его запустить в виртуальной машине с ХР.
Так?

Пошаговая инструкция:
1) Ставьте ХР
2) Пробрасывайте ваше usb-устройство в ХР
3) Ставьте там драйвера и работайте с ним.

Всё. Никаких com-портов в настройках виртуальной машины для этого добавлять не надо.

группа: участники+
сообщений: 23 091
cтрана: Россия

alibek 4. Не всегда USB-устройства по такой схеме работают. Я сталкивался с тем, что устройство «прокидывается» в гостевую систему, в ней появляется, на устройство успешно устанавливаются драйвера, специализированное ПО это устройство видит. Но не работает.

группа: участники+
сообщений: 18 370
проживает:
Россия, 76

aik

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн Не, не выходит каменный цветок. Приложение com-порт требует.

Присоединённое изображение

группа: участники+
сообщений: 18 370
проживает:
Россия, 76

aik

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн Он возникнет, только если я задействую этот порт в виртуальной машине (оставив выключенным, иначе виртуальная машина падает при запуске, требуя адрес).

А ссылочку на драйвер под семёрку можно?

группа: участники+
сообщений: 63 673
проживает:
Россия, Зеленоград

Vladimir_Y

группа: участники+
сообщений: 18 370
проживает:
Россия, 76

aik

«Аппаратные» порты тут не причем. Их трогать вообще не надо.
У вас при установке драйверов на девайс должен возникать виртуальный com-порт.

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн

Он не возникает.

Под 32-bit, к сожалению.

CODE
FILEOS VOS_NT_WINDOWS32

группа: участники+
сообщений: 18 370
проживает:
Россия, 76

aik

группа: участники+
сообщений: 42 349
проживает:
Россия, Краснодар

Дн Скачал с официального сайта OTI драйвера под XP (там они помечены как 98-2000, но в пакете есть и для XP). Установил их в виртуальную машину, отдав команду заменить более новые более старыми.
Инсталлятор предложил вынуть устройство и вставить его вновь, после чего в диспетчере устройств хост-машины появился контроллер VirtualBox USB, а в настройках виртуальной машины появилась возможность добавить фильтр OTi USB-UART Tx Line (0100). Так что предыдущий фильтр я отключил и добавил этот.
Ну и ура! Теперь я вижу в виртуальной машине виртуальный порт COM3.
На нём телефон не виден, потому что на этом же прерывании сидит COM1 хост-машины, так что я перенастроил на COM4. В общем, всё получилось.

aik, большое спасибо за содействие. Ну и другим за участие.

Источник

Оцените статью