Дублируем Telnet в Serial, или как получить COM-порт для связи с контроллером через Wokwi + VS Code

CrazyMax

✩✩✩✩✩✩✩
28 Окт 2023
2
0
Saratov
Здрасте. Как и многие, я столкнулся с проблемой: в симуляторе Wokwi внутри VS Code ужасный терминал. Но Wokwi его дублирует по Telnet.
AlexGyver'у нужен был плоттер графиков из Serial симулируемого в VS Code контроллера - он написал его на Processing.
Я пошёл дальше - захотел сделать виртуальный COM-порт, через который можно общаться с симулируемым контроллером.

Немного теории:
Есть программы, делающие пару виртуальных портов: что отправляется в первый порт, приходит во второй и наоборот.
Также есть скрипт: то, что приходит по Telnet, отправляется в Serial и наоборот.

Настройка и запуск:

Для Windows:

Необходимо скачать и распаковать архив: https://disk.yandex.ru/d/JR2Z60z3IvcETQ
Там будет файл run.bat, который необходимо запускать для открытия моста. При первом запуске будут установлены драйвера.
Дальше необходимо будет разрешить приложению вносить изменения, и немного подождать. В итоге будет открыто два терминала: "C:/WINDOWS/system32/cmd.exe" и "Telnet to Serial". Для закрытия необходимо сначала закрыть второе окно, затем в первом ответить "n", и разрешить приложению вносить изменения.
!!! Важно: запускать файл необходимо после запуска сервера (симуляции в Wokwi) !!!

После запуска программы появится два COM-порта: COM_BUSY и COM_TELNET. Первый системный, он не откроется. Второй как раз порт контроллера в Wokwi. Данные будут отображаться на всех скоростях (9600 бод, 115200 бод и т.д.) одинаково.

1.
1751568617836.png
Такая ошибка означает, что программа была закрыта не правильно. Это предупреждение, его можно игнорировать, а можно исправить, запустив скрипт clear_com0com.bat.

Для Linux:
Инструкция появится позже

Так же я сделал web-плоттер: https://github.com/Crazy-Max-Blog/CrazyPlotter

Спасибо всем, кто дочитал статью до конца.
1751569438368.png
v0.2
 
Изменено:

CrazyMax

✩✩✩✩✩✩✩
28 Окт 2023
2
0
Saratov
Здрасте. Как и многие, я столкнулся с проблемой: в симуляторе Wokwi внутри VS Code ужасный терминал. Но Wokwi его дублирует по Telnet.
AlexGyver'у нужен был плоттер графиков из Serial симулируемого в VS Code контроллера - он написал его на Processing.
Я пошёл дальше - захотел сделать виртуальный COM-порт, через который можно общаться с симулируемым контроллером.

Немного теории:
Есть программы, делающие пару виртуальных портов: что отправляется в первый порт, приходит во второй и наоборот.
Также есть скрипт: то, что приходит по Telnet, отправляется в Serial и наоборот.

Настройка и запуск:
1. Настройка программ для виртуальных портов


com0com - https://sourceforge.net/projects/com0com/
По кнопке Download качается архив, оттуда берём установщик под свою разрядность системы.
Затем стандартная установка, после чего открываем новоустановленный Setup:
Посмотреть вложение 54640
Открываем его, разрешаем вносить изменения.
Выбираем "Virtual Port Pair 0", удаляем.
Посмотреть вложение 54641
Сверху будет "COM6" и "COM7", это как раз номера пары виртуальных портов. Я советую заменить их на "COM666" и "COM777", чтобы точно не было никаких пересечений.

Для Linux инструкция появится позже.

2. Настройка и запуск Python-скрипта

Python-файл доступен здесь: https://disk.yandex.ru/d/gh4iwYjcTOz8dw
Для его запуска соответственно необходим Python, информация о том, как его установить, прекрасно Яндексится.
В конце файла можно поменять номер виртуального порта и скорость, по которой всё будет работать. Изначально это "COM666", 115200;
Также потребуется установить библиотеки:
Bash:
pip install pyserial telnetlib3
В целом всё. Python-скрипт необходимо запускать после запуска симуляции, и можно использовать второй виртуальный порт.

Спасибо всем, кто дочитал статью до конца.
Посмотреть вложение 54642
v0.1