Как подключиться к com порту через терминал windows

TelemetryLabN85 Blog

Терминал (для работы с COM портом) под Windows.

    Зачем понадобилось создавать еще одну программу терминал ???

    На просторах интернета полно подобных программ ?!

    Что есть, то есть !

    Но есть маленькое НО, все дело в нюансах !

— Требуемый функционал был разбросан по нескольким программам и это было очень не удобно….

— Часть требуемых функций не было и вовсе…

— Часть программ банально падали в самый неподходящий момент….

— Часть функций реализованы с ошибками….

Так жить нельзя и работать тоже ….  :)

Значит надо создать свою программу, с необходимым функционалом.

 


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

с телеметрией. В проекте требовалось принимать и передавать данные через COM порт компьютера.

Проект готов и сдан. Программа осталась и продолжает использоваться по назначению, для отладки 

разного рода устройств  !

    На текущий момент программа продолжает дорабатывается, исправляются ошибки, добавляются

новый функции.

    В данной статье будут публиковаться все изменения и нововведения сделанные в программе.


Краткое описание программы.

    Программа создана в среде Microsoft Studio 2008, на языке VB.

Работоспособность проверенна в следующих ОС: Windows XP, Windows 7-32/64Pro, Windows 11-64Pro.

Репозитарий программы представлен на GitHub, готовый бинарный файл(exe) в виде Zip архива.

Собранная программа представляет из себя один запускаемый файл.

Программа не требует установки и работает из любого места.

Программа не требует для запуска привилегий администратора.

Программа может:

1. Подключаться к любому com порту в системе.

2. Выставлять параметры работы com порта, включая нестандартные скорости работы порта

(при условии что драйвер windows поддерживает нестандартные скорости,

хотя как показала практика погрешность может быть очень большой. 

Например: При заданной 250000 — в железе получаем 256000, ;(

увы точнее делитель не устанавливается….).

3. Производить запись принимаемых данных в файл.

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

5. Циклически передавать в порт строку с заданным интервалом времени.

6. Передавать в порт файл.

7. Проиграть сценарий из файла (передача данных + задержка между данными).

8. Показывать состояние линий: CTS, DSR, RI, CD.

9. Изменять состояние линий: DTR, RST.

Программа пока не может:

1. Разбирать ESC последовательности.

2. Вести историю передаваемых строк.

3. Передавать в порт кода нажатых клавиш в окне приема и передачи.

4. Показывать ответы (RX от устройства) при проигрывании сценария из файла.

5. Вести в логах длинную историю (автоматическое укорачивание при достижении заданной длинны).

На текущий момент планов по развитию и доработки программы много.

Обычно в процесс работы с программой, во время отладки очередного устройства,

появляется необходимость в новом функционале.

Так в программу попадает новый функционал, продиктованный практикой.

При добавления нового функционала в программу, иногда добавляются и проявляются

глюки (по недосмотру), прошу отнестись с понимание :)

Глюки исправляются, и новая версия выкладывается в репозитарий.

Исходники на GiHub.

Текущая версия: Скачать (exe) в Zip архиве.

На основе данной программы была создана еще одна утилита для работы по протоколу PELCO-D,

для тестирования и управления камерами и поворотными платформами.


19-12-2022 

Текущая версия: v1.5.0.

[+]  Исправление: Замораживание интерфейса терминала при приеме потока данных.

12-12-2022 

Текущая версия: v1.4.1.

[+]  Исправление: Не верная полярность сигналов CTS/DSR/RI/CD.

[+]  Исправление: Терминал вылетает с ошибкой при запуске, если в системе нет СОМ портов.

5-12-2022 

Текущая версия: v1.4.0 (По просьбе коллеги был добавлен новый функционал).

[+]  Новое: Вывод в строку статуса состояния сигналов CTS/DSR/RI/CD.

[+]  Новое: Добавлена возможность изменения состояния сигналов RTS/DTR.

1-6-2022 

Текущая версия: v1.3.8

[+]  Исправление: Вывод в TXT и HEX строки.

3-8-2021 

Текущая версия: v1.3.7

[+]  Исправление: Зависание программы при отключении COM порта из системы (выдернули кабель…). 

29-7-2021 

Текущая версия: v1.3.6

[+]  Исправление: Перепутаны STOP BIT 1.5 <-> 2. 

22-7-2021 

Текущая версия: v1.3.5

[+]  Исправление: Не корректный вывод кодов r n. 

8-6-2021 

Текущая версия: v1.3.4

[+]  Исправление: Подвисание интерфейса при приеме не отображаемых кодов (0x00-0x19). 

[+]  Исправление: Конвертации кодов n   ->  nr. 

3-12-2020 

Текущая версия: v1.3.2

[+]  Вывод подробного описания СОМ портов. 

[+]  Проигрывание сценария из текстового файла. 

 Пример сценария (Файл TXT), формат:

 81 01 04 07 03 FF
 > 100
 81 01 04 07 02 FF

 Где:
 81 01 04 07 03 FF  — значения байт в TXT-HEX формате отправляемых в СОМ порт.
 > 100                      — Формирование паузы 100 мс.
 81 01 04 07 02 FF  — значения байт в HEX формате отправляемых в СОМ порт.

[+]  Перевод строки в TXT-HEX виде в байтовый массив и передача в СОМ порт. 


15-05-2019 

Версия: v1.2.2

[+]  Добавлена история ввода передаваемых строк. 


 16-12-2018 

Версия: v1.2.1

[+]  Внесены изменения в интерфейс. Часть функций вынесены в окно приема. 

[+]  Добавлена функция Вкл/Выкл печати символа с кодом 0x0A.

        0x0D + 0x0A     ->     0x0D.

[+]  Решено: При закрытии порта продолжалась передача в порт.

[+]  Добавлена подсказка при наведении курсора на элементы управления.

[+]  При запуске программы производится автоматический поиск СОМ портов в системе.


 4-09-2018 

Версия: v1.1.0

[+]  Добавлена передача в порт кодов нажатых клавиш в окне приема и передачи.

  1. База знаний
  2. Программное обеспечение
  3. Статьи

Как работать с устройствами по COM-порту с помощью терминальной программы?


В различных инструкциях и руководствах вы можете увидеть рекомендации по работе с устройствами через терминальную программу. Как правило, такие действия производят с помощью HyperTerminal — стандартной программы в операционных системах Windows. Мы же рекомендуем использовать терминальную программу «Terminal v1.9b by bray», потому что это более гибкий и удобный в работе инструмент. Ниже мы расскажем как работать с нашими устройствами на примере именно этой программы.

В первую очередь подключите устройство, с которым собираетесь работать, к компьютеру через COM-порт. Подключите питание.
Теперь запустите Terminal v1.9b.

Image 53

Интерфейс и основные настройки подключения по порту

В верхнем поле находятся параметры подключения:

Image 46

  1. Колонка №1:
    Connect
    — кнопка для открытия COM-порта,
    Rescan — пересканировать список COM-портов,
    Help — справка,
    About.. — о программе,
    Quit — выход из программы.

    Колонка №2:

  2. Поле выбора номера COM-порта для подключения.
    Колонка №3:
  3. Выбор скорости COM-порта.
    Колонка №4:
  4. Выбор количества бит данных.
    Колонка №5:
  5. Выбор четности.
    Колонка №6:
    Выбор количества стоповых бит.
    Колонка №7:
  6. Выбор типа управления потоком.

В разделе Settings находятся дополнительные параметры. Они пригодятся для написания скриптов, работы с нестандартными скоростями или для записи лога от устройства.

Image 47

В разделе Recieve находятся параметры отображения ответа от устройства.

Image 48

В разделе Transmit находятся параметры передачи данных на устройство. Кнопки DTR и RTS устанавливают соответствующие выводы в положительное состояние.

Image 49

Макросы

Поле Macros предназначено для создания пользовательских быстрых клавиш.
Для этого нужно нажать на кнопку SetMacros и в открывшемся окне присвоить каждой кнопке определённую последовательность символов, которая будет отправляться на устройство.

Image 50

  1. Блок №1:
    Поле для ввода последовательности символов для отправки. Для того чтобы отправить специальные символы, необходимо воспользоваться ASCII таблицей и ввести код символа, предварительно экранировав его знаком «$«. Например, на картинке выше, вы можете видеть экранированный символ возврата каретки $0D (нажатие клавиши Enter)
    Блок №2:
  2. Здесь в левом поле задаётся имя кнопки, а в правом отображается сама кнопка.
    Блок №3:
  3. Тут задаётся задержка при автоматическом повторении команд.
    Блок №4:
  4. Включение автоматического повтора команды через интервал времени, заданный в п.3.

Кнопки Load и Save позволяют сохранить или загрузить файл с макросами, введёнными в этом окне.

Отправка и прием данных

Image 149

Блок №1:
В этом большом поле вы будете видеть ответы от вашего устройства.
Если в разделе «Settings» вы не забыли поставить галочку «Time«, то перед каждой строкой будет проставлена метка времени. Это бывает очень полезно при анализе логов с устройства.

Блок №2:
Тут находится поле для отправки текста сообщений. Установленная галочка «+CR» будет дописывать к отправляемому сообщению символ возврата каретки (эмулировать нажатие клавиши Enter). Кнопка «->Send» отправит ваше сообщение на устройство.

Блок №3:
В самом низу находится поле, где вы можете видеть отправленные на устройство команды.
Теперь вы знакомы с интерфейсом Terminal 1.9b!

Как происходит общение с устройством, вы можете посмотреть в этих статьях:

  • Настройка модемов для работы по технологии CSD.
  • Проверка работоспособности передачи данных по технологии CSD.

Статья

Эта статья была полезна для 127 людей. Эта статья помогла Вам?

Сервис поддержки клиентов работает на платформе UserEcho

imageI hope that this blog post is found and helps someone. I wasn’t sure what to title it. Hope Google Juice got you here!

Read this whole post, there’s a lot initially but there’s really just two or three small pieces. It’ll be worth it because you’ll be able to have a nice one click menu and drop directly into a serial port terminal on Windows in the Windows Terminal

Often when you’re doing embedded systems development you’ll want to monitor or talk to the COM/Serial Port just like you SSH into remote system. Folks ask questions like «How to connect to a serial port as simple as using SSH?»

On Linux you’ll use things like «screen /dev/ttyS0» for COM0. With Windows, however, the historical guidance has always been to use Putty. It’ll work but it’s somewhat old, quirky, and it doesn’t integrate well with the Windows Terminal and a more modern workflow.

Say I have a small embedded microcontroller device that talks over a COM Port (usually via a USB->COM bridge) like an Arduino.

Let’s assume this device talks to the COM port as if it were a terminal and it’s outputting stuff I want to see. I’ll use this great little CLI example app for Arduino from Mads Aasvik to simulate such a device.

Here’s what it looks like under Arduino’s Serial Monitor, for example. This is a Windows app doing serial communication with its own interface wrapping around it. I want to do this at a command line, and bonus points if it’s in Windows Terminal.

Serial port monitor in Arduino talking to a Command Line Interface

Setup WSL1

If you have Windows 10 you can the Windows Subsystem for Linux quickly with this command at a Admin prompt:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Then go to the Windows Store and get any small Linux. Ubuntu or Kali will do for our purposes. Run it and set your user and password.  (I tried Alpine but it still has issues with screen and /dev/null/utmp)

NOTE: If you are using WSL2 and have set it as default, run wsl —list -v and ensure that your new distro is using WSL1 as only WSL1 will let us talk to the COM Ports. You can change it to WSL1 with «wsl —set-version DISTRONAME 1» from any command prompt.

To test this out now, run your new distro from any command line prompt like this. Add the «screen» app with sudo apt update» and «sudo app install screen«.

You can see here that my Arduino serial device is on COM4. On Linux that device is /dev/ttyS4

Arduino is on COM4

That means that I should be able to talk it from any WSL1 Linux Distro on Windows like «screen /dev/ttyS4 9600» where 9600 is the speed/baud rate.

> wsl --list -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 2
kali-linux Stopped 1
Ubuntu-20.04 Stopped 2
WLinux Stopped 2

Get Minicom on your WSL1 distro

Screen is somewhat persnickety for Serial Port work so try Minicom. Minicom is a nice little text com program. Install with apt install minicom and run for the first time with «sudo minicom -s» to set your default. Note I’ve change the default port from /dev/modem to /dev/ttyS4 and the speed, in my case, to 9600.

Setting up Minicom on WSL

Then I hit enter and save settings as the dft (default) in minicom. You can also turn on Local Echo with «Ctrl-A E» and toggle it if needed. Now I can talk to my Arudino with minicom.

Ensure dialout permissions to talk to the COM port

NOTE: If you get «cannon open /dev/ttyS4: Permission denied, you may need to add your user to the dialout group. This way we don’t need to sudo and get no prompt when running minicom!

> wsl -d kali-linux minicom
minicom: cannot open /dev/ttyS4: Permission denied
> wsl -d kali-linux
$ groups scott
scott : scott adm cdrom sudo dip plugdev
$ sudo gpasswd --add scott dialout
[sudo] password for scott:
Adding user scott to group dialout

I can now run minicom on my configured COM port 4 (/dev/ttyS4) with wsl -d DISTRONAME minicom without sudo.

Here I’m talking to that Arduino program. This embedded app doesn’t need to me hit enter after I type, so remember your own embedded devices will vary.

Serial port shell with WSL and Minicom

Make a nice menu

Bonus points, now I’ll add a menu item for Minicom by changing my Windows Terminal settings AND I’ll get more points for adding a nice serial port icon!

Cool icon in Windows Terminal for Serial Ports

I hit settings and add a new profile like this at the top under profiles in the «list.» Again, your distro name will be different.

{
"guid": "{61c54bbd-a2c6-5271-96e7-009a87fa45cf}",
"name": "Minicom on Serial COM4",
"hidden": false,
"commandline": "wsl -d kali-linux minicom",
"startingDirectory": "%USERPROFILE%",
"icon": "C:/Users/scott/Desktop/serial_port_icon_138204.png"
},

To review:

  • Use a WSL1 distro
  • Install minicom, run with minicom -s once to make settings
    • Make sure you are using the right /dev/ttyS0 device for your situation
    • Ensure your flow control, baud, etc are all correct in minicom
    • Add your user to the dialout group so you don’t have to sudo minicom
  • Make a menu item in Windows Terminal
    • or run minicom manually in your WSL1 instance whenever you like

Hope this helps!


Sponsor: Suffering from a lack of clarity around software bugs? Give your customers the experience they deserve and expect with error monitoring from Raygun.com. Installs in minutes, try it today!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook
twitter
subscribe
About   Newsletter

Hosting By
Hosted in an Azure App Service

Is there any way to connect and communicate with a COM port (e.g. COM4) using windows terminal (Windows 8 <) inbuilt commands or using a batch program?

MODE COM4:9600,N,8,1,P

Above command displays the confugurations of COM4. But how I can send or receive data?

Carlos E. Ferro's user avatar

asked May 24, 2016 at 3:48

Ruchira's user avatar

1

use windows powershell

Writing to a Serial Port

PS> [System.IO.Ports.SerialPort]::getportnames()
PS> $port= new-Object System.IO.Ports.SerialPort COM4,9600,None,8,one
PS> $port.open()
PS> $port.WriteLine(“Hello world”)
PS> $port.Close()

Reading from a Serial Port

PS> $port= new-Object System.IO.Ports.SerialPort COM4,9600,None,8,one
PS> $port.Open()
PS> $port.ReadLine()

answered May 24, 2016 at 4:15

WildCard's user avatar

WildCardWildCard

5073 silver badges8 bronze badges

1

Identify connected COM ports:

mode
powershell -c "[System.IO.Ports.SerialPort]::getportnames()"

Send message with CR/LF:

echo hello >COM4

Send a file:

type file.txt >COM4

Read COM port:

type COM4

The better interactive way is to use Putty or minicom from within WSL 1!

answered Jan 10 at 21:20

gavenkoa's user avatar

gavenkoagavenkoa

43.6k17 gold badges243 silver badges295 bronze badges

Меня часто спрашивают, как настроить подключение через COM (RS-232) порт в Putty.
Это делается очень просто. Сначала узнаем в диспетчере устройств номер нужного нам COM порта.

Для этого вызываем диспетчер устройств: Win + R->mmc devmgmt.msc->Enter

и находим номер, нужного нам, порта.

Номер порта

putty_com_2

в моем случае это COM3

Теперь запускаем Putty и настраиваем его.

putty_com_1

Connection type: Serial – последовательное подключение.
Serial line: COM3 – номер COM порта.
Speed: 9600 скорость передачи информации.

И нажимаем Open (хотя можно сначала сохранить, чтобы каждый раз не вводить).

Если все сделано правильно – поздравляю. Мы подключились.

Заказать создание и поддержку безопасной IT-инфраструктуры любой сложности

Быть уверенным в своей IT-инфраструктуре – это быть уверенным в завтрашнем дне.

Для того, чтобы сделать заказ:

Безопасные и надежные IT решения

Представляю очередную версию программы для работы с COM-портом TerminalTMB. Предыдущая статья и версии программы, доступны по ссылке. Идея создания данного проекта возникла после непродолжительного поиска на просторах сети терминала с нужным функционалом. Отправить байт, строку, увидеть принимаемые данные, записать лог, запомнить отправленные строки — это стандартный набор возможностей большинства подобных программ, но для моей деятельности этого мало. Некоторые идеи взял из других подобных программ и развил дальше, но пока не реализовал подсветку строк, не добавил возможность построения графиков, сценариев, как в Terminal 1.9b, Al_Terminal. Пока не реализована возможность прослушивания порта, как умеет COM Port Toolkit. Это всё будет в будущем по мере развития проекта. Есть программа работы с более богатым и гибким функционалом – Обсервер, но она и сложнее для использования.

Окно программы

В представляемом терминале собрал следующие возможности и умения, которые мне потребовались в процессе творческой деятельности для устранения рутины:

Основные возможности терминала.

  • удобное хранение и использование 4800 макросов, разбитых на 100 списков с полным описанием каждого макроса;
  • работа в HEX и ASCII режиме;
  • 4 режима отправки команд из консольной строки: ручной, периодический, после ответа и при нажатии на кнопку с макросом;
  • отправка команд из файла;
  • отправка файлов размером до 16 МБ;
  • отправка списков команд с настраиваемыми временными интервалами;
  • эмулирование ответов на запросы (до 320 запросов по 16 возможных ответов на каждый запрос, конфигурации можно сохранить и прочитать из файла);
  • режим прямой отправки кодов символов с клавиатуры в момент нажатия клавиш;
  • настройка условий для разделения строк;
  • настройка условий для очистки лога;
  • одновременный просмотр лога в HEX и ASCII-режимах;
  • фильтрация сообщений перед выводом в лог;
  • захват нужных подстрок с остановкой прокрутки лога;
  • настройка условий для автоматического разворачивания окна терминала из свёрнутого состояния;
  • ведение статистики;
  • логирование событий в файл;
  • запись текстового и бинарного лога с любым расширением;
  • настройка цветов и шрифтов, возможность быстрого поиска по началу введённой команды из списка ранее отправленных;
  • вывод лога через прямой и инверсный фильтр, когда нужно выводить ссобщения с заданной подстрокой или игнорировать только их;
  • отправка команд в HEX или ASCII и приём ответов в любом одном или одновременно двух указанных режимах.

После копирования программы в пустую папку и её запуска создаются несколько пустых файлов для хранения настроек конфигурации, ранее отправленных команд и макросов, после чего открывается главное окно программы:

Окно программы

Настройки порта

При нажатии кнопки «Port» выполняется считывание существующих портов из реестра OC Windows, затем предлагается выбрать нужный порт для подключения. Первым в списке предлагаемых портов будет последний использованный, если такой был.

TerminalTMB v3

В открывшемся окне будет предложено выбрать порт и задать его настройки. Если скорость порта нестандартная, то в соответствующем окне можно вручную ввести необходимое значение. В настройках порта имеются две опции для настройки автоматического соединения. Первая нужна для случая, когда порт временно пропадает из системы и заново появляется в ней, например, при перезапуске микроконтроллера устройства или при переподключении кабеля USB. Вторая опция настройка автоматического соединения отвечает за автоматическое нажатие кнопки Connect после запуска терминала. В этой ситуации вероятна ситуация, когда терминал намертво зависнет (порт прописан в файле конфигурации, но из системы удалён вместе с переходником usb-com) и потребуется нажать три кнопки, но после данного способа выхода при повторном запуске эта опция будет отключена.

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

TerminalTMB v3

Работа с логом

TerminalTMB v3

На данной панели имеется команда очистки окна лога, окно ввода строки фильтра и настройки реакции программы при получении пакета, содержащего в себе заданную последовательность.
Miss – не выводить сообщения, содержащих подстроку из окна фильтра;
Out – в окно лога выводятся только те пакеты, которые содержат указанную подстроку;
Capt – при появлении пакета с заданной подстрокой окно лога останавливается;
No – никакое действие не выполняется (на случай, если нужно временно отключить фильтр);
Auto scroll – автоматическая прокрутка окна лога вниз при получении очередной порции байтов.
В окне статистики работы терминала отображается значение счётчика полученных подстрок, заданных в фильтре:

TerminalTMB v3

Для отображения данной статистики нужно нажать кнопку «Show stat»

TerminalTMB v3

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

«||» — кнопка остановки лога с последующим просмотром в отдельном окне, при этом в главном окне запись лога будет продолжаться. Для возврата в главное окно лога нужно нажать данную кнопку ещё раз (в это время на ней будет символ «>»).

Настройки программы

TerminalTMB v3

Start log – кнопка запуска записи лога. После её нажатия будет предложено ввести префикс названия файла, выбрать тип записываемого файла и записываемые данные: отправляемые и/или принимаемые данные для каждого записываемого файла.

TerminalTMB v3

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

После завершения записи лога будет предложено открыть записанные файлы для просмотра в блокноте.

TerminalTMB v3

Файлы логов также можно просмотреть до остановки записи, нажав одну из соответствующих кнопок:

TerminalTMB v3

При нажатии данных кнопок откроется проводник для выбора файла, при этом в качестве пердвыбранного будет задано имя текущего файла.

Second Window – включение второго окна вывода лога, в котором можно указать режим вывода (ASCII или/и HEX) и направление выводимых сообщений (TX и/или RX). На скрине показан пример использования дополнительного окна, когда в левом окне отфильтрованный лог, а в правом полностью весь лог отображается. В левом окне запрещено выводить сообщения, содержащие подстроку “AT+”, в правом окне настроен вывод только прочитанных сообщений и только в формате ASCII. Включена опция игнорирования фильтра, чтобы выводить полный лог. Окно настроек дополнительного окна открывается при открытии этого окна или по двойному клику в его области.

Окно программы

Add Menu – отображение дополнительных пунктов меню настройки программы и включения дополнительных режимов программы.

TerminalTMB v3

Background color – выбор фонового цвета окна вывода лога;
Font settings – настройки шрифта окна вывода лога;
Monitor mode – скрытие/отображение нижней панели программы;

Описание нижеперечисленных кнопок будет в следующих разделах руководства:
EmulAns – режим эмулятора ответов в ответ на приходящие запросы;
Cmd list mode – режим отправки списков команд с заданными интервалами;
Fast send mode – режим прямой отправки кодов клавиатуры в порт;
Directories – настройки директорий хранения файлов, используемых программой;
Sent commands – окно отправленных в порт данных;
Sniffer – пока не задействована;
Line separator – настройка разделителя пакетов для отображения в логе;
Autocleaning – настройки автоочистки окна лога;
Buffer FIFO – работа с входным приёмным буфером;
Event alert – настройка отслеживаемых событий;
Event log – логирование событий и работы терминала;
ASCII table – таблица ASCII, актуальная для данной версии Windows.

Отображение лога

Окно программы

Имеется возможность выводить лог в текстовом и бинарном режиме, а при необходимости в обоих режимах. Режим вывода можно менять для главного и для дополнительного окна, в дополнительном окне можно одновременно выводить данные в двух режимах и задать опцию для отображения режима вывода каждого пакета наряду с отображением временного штампа и счётчика числа байтов. К каждому пакету можно прикреплять временной штамп со значком направления передачи и значение счётчика числа принятых или отправленных байт. Аналогичные дополнительные данные прикрепляются к пакетам в дополнительном окне, что упрощает поиск нужного сообщения, если их нужно посмотреть одновременно в двух режимах.

TerminalTMB v3

В текстовый лог всё пишется вместе с дополнительной информацией, а в бинарный записываются только отправляемые и принимаемые данные.

Режим отправки пакетов

TerminalTMB v3

Имеется возможность задать один из нескольких режимов отправки содержимого консольной строки в порт:

Manual – только ручная отправка по нажатию Enter (с очисткой строки), Ctrl+Enter(без очистки строки) или соответствующей кнопки отправки команды справа от окна ввода хвоста команды. Содержимое консольной строки меняется вручную или при нажатии соответствующей кнопки с макросом.

When choosing – отправка команды сразу после нажатия кнопки с соответствующим макросом, при этом содержимое консольной строки не изменяется, что позволяет без лишних движений повторно отправлять вручную содержимое консольной строки.

After answering – отправка содержимого консольной строки сразу после получения ответа на предыдущую команду или после прихода любых данных в общем случае. Содержимое консольной строки можно менять вручную или нажатием соответствующей кнопки с макросом. На частоту отправки команд влияет время, указанное в качестве разделителя строк, указываемое в дополнительном меню (Line separator).

Periodic – периодическая отправка содержимого консольной строки в порт с заданной периодичностью. Точность выдержки периодичности в пределах 10-30 мс, поэтому относительно точно период отправки будет выдерживаться при его значении больше 1000 мс. Содержимое консольной строки в данном режиме можно менять вручную или с помощью кнопок макросов.

Данные режимы отправки актуальны и при отправке команд из файла, в котором каждая команда записывается в текстовом виде с новой строки.

TerminalTMB v3

После выбора файла с командами можно организовать их отправку разными способами в зависимости от выбранного режима На скрине ниже показана кнопка, которая в режиме отправки команд из файла при каждом нажатии отправляет следующую команду.

TerminalTMB v3

В ручном режиме содержимое консольной строки меняется при клике мышкой по соответствующей строке с командой, далее отправка выполняется любым способом вручную, но для минимизации движений при последовательной отправке команд имеется отдельная кнопка, которая при каждом нажатии отправляет в порт следующую команду из файла.

В режиме отправки при выборе в консоль отправляется сразу же та команда из файла, по которой кликнули мышкой.

В режиме отправки “после ответа” в консоль отправляется следующая команда из файла после получения ответа на предыдущую, что удобно, например, когда нужно отправить сразу несколько команд, на каждую из которых обязательно нужно получить ответ. Начинать процесс отправки нужно ручной отправкой первой командой. В данном режиме можно задать циклическую отправку команд, когда все команды из файла будут отправляться по кругу бесконечно.

В режиме периодической отправки все команды из файла отправляются по очереди с заданным интервалом вне зависимости от получаемого ответа на предыдущую команду. Аналогично можно задать циклическую отправку в данном режиме.

Файл команд нужно обязательно завершать переходом на новую строку в конце файла.

Если задана опция “Send on connect”, то содержимое консольной строки отправляется в порт сразу после установки соединения, а дальше алгоритм отправки задаётся настройками режима отправки. Данная опция позволяет отправлять в порт при соединении не только содержимое консольной строки, но и файл команд, если он выбран и настроен нужный режим отправки. Вместе с опцией первого вида автоконнекта в настройках порта можно настроить такой алгоритм отправки, когда консольная строка или файл команд будет отправляться в прибор автоматически при подключении USB-кабеля.

Консольная строка

TerminalTMB v3

Пакет для отправки данных формируется из содержимого консольной строки и “хвоста сообщений”, которые склеиваются вместе перед отправкой. Для отправки консольной строки нужно нажать Enter, если нужно отправить строку с очисткой содержимого или Ctrl+Enter, если очищать не нужно. Нажатие стрелки вверх при нахождении фокуса ввода в консольной строке будет выполнена очистка окна лога. Нажатие стрелки вниз развернёт окно с историей ранее отправленных команд, начало которых совпадает с частично введённой командой. Если консольная строка пуста, то нажатие стрелки вниз отобразит все ранее отправленные из консольной строки команды (всего запоминается не более 500, повторно отправляемые команды в данный список не добавляются, а ранжируются в списке так, что в верхней строке списка будет последняя отправленная строка). Длина строки консоли не должна превышать 65000 символов для текстового режима и 205000 символов для бинарного.

«Хвост сообщений» – это та сущность, которая всегда добавляется к содержимому консольной строки. Если нужно добавить одно или несколько шестнадцатеричных чисел, то они записываются в виде $XX$YY$ZZ. Если нужно добавлять смешанные данные, то пример хвоста будет такой «text cmd$0D», также имеется возможность вставки в хвост сообщений шаблона контрольной суммы, рассчитываемого по одному из алгоритмов, например для NMEA-сообщений шаблон будет следующий: «*[XOR_8 (1..n)]$0D$0A»

TerminalTMB v3

Данные в консольной строке отправляются в том виде, который задан для отображения лога: ASCII или HEX. Всё ранее написанное было справедливо для текстового режима. При отправке данных из консоли в HEX-режиме строка формируется из двоичных чисел в формате XX через пробел, например «70 77 64 20 31 32 33 34 35 3B 65 63 68 6F 20 6F 66 66 2A 37 37 0D «, в аналогичном виде формируются строки файла команд, содержимое макросов и содержимое хвоста команд. Единственная необычность в том, что в конце консольной строки или команд в файле нужно ставить пробел, если предполагается добавление хвоста сообщений.

TerminalTMB v3

В хвост сообщений тоже можно добавлять один или несколько шаблонов контрольных сумм (для извращений) через пробел, например:

TerminalTMB v3

В логе выделена та часть отправленного сообщения, которая сформировалась из шаблона контрольной суммы и одного байта в хвосте сообщения, полученный ответ видно в режиме ASCII, как указано в настройке отображения прочитанных данных.

Макросы

В программе имеется возможность сохранения макросов, организованных в виде списков, число которых может быть не больше 100. Всего в сумме можно хранить до 4800 макросов с их описанием.

TerminalTMB v3

Макросы могут отображаться в виде списков команд или списков названий макросов (жирный шрифт), соответствующий режим выбирается радиокнопками справа от названия списка. При наведении указателя мышки на активный макрос в подсказке отображается содержимое команды или имя макроса в зависимости от выбранного режима отображения. В прямоугольном поле справа может выводиться справочная информация по каждому макросу. Для удобства пользователя макросы можно редактировать. Редактирование может быть простым, когда можно поменять название и содержимое и расширенным, когда дополнительно можно редактировать справочную информацию.

Для переключения в режим простого редактирования нужно выбрать вкладку «Editor».

TerminalTMB v3

В данном режиме можно менять название списка макросов их имена и содержимое, доступно перелистывание списков и переключение между режимами отображения команды и имени. Для каждого списка макросов сохраняется свой хвост сообщений и свой режим работы (ASCII или HEX). Для режима HEX команды записываются в том же виде, как в консоли для данного режима, например: «11 22 33 44 55 0F AB CD » с обязательным добавлением пробела в конце, если предполагается прикрепление хвоста сообщений.

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

TerminalTMB v3

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

Отправка файлов

Имеется возможность отправки файлов в порт. Размер файла при этом не должен превышать 16 МБ. При отправке файла можно видеть лог отправки всегда в HEX-виде и статистику процесса в правом нижнем углу, которая отображается по нажатию кнопки «Show stat»

TerminalTMB v3

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

Теперь вернёмся к описанию дополнительных режимов работы и настройкам терминала, доступных по нажатию кнопки «Add menu».

Режим эмулятора ответов

TerminalTMB v3

В данном режиме можно настраивать списки ответов, возвращаемых в порт после получения целого запроса или его части, начало которого совпадает с одним из заданных в списке входящих пакетов. Для активации данного режима нужно нажать нижнюю правую кнопку со значком «>». В процессе работы можно на ходу делать активными шаблоны входящих запросов и варианты ответов на них установкой галочки в соответствующем чекбоксе. На скрине показан пример настройки режима автоматической отправки ответов на запросы с использованием только текущего списка запросов. В автоматическом режиме в ответ на запросы будут автоматически отправляться в случайном порядке один из активных ответов именно для конкретного запроса. Для каждого запроса можно задать до 16 возможных ответов. Если число возможных запросов не помещаются в списке, то можно задействовать все списки, установив соответствующий режим. Ответы могут отправляться в текстовом или в бинарном виде, что выбирается соотвествующими радиокнопками слева от каждого возможного ответа. Правило записи бинарных последовательностей такое же, как и для консольной строки, т.е. в виде «XX YY ZZ » с обязательным наличием пробела в конце строки, если предполагается использование хвоста сообщений. Хвост сообщений для данного режима задаётся в соответствующих окнах отдельно для каждого возможного ответа. По нажатию стрелки вниз в окне редактирования хвоста сообщений открывается список шаблонов контрольных сумм, а далее алгоритм формирования такой же, как и при работе с консольной строкой. Внизу окна находятся кнопки редактирования списков и изменения пропорции ширины окон редактирования запросов и ответов. Данный режим можно применять для эмулирования ответов датчиков, возвращающих данные по запросу. Не составит большого труда составить нужный алгоритм работы с GSM-модулем, если задать ответы-команды на каждое синхронное или асинхронное сообщение данного модуля. Ещё одно применение данного режима можно найти при тестировании софта, который должен работать с каким-либо устройством по последовательному порту. В данном случае следует применить пару виртуальных портов com0com, к одному из которых следует подключить тестируемую программу верхнего уровня, а ко второму данный терминал и задействовать этот режим. Ничто не мешает отвечать программе верхнего уровня вручную или с помощью макросов, но в реальном времени это часто бывает сложно делать из-за необходимости быстро отвечать на запросы и вот тут будет очень удобно применять этот режим. Для каждого устройства или программы можно сохранять и загружать свою конфигурацию запросов и ответов.

Режим списка команд

Иногда требуется отправлять последовательно несколько команд с разными интервалами времени. Данный режим доступен в терминале по нажатию соответствующей кнопки в дополнительном меню.

TerminalTMB v3

В данном режиме можно формировать список отправляемых команд, после отправки каждой из которых нужно выдержать заданную паузу. Последняя отправленная команда подсвечивается зелёным цветом. Отправка может выполняться вручную или автоматически. В обоих режимах доступными для отправки будут только активные команды. Команды можно редактировать непосредственно в строке или в отдельном окне по двойному клику мыши. Пока ещё несохранённая команда выделяется жирным шрифтом. В отдельном окне редактирования можно также написать краткую справку к каждой команде. Список команд можно отправлять однократно или циклически. Также можно задать диапазон страниц с командами для автоматической отправки, если команд больше 32. Режим отправки данных (HEX или ASCII) зааётся отдельно для каждого списка команд. Правила формирования сообщений и хвостов такие же, как и для консольной строки. Данный режим можно применять для отправки асинхронных сообщений в порт совместно с другими режимами работы терминала.

Режим быстрой отправки команд

TerminalTMB v3

Данный режим позволяет отправлять печатаемые символы в порт сразу после нажатия.

Все режимы отправки команд можно использовать одновременно.

Окно просмотра ранее отправленных команд

TerminalTMB v3

В данном окне отображаются все ранее отправленные команды и опционально их режим отправки ([H] – HEX, [A] — ASCII). Данное окно очищается автоматически и/или вручную при нажатии соответствующей кнопки.

Бывают ситуации, когда главное окно терминала закрывает окно дополнительного режима или окно дополнительного режима не разворачивается. В этом случае в дополнительном меню главного окна нужно повторно нажать на соответствующую кнопку.

Настройки директорий

TerminalTMB v3

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

Если пути к файлам не заданы, то они будут храниться в директории с программой.

Следующие настройки не открываются в отдельных окнах:

TerminalTMB v3

По нажатию каждой из кнопок открывается соответствующая панель с настройками. Для простоты и удобства повествования все эти панели покажу на одном скрине.

TerminalTMB v3

Здесь имеются следующие возможности:

  • настроить условия разделения пакетов для вывода следующего в новой строке лога;
  • настроить условие автоочистки окна лога;
  • сбросить входной буфер, если нет желания томительно ожидать, пока он весь выгрузится в окно лога;
  • настроить условия регистрации определённых событий и задать возможность автоматического разворачивания окна терминала при наступлении заданного события, что удобно, когда нужно посидеть за чаем в интернетах, но ещё нужнее в это время отслеживать появление нужного сообщения или ситуации в логе;
  • включить/выключить опцию записи лога событий и просмотреть этот самый журнал с помощью блокнота.

При нажатии на кнопку ASCII table открывается окно с соответствующей таблицей:

TerminalTMB v3

Таблица формируется программным способом, поэтому для каждой версии Windows может отличаться от представленной на рисунке.

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

Плагиат статьи приветствуется при указании ссылки на первоисточник. Даже если ссылка не будет указана в скопированном тексте, то она имеется в информации для обратной связи в самой программе по нажатию кнопки «Info».

Скачать программу TetminalTMB v3.98b

Изменения в версии 3.104b от 2021.06.22:

  • добавлена возможность выбора контрольной суммы LLS;
  • добавлена возможность привязки всех настроек отправки, приёма, отображения и т.д. к каждому списку макросов;
  • добавлены кнопки копирования и вставки списка максросов;
  • добавлена функция сравнения бинарных файлов;
  • небольшие визуальные улучшения.

Скачать программу TetminalTMB v3.104b

Изменения в версии 3.107b от 2021.11.20:

  • Добавлен режим перебора комбинаций пакетов (Brute force)

TerminalTMB v3

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

Скачать программу TetminalTMB v3.107b

Изменения в версии версии 3.112b от 2022.01.29:

  • алгоритм побайтного чтения файлов с диска заменён на алгоритм поблочного чтения, что увеличило скорость считывания файлов в ОЗУ перед отправкой в порт;
  • максимальный размер сравниваемых файлов увеличен до 8МБ;
  • добавлена возможность формирования команд для отправки файлов с сохранением данных команд в конфигурации макросов, в конфигурациях сценариев эмулятора ответов и в конфигурации списков отправляемых команд;
  • небольшие улучшения интерфейса.

Формат команды для отправки файла: [sendfile:]NameFile (без пробелов), пример:
[sendfile:]E:Файлы TerminalTMBDSCN5252.JPG
Длина всей команды должна быть не больше 250 байт, если команду предполагается сохранить в конфигурации. Режим отправки (ASCII или HEX) и шаблон хвоста пакета (добавляемый в конец символ или шаблон контрольной суммы) при отправке файла по команде значения не имеет. В редакторах макросов добавлена соответствующая кнопка для выбора отправляемого файла. Таким образом можно организовать последовательную отправку файлов или файлов вперемешку с командами. В окне эмулятора ответов можно вместо эмулируемых ответов отправлять файлы и тем самым настроить сценарий работы с каким-либо устройством, в алгоритме работы с которым предполагается отправка файлов в это самое устройство, например, запись файла альманаха в GPS-модуль. При отправке файлов больших объёмов на низкой скорости может возникнуть впечатление, что терминал завис, но это следствие отправки файла сплошным потоком. Максимальный размер отправляемого по команде файла не должен превышать 16МБ.

TerminalTMB v3.112b

TerminalTMB v3.112b

Скачать программу TerminalTMB 3.112b.rar

Абдулхаев Иван, г. Тамбов.

Содержание

  1. Usb terminal for windows
  2. Электроника для всех
  3. Блог о электронике
  4. Терминальные программы
  5. 112 thoughts on “Терминальные программы”
  6. Лучшие бесплатные терминалы для Windows
  7. 1. Cmder
  8. 2. Hyper.is
  9. 3. Terminus
  10. 4. Fluent Terminal
  11. 5. Alacritty
  12. Представляем Windows Terminal
  13. Ключевые функции Windows Terminal
  14. Несколько вкладок
  15. Красивый текст
  16. Настройки и конфигурируемость
  17. Больше!
  18. Когда я смогу его получить?
  19. Подождите… вы сказали в Open-Source?
  20. Это звучит потрясающе, но почему бы вам просто не улучшить существующую Windows Console?
  21. Хорошо, а что насчет участия в существующем проекте терминала или приложения в Open-Source?
  22. Убедили! Как принять участие?
  23. Как пользоваться терминальной программой Terminal 1.9b
  24. Интерфейс и основные настройки подключения по порту
  25. Макросы
  26. Отправка и прием данных

Usb terminal for windows

Терминал (для работы с COM портом) под Windows.

— Требуемый функционал был разбросан по нескольким программам и это было очень не удобно.

— Часть требуемых функций не было и вовсе.

— Часть программ банально падали в самый неподходящий момент.

— Часть функций реализованы с ошибками.

Так жить нельзя и работать тоже . 🙂

Значит надо создать свою программу, с необходимым функционалом.

terminal gif

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

с телеметрией. В проекте требовалось принимать и передавать данные через COM порт компьютера.

Проект готов и сдан. Программа осталась и продолжает использоваться по назначению, для отладки

На текущий момент программа продолжает дорабатывается, исправляются ошибки, добавляются

В данной статье будут публиковаться все изменения и нововведения сделанные в программе.

terminal v132

Краткое описание программы.

Программа создана в среде Microsoft Studio 2008, на языке VB.

Репозитарий программы представлен на GitHub, готовый бинарный файл(exe) в виде Zip архива.

Собранная программа представляет из себя один запускаемый файл.

Программа не требует установки и работает из любого места.

Программа не требует для запуска привилегий администратора.

1. Подключаться к любому com порту в системе.

2. Выставлять параметры работы com порта, включая нестандартные скорости работы порта

(при условии что драйвер windows поддерживает нестандартные скорости,

хотя как показала практика погрешность может быть очень большой.

увы точнее делитель не устанавливается. ).

3. Производить запись принимаемых данных в файл.

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

5. Циклически передавать в порт строку с заданным интервалом времени.

6. Передавать в порт файл.

7. Проиграть сценарий из файла (передача данных + задержка между данными).

Программа пока не может:

1. Разбирать ESC последовательности.

2. Вести историю передаваемых строк.

3. Передавать в порт кода нажатых клавиш в окне приема и передачи.

На текущий момент планов по развитию и доработки программы много.

Обычно в процесс работы с программой, во время отладки очередного устройства,

появляется необходимость в новом функционале.

Так в программу попадает новый функционал, продиктованный практикой.

При добавления нового функционала в программу, иногда добавляются и проявляются

глюки (по недосмотру), прошу отнестись с понимание 🙂

Глюки исправляются, и новая версия выкладывается в репозитарий.

На основе данной программы была создана еще одна утилита для работы по протоколу PELCO-D,

для тестирования и управления камерами и поворотными платформами.

Текущая версия: v1.3.7

[+] Исправление: Зависание программы при отключении COM порта из системы (выдернули кабель. ).

Текущая версия: v1.3.6

[+] Исправление: Перепутаны STOP BIT 1.5 2.

Текущая версия: v1.3.5

[+] Исправление: Не корректный вывод кодов r n.

Текущая версия: v1.3.4

[+] Исправление: Подвисание интерфейса при приеме не отображаемых кодов (0x00-0x19).

Текущая версия: v1.3.2

[+] Вывод подробного описания СОМ портов.

[+] Проигрывание сценария из текстового файла.

Пример сценария (Файл TXT), формат:

81 01 04 07 03 FF
> 100
81 01 04 07 02 FF

[+] Перевод строки в TXT-HEX виде в байтовый массив и передача в СОМ порт.

Версия: v1.2.2

[+] Добавлена история ввода передаваемых строк.

Версия: v1.2.1

[+] Внесены изменения в интерфейс. Часть функций вынесены в окно приема.

[+] Добавлена функция Вкл/Выкл печати символа с кодом 0x0A.

[+] Решено: При закрытии порта продолжалась передача в порт.

[+] Добавлена подсказка при наведении курсора на элементы управления.

[+] При запуске программы производится автоматический поиск СОМ портов в системе.

Версия: v1.1.0

[+] Добавлена передача в порт кодов нажатых клавиш в окне приема и передачи.

Источник

Электроника для всех

Блог о электронике

Терминальные программы

Практически постоянно приходится смотреть что шлет контроллер или заслать в него какой нибудь байтик. Это нужно для отладки, иногда для настройки. Порой для управления. Кому как, я так для отладки использую. Без толкового инструмента тут никак, поэтому я давно уже присмотрел себе парочку прикольных программок.

Первой хотел бы упомянуть Terminal v1.9b by Bray. На мой взгляд — гениальная программа! Более удобного интерфейса для работы я не встречал. Судите сами — все под рукой!

term19

Для настроек скорости работы, номера порта, параметров передачи и прочих сиюминутных потребностей не надо даже по менюшкам лазать — все прям сразу же. Также можно в один тык выдать инфу в разных системах счисления, что порой бывает очень удобно. Я бы сказал жизненно необходимо.
В один клик доступна таблица ASCII, а среди особых фишек которую я очень люблю — возможность выдать поток данных в виде графика от 0 до 255.
А еще можно писать скрипты на паскалеподобном языке, делающие с входящими-исходящими данными всякие непотребности.
В общем, рулез!

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

Вторая программа это COM Port Toolkit от Михаила Голикова. Ей я пользуюсь гораздо реже, но она умеет весьма нужную штуку — возможность перехватывать обмен данными между софтом и физическим COM портом. Это чертовски выручило меня когда я ломал защиту PLC, а также помогло отреверсить обмен между программой настройки модулей HM-TR433. В общем, редко, но метко.

comporttoolkit

Программка эта довольно проста в обращении, имеет три режима работы:

Также можно писать скрипты на этот раз уже на Си подобном языке. Мне это больше нравится, т.к. я его лучше знаю.

Недостатков пожалуй три:

Демка проработала 30 дней, потом захотела денег. Но свою работу по облегчению разбора протокола обмена PLC она выполнила.

Поначалу была мысль вспомнить шальное детство, сдуть пыль с родимого SoftICE и похачить защиту, но потом вспомнил что шашек такой формы не брал в руки уже лет 5, как минимум. Да и цена программы оказалась смешной — всего 10 баксов для русскоязычных пользователей.
Так что проще было ее зарегистрировать. Тем более штука нужная и уже неоднократно себя окупившая.

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.

112 thoughts on “Терминальные программы”

Ну что,опять я первый)
Мне к сожалению эта информация пока ни о чём не говорит 🙁

Источник

Лучшие бесплатные терминалы для Windows

На основе статьи «The Best Free Standalone Terminals for Windows (2019)».

Стандартная командная строка, предоставляемая Windows Powershell, далека от идеала. В этой статье вы найдете несколько лучших эмуляторов терминала, способных улучшить ваш рабочий процесс.

1. Cmder

q9a46hoblnd4mq48hhz0

Cmder это портативный эмулятор консоли,. Вы можете переносить свой эмулятор на флешке или при помощи облака, и ваши настройки, псевдонимы и история будут с вами на любой машине, где бы вы ни работали. А если вы решите использовать немного большую версию git-for-windows, у вас в PATH будут все Unix-команды, так что вы сможете немедленно на любой машине выполнять git init или cat.

Cmder построен на основе уже популярного Conemu. На ConEmu тоже стоит обратить внимание, поскольку он может служить в качестве альтернативы Cmder. Сайт, посвященный Cmder, прекрасно описывает свой продукт:

«Думайте о Cmder скорее как о программном пакете, чем об отдельном приложении. Вся магия происходит благодаря ConEmu, с улучшениями из Clink».

Несмотря на то что Cmder порой имеет проблемы со скоростью, это все равно отличный базовый эмулятор консоли, который поможет вам в достижении ваших целей.

2. Hyper.is

Hyper это блестящий терминал, который можно использовать как на PC, так и на MAC. Он полностью настраиваемый в том что касается тем, плагинов и оболочки. Хотя в плане разработки его создателям предстоит еще много работы. Например, у меня были ошибки при инсталляции zsh shell. Тем не менее, Hyper это отличный расширяемый терминал, на который стоит обратить внимание.

3. Terminus

terminus 2.0 hnhplq

Слоган терминала Terminus — « Терминал более современной эпохи». Этот терминал кажется похожим на среду разработки: он поставляется с разделенными панелями, полностью настраиваемыми сочетаниями клавиш, вкладками и поддержкой всех основных оболочек. Терминал все еще новый, так что будет интересно посмотреть, что ждет его в будущем. На сайте представлен онлайн-вариант, с которым можно поиграться.

4. Fluent Terminal

fluent terminal qfyrna

Терминал для PowerShell, CMD, WSL или пользовательских оболочек. Среди его фич — встроенная поддержка соединений SSH и Mosh, возможность использовать вкладки и несколько окон, настройка внешнего вида, импорт/экспорт тем (плюс импорт тем iTerm), редактируемые сочетания клавиш, функция поиска, возможность быстрого переключения между оболочками.

5. Alacritty

2ebd0288 d06c 11e6 95d3

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

Alacritty поддерживает macOS, Linux, BSD и Windows. При создании этого терминала разработчики концентрировались на производительности и простоте. Дефолтные установки тщательно продуманы, так что Alacritty не требует дополнительной настройки, хотя многие вещи можно конфигурировать.

Источник

Представляем Windows Terminal

Windows Terminal — это новое, современное, быстрое, эффективное, мощное и производительное терминальное приложение для пользователей инструментов и оболочек командной строки, таких как Command Prompt, PowerShell и WSL.

Windows Terminal будет поставляться через Microsoft Store в Windows 10 и будет регулярно обновляться, гарантируя, что вы всегда будете идти в ногу со временем и сможете пользоваться новейшими функциями и последними улучшениями с минимальными усилиями.

image loader

Ключевые функции Windows Terminal

Несколько вкладок

Вы просили, и мы услышали! Наиболее часто запрашиваемая функция для терминала — это поддержка нескольких вкладок, и мы очень рады, что наконец-то смогли предоставить эту функцию. Теперь вы можете открывать любое количество вкладок, каждая из которых подключена к оболочке командной строки или приложению по вашему выбору, например, Command Prompt, PowerShell, Ubuntu на WSL, Raspberry Pi через SSH и т. д.

image loader

Красивый текст

В Windows Terminal используется GPU-ускорение DirectWrite/DirectX на основе движка рендеринга текста. Этот новый движок рендеринга текста будет отображать текстовые символы, глифы и символы, присутствующие в шрифтах на вашем ПК, включая идеограммы CJK, эмодзи, символы powerline, значки, лигатуры программирования и т. д. Этот движок даже рендерит текст намного быстрее, чем предыдущий движок GDI консоли!

image loader

У вас также будет возможность использовать наш новый шрифт! Мы хотели создать веселый, новый, моноширинный шрифт, чтобы улучшить современный внешний вид терминала. Этот шрифт не только будет включать лигатуры программирования, но и будет иметь собственный Open-Source репозиторий. Оставайтесь с нами для получения дополнительной информации о новом проекте шрифта!

image loader

Настройки и конфигурируемость

Мы связались со многими пользователями командной строки, которые любят кастомизировать свои терминалы и приложения командной строки. Windows Terminal предоставляет множество настроек и параметров конфигурации, которые дают большой контроль над внешним видом терминала и каждой из оболочек/профилей, которые можно открывать как новые вкладки. Настройки хранятся в структурированном текстовом файле, что упрощает конфигурирование для пользователей и/или инструментов.

Используя механизм конфигурирования терминала, вы сможете создать несколько “профилей” для каждой оболочки/приложения/инструмента, которые вы хотите использовать, будь то PowerShell, Command Prompt, Ubuntu или даже SSH-соединения с Azure или устройствами IoT. Эти профили могут иметь свою собственную комбинацию стилей и размеров шрифта, цветовых тем, уровней размытия/прозрачности фона и т. д. Теперь вы можете создать свой собственный терминал в своем стиле, который персонализирован на ваш уникальный вкус!

Больше!

После выпуска Windows Terminal 1.0, мы планируем начать работу со многими фичами, которые уже есть в нашем бэклоге, в дополнение ко многим фичам, которые вы, как сообщество, вероятно, добавите!

Когда я смогу его получить?

На сегодняшний день Windows Terminal и Windows Console доступны в Open-Source, так что вы уже можете клонировать, собирать, запускать и тестировать код из репозитория на GitHub:

Также, этим летом в Microsoft Store будет выпущена превью-версия Windows Terminal для первопроходцев и предоставления фидбэка.

А уже зимой мы планируем окончательно выпустить Windows Terminal 1.0, и мы будем работать с сообществом, чтобы убедиться, что он полностью готов, прежде чем мы выпустим!

image loader
[Happy Joy Gif – Giphy]

Подождите… вы сказали в Open-Source?

Да, это так! Мы рады объявить, что мы открываем не только Windows Terminal, но и Windows Console, которая содержит инфраструктуру командной строки в Windows и предоставляет традиционный Console UX.

Нам уже не терпится поработать с вами над улучшением и расширением возможностей командной строки Windows!

Это звучит потрясающе, но почему бы вам просто не улучшить существующую Windows Console?

Основной целью Windows Console является сохранение обратной совместимости с существующими инструментами командной строки, скриптами и т. д. Хотя нам и удалось добавить множество ключевых улучшений в функционал консоли (например, добавить поддержку VT и 24-битного цвета и т. д. см. этот пост в блоге), мы не можем внести дальнейшие существенные улучшения в UI консоли без “нарушения мира”.

Поэтому пришло время для нового, свежего подхода.

Windows Terminal устанавливается и работает вместе с существующим приложением Windows Console. Если вы непосредственно запускаете Cmd/PowerShell/пр., они начнут подключаться к традиционному экземпляру консоли точно так же, как обычно. Таким образом, обратная совместимость остается неизменной, и в то же время вы можете использовать Windows Terminal, если/когда вы захотите это сделать. Windows Console будет продолжать поставляться в Windows в течение десятилетий для поддержки существующих/устаревших приложений и систем.

Хорошо, а что насчет участия в существующем проекте терминала или приложения в Open-Source?

Мы тщательно изучили этот вариант во время планирования и решили, что наше участие в существующем проекте потребует изменения требований и архитектуры проекта таким образом, что это будет слишком деструктивным.

Вместо этого, создав новое Open-Source терминальное приложение и Open-Source Windows Console, мы можем предложить сообществу сотрудничать с нами в улучшении кода и использовании его в своих соответствующих проектах.

Мы считаем, что на рынке достаточно места для новых/разных идей о том, что терминал может и должен делать, и мы стремимся помочь экосистеме терминальных (и связанных с ней) приложений процветать и развиваться за счет внедрения новых идей, интересных подходов и захватывающих инноваций в этом пространстве.

Убедили! Как принять участие?

Посетите репозиторий по адресу github.com/Microsoft/Terminal, чтобы клонировать, собрать, протестировать и запустить терминал! Кроме того, мы будем признательны, если вы будете сообщать об ошибках и делиться фидбэком с нами и сообществом, а также исправлять проблемы и вносить улучшения в GitHub.

Этим летом попробуйте установить и запустить Windows Terminal из Microsoft Store. Если вы столкнетесь с какими-либо ошибками, поделитесь отзывом через Feedback Hub или раздел Issues на GitHub, который предназначен для вопросов и обсуждений.

Мы рады работать с вами! Если у вас есть какие-либо вопросы или пожелания, не стесняйтесь обращаться к Kayla @cinnamon_msft и/или Rich @richturn_ms в Twitter. Нам не терпится увидеть, какие замечательные улучшения и фичи вы привнесете в Windows Terminal и Windows Console.

Источник

Как пользоваться терминальной программой Terminal 1.9b

Как работать с устройствами по COM-порту с помощью терминальной программы?

В различных инструкциях и руководствах вы можете увидеть рекомендации по работе с устройствами через терминальную программу. Как правило, такие действия производят с помощью HyperTerminal — стандартной программы в операционных системах Windows. Мы же рекомендуем использовать терминальную программу «Terminal v1.9b by bray», потому что это более гибкий и удобный в работе инструмент. Ниже мы расскажем как работать с нашими устройствами на примере именно этой программы.

В первую очередь подключите устройство, с которым собираетесь работать, к компьютеру через COM-порт. Подключите питание.
Теперь запустите Terminal v1.9b.

bec518ed5bc8b7f1c8427562d14fbd15

Интерфейс и основные настройки подключения по порту

В верхнем поле находятся параметры подключения:

575423fb0f072bb1dd2ca6f0b7d668b3

В разделе Settings находятся дополнительные параметры. Они пригодятся для написания скриптов, работы с нестандартными скоростями или для записи лога от устройства.

5ea1b34ed6451bef365fd604ff0d8846

В разделе Recieve находятся параметры отображения ответа от устройства.

a8b1085fbbaa5f5f224401efd6a0f4bc

В разделе Transmit находятся параметры передачи данных на устройство. Кнопки DTR и RTS устанавливают соответствующие выводы в положительное состояние.

b7565854a35aada78618351eae7dff0d

Макросы

Поле Macros предназначено для создания пользовательских быстрых клавиш.
Для этого нужно нажать на кнопку SetMacros и в открывшемся окне присвоить каждой кнопке определённую последовательность символов, которая будет отправляться на устройство.

50780d2f736c5a2899571bcd99a0f4b5

Кнопки Load и Save позволяют сохранить или загрузить файл с макросами, введёнными в этом окне.

Отправка и прием данных

12a176857956fd4a9c5f2ebc68252c80

Блок №1:
В этом большом поле вы будете видеть ответы от вашего устройства.
Если в разделе «Settings» вы не забыли поставить галочку «Time«, то перед каждой строкой будет проставлена метка времени. Это бывает очень полезно при анализе логов с устройства.

Блок №2:
Тут находится поле для отправки текста сообщений. Установленная галочка «+CR» будет дописывать к отправляемому сообщению символ возврата каретки (эмулировать нажатие клавиши Enter). Кнопка «->Send» отправит ваше сообщение на устройство.

Блок №3:
В самом низу находится поле, где вы можете видеть отправленные на устройство команды.

Теперь вы знакомы с интерфейсом Terminal 1.9b!

Как происходит общение с устройством, вы можете посмотреть в этих статьях:

Источник

Здравствуйте, уважаемые хабровчане! Я хотел написать просто комментарий к статье «Программное обеспечение для тестирования и наладки устройств и сетей на базе MODBUS», однако для вновь зарегистрированных пользователей сайт не даёт это сделать для «не свежих» публикаций. Поэтому пишу это в виде публикации, что бы хоть каким-либо образом донести информацию. Суть этого небольшого поста — представить вниманию читателей новый терминал для работы с COM-портами, который, возможно, многим придётся по душе. А теперь — непосредственно сам пост:

Думаю, что каждый из embeded-разработчиков хотя бы раз в жизни пользовался терминалом для работы с COM-портом ПК — простой программой, позволяющей персональному компьютеру через встроенный интерфейс RS-232 (или USB-переходник) общаться с внешними устройствами, например такими, как GSM-модем или просто обмениваться данными с микроконтроллером в процессе разработки и отладки прошивки.

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

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

В основе его дизайна легла простая, но как мне кажется правильная идея, что при обмене данными с устройством все передаваемые и принимаемые данные должны отображаться в виде диалога двух «умных» устройств так, как этот диалог отображается в любом современном мессенджере: слева вопрос, справа и ниже — ответ, слева и ещё ниже — новый вопрос и т.д. При таком «разнесении» данных существенно улучшается визуальное восприятие протокола обмена двух устройств.

Другим фактором, но уже в области функциональности терминала послужило частое требование видеть обмен двух «внешних» устройств, которые общаются с друг с другом (например какой-либо контроллер общается с подключенным к нему GSM-модемом), так сказать «подсматривать» их обмен данными, а не отсылать данные с компьютера. Это привело к появлению в терминале функции «мониторинга» COM-портов. Реализуется это просто и очевидно: программа открывает ОДНОВРЕМЕННО два COM-порта, оба в режиме ПРИЁМА. Все принятые данные по обоим портам заносятся в хронологическом порядке в описанный выше «диалог».

Изначально разбивка принимаемых данных происходила классически — по терминаторам перевода строки и возврата каретки ($0D, $0A), что характерно для текстовых протоколов. Позже была добавлена функция разбивки принимаемых данных по таймауту молчания, что очень удобно для работы с бинарными протоколами, где нет характерного терминатора.

С годами терминал оброс дополнительными полезными и удобными «плюшками», которые по достоинству могут оценить многие. Была добавлена таблица на 1000 макросов, детализация последнего принятого блока данных, детальная (побайтная) разбивка любой строки. Добавлена реализация даже такой тривиальной задачи, как перевод числа между двоичной, десятичной и шестнадцатеричной системами счисления, побитный сдвиг числа влево и вправо, просмотр таблицы ASCII. Эти операции можно выполнить и другими программами, но очень УДОБНО, когда всё это собрано в одном месте и всегда под рукой.

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

Внешний вид главного окна терминала:

На последних этапах разработки терминала TbK была добавлена поддержка протокола MODBUS, причём реализован как режим MASTER, так и режим SLAVE. То есть терминал может как опрашивать MODBUS-устройства, так и имитировать из себя такое устройство. Поддерживаются все самые «ходовые» функции протокола: 1, 2, 3, 4, 5, 6 и 16

Все регистры заполняются в виде таблиц, которые удобны для восприятия.

Так выглядят дополнительные окна для работы по протоколу Modbus:

Основной функционал терминала:

  • визуально — пространственное разделение принимаемых и отсылаемых данных (либо данных, принимаемыми разными портами – в режиме мониторинга), что облегчает их восприятие оператором, так как данные представлены в виде диалога, как в мессенджере;

  • представление данных в текстовом (TEXT), десятичном (DEC), шестнадцатеричном (HEX) и бинарном (BIN) форматах в табличном виде (Таблицы) и в виде свободного текста (Memo). В режиме Memo имеется возможность выбрать фонт, размер и цвет текста;

  • таблица из 1000 макросов и комментариев к ним, каждый из которых может быть мгновенно отослан в порт двойным кликом по его номеру;

  • терминал удобен для работы как с текстовыми (символьными), так и с бинарными протоколами обмена; – различные режимы разбивки принимаемых данных на строки: по обнаружению фиксированного терминатора ($0D, $0A, $0D$0A, $0D or $0A), по таймауту после окончания приёма последнего байта, по приёму фиксированного количества байт;

  • автоматическое добавление к отсылаемым данным различных контрольных сумм (CRC) и терминаторов: $0D, $0A или $0D$0A (на выбор);

  • детализация последнего принятого блока данных (DLRB) — инструмент, позволяющий в реальном масштабе времени разбивать принимаемые данные по отдельным байтам, определив для каждого байта свой порядковый номер в посылке и задав отдельный цвет для подсвечивания каждого байта или группы байт, что облегчает визуальное восприятие данных. Это удобно при работе с позиционными протоколами, когда положение каждого байта в посылке всегда фиксировано и не изменяется во времени;

  • возможность в реальном масштабе времени вычислять на основе принимаемых данных одно-, двух- и четырёхбайтовые величины и, принимая их за аргументы, вычислять на их основе сложные функции, заданные текстовой формулой;

  • инструменты, позволяющие реализовать поддержку протокола Modbus, как в режиме Master, так и в режиме Slave. Поддерживаются 1, 2, 3, 4, 5, 6 и 16 функции протокола;

  • режим сохранения всех принимаемых / отсылаемых в log-файл;

  • инструмент Programs, позволяющий реализовать выполнение простейших программ на основе отсылки заданных макросов с определёнными паузами между ними с возможностью зацикливания выполнения отдельных блоков;

  • инструмент String, позволяющий детально проанализировать строку, скопировав её через буфер обмена и разбив по байтам, определить её длину, подсветить отдельные байты определённым цветом и привязать к каждому свой комментарий, вычислить различные контрольные суммы данной строки, произвести перевод заданного числа между различными системами исчисления (DEC<>HEX<>BIN), разложив его на отдельные байты, произвести побитный сдвиг этих байт влево и вправо;

  • быстрый доступ в терминале к встроенной справочной информации: таблицы ASCII-символов, описания выводов COM-порта (цоколёвки разъёма), схем распайки кабеля для реализации режима мониторинга COM-портов.

Сама программа написана на Delphi, работает только под Windows, для загрузки доступен сам exe-файл, а также два файла инструкции — на русском и английском языках.

Сам терминал полностью бесплатный, без каких-либо ограничений по использованию.

Скачивать терминал по ссылке

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

Приятного пользования!

Is there a way to connect to a serial terminal just as you would do with SSH? There must be a simpler way than tools such as Minicom, like this

$ serial /dev/ttyS0 

I know I can cat the output from /dev/ttyS0 but only one way communication is possible that way, from the port to the console. And echo out to the port is just the same but the other way around, to the port.

How can I realize two way communication with a serial port the simplest possible way on Unix/Linux?

asked Oct 13, 2011 at 9:38

ihatetoregister's user avatar

ihatetoregisterihatetoregister

3,9344 gold badges20 silver badges18 bronze badges

1

I find screen the most useful program for serial communication since I use it for other things anyway. It’s usually just screen /dev/ttyS0 <speed>, although the default settings may be different for your device. It also allows you to pipe anything into the session by entering command mode and doing exec !! <run some program that generates output>.

answered Oct 13, 2011 at 13:06

Shawn J. Goff's user avatar

Shawn J. GoffShawn J. Goff

44.5k25 gold badges133 silver badges145 bronze badges

6

Background

The main reason why you need any program like minicom to communicate over a serial port is that the port needs to be set up prior to initiating a connection. If it weren’t set up appropriately, the cat and echo commands would not do for you what you might have expected. Notice that once you run a program like minicom, the port is left with the settings that minicom used. You can query the communication settings using the stty program like this:

stty < /dev/ttyS0

If you have done it right; after booting the computer and before running any other program like minicom, the communication settings will be at their default settings. These are probably different than what you will need to make your connection. In this situation, sending the commands cat or echo to the port will either produce garbage or not work at all.

Run stty again after using minicom, and you’ll notice the settings are set to what the program was using.

Minimal serial communication

Basically, two things are needed to have two-way communication through a serial port: 1) configuring the serial port, and 2) opening the pseudo-tty read-write.

The most basic program that I know that does this is picocom. You can also use a tool like setserial to set up the port and then interact with it directly from the shell.

Community's user avatar

answered Oct 13, 2011 at 11:21

rozcietrzewiacz's user avatar

rozcietrzewiaczrozcietrzewiacz

38k8 gold badges91 silver badges102 bronze badges

2

I found a way using a shell script in Serial Programming
that runs cat as a background process
and a while loop that reads the user input
and echos it out to the port. 
I modified it to be more general and it fit my purpose perfectly.

#!/bin/sh

# connect.sh

# Usage:
# $ connect.sh <device> <port speed>
# Example: connect.sh /dev/ttyS0 9600

# Let cat read the device $1 in the background
cat "$1" &

# Capture the PID of the background process (cat)
# so it is possible to terminate it when done.
bgPid=$!

# Set up device
stty -F "$1" "$2"


# Read commands from user, send them to device $1
while read cmd
do
   echo "$cmd" 
done > "$1"

# Terminate background read process
kill "$bgPid"

G-Man Says 'Reinstate Monica''s user avatar

answered Oct 18, 2011 at 10:39

ihatetoregister's user avatar

ihatetoregisterihatetoregister

3,9344 gold badges20 silver badges18 bronze badges

11

If UUCP is installed on the system, you may use the command cu, e.g.

 $ cu -l /dev/ttyS0 -s 9600

answered Oct 13, 2011 at 10:39

ktf's user avatar

ktfktf

2,63917 silver badges15 bronze badges

1

Try http://tio.github.io

«tio» is a simple TTY terminal application which features a straightforward commandline interface to easily connect to TTY devices for basic input/output.

Typical use is without options. For example:

tio /dev/ttyS0

Which corresponds to the commonly used options:

tio --baudrate 115200 --databits 8 --flow none --stopbits 1 --parity none /dev/ttyS0

It comes with full shell auto completion support for all options.

Thomas's user avatar

Thomas

6,1128 gold badges26 silver badges32 bronze badges

answered Sep 2, 2017 at 11:13

Martin's user avatar

MartinMartin

3312 silver badges3 bronze badges

1

This script is based on another answer, but sends everything over the serial port (except Ctrl+Q), not just single commands followed by Enter. This enables you to use Ctrl+C or Ctrl+Z on the remote host, and to use interactive «GUI» programs like aptitude or alsamixer. It can be quit by pressing Ctrl+Q.

Just put the following code into a file /usr/local/bin/femtocom (or any other place in $PATH) and do chmod +x /usr/local/bin/femtocom.

From there on you can connect to any serial port like this for example:

femtocom /dev/ttyUSB0 57600

#!/bin/bash

if [[ $# -lt 1 ]]; then
    echo "Usage:"
    echo "  femtocom <serial-port> [ <speed> [ <stty-options> ... ] ]"
    echo "  Example: $0 /dev/ttyS0 9600"
    echo "  Press Ctrl+Q to quit"
fi

set -e    # Exit when any command fails

# Save settings of current terminal to restore later
original_settings="$(stty -g)"

# Kill background process and restore terminal when this shell exits
trap 'set +e; kill "$bgPid"; stty "$original_settings"' EXIT

# Remove serial port from parameter list, so only stty settings remain
port="$1"; shift

# Set up serial port, append all remaining parameters from command line
stty -F "$port" raw -echo "$@"

# Set current terminal to pass through everything except Ctrl+Q
# * "quit undef susp undef" will disable Ctrl+ and Ctrl+Z handling
# * "isig intr ^Q" will make Ctrl+Q send SIGINT to this script
stty raw -echo isig intr ^Q quit undef susp undef

echo "Connecting to $port. Press Ctrl+Q to exit."

# Let cat read the serial port to the screen in the background
# Capture PID of background process so it is possible to terminate it
cat "$port" & bgPid=$!

cat >"$port"   # Redirect all keyboard input to serial port

answered Sep 22, 2016 at 17:03

Fritz's user avatar

FritzFritz

5752 gold badges5 silver badges15 bronze badges

3

BTW, the putty package (which does run on Linux) does include serial support.

answered Oct 14, 2011 at 18:34

mdpc's user avatar

mdpcmdpc

6,6463 gold badges29 silver badges43 bronze badges

Another issue that can occur is that your user account may need to set to the «dialout» group to access the serial port.

sudo usermod -a -G dialout $USER

GAD3R's user avatar

GAD3R

60.9k30 gold badges126 silver badges189 bronze badges

answered Mar 28, 2018 at 16:42

dfowler7437's user avatar

Putty works well on Linux and offers some convenience, especially for serial communications. It has one drawback I haven’t been able to directly solve: no copy-paste from the Putty window itself. The windows version has a lovely auto-copy to clipboard on highlight, right-click to paste behaviour (and there are excellent plugins for both chrome and firefox to enable the same behavior), but on Linux, no copy love AFAIK.

If the lack of copy is a problem (it is for me) then turn on logging in putty and open a standard terminal window and # tail -f putty.log and bidirectional text is available for standard copypasta action.

answered Mar 22, 2015 at 18:30

gessel's user avatar

1

As mentioned before you can try picocom. The latest release (2.0) can also be used (safely) to set-up a «terminal server» since it no longer permits shell command injection. See:

https://github.com/npat-efault/picocom/releases

Thompson Dawes's user avatar

answered Aug 28, 2015 at 8:06

Nick Patavalis's user avatar

I wonder why nobody mentioned ser2net.

Example /etc/ser2net.conf:

3000:telnet:600:/dev/ttyUSB0:115200 8DATABITS NONE 1STOPBIT
3001:telnet:600:/dev/ttyUSB1:115200 8DATABITS NONE 1STOPBIT
3002:telnet:600:/dev/ttyUSB2:115200 8DATABITS NONE 1STOPBIT
3003:telnet:600:/dev/ttyUSB3:115200 8DATABITS NONE 1STOPBIT

You can connect to serial port as easy as:

telnet localhost 3000

Or remotely:

telnet <ip> 3000

Or even set up port forwarding on your router and expose it to Internet, so that you could connect to it from anywhere (let’s skip security issues, I’m talking about flexibility).

answered Sep 2, 2019 at 16:05

Andrejs Cainikovs's user avatar

As it is not mentioned here already, I’d also mention socat — more info in https://stackoverflow.com/questions/2899180/how-can-i-use-com-and-usb-ports-within-cygwin :

socat `tty`,raw,echo=0 /dev/ttyS15,raw,echo=0,setsid,sane

or

socat - /dev/ttyS15,raw,echo=0,setsid,sane

(though, I’ve had the problem of stopping it once it starts running, under MSYS2 on Windows)

Jeff Schaller's user avatar

Jeff Schaller

65.1k34 gold badges106 silver badges240 bronze badges

answered Feb 14, 2019 at 15:46

sdbbs's user avatar

sdbbssdbbs

4306 silver badges14 bronze badges

It depends on what you want to do. Do you want to run a shell or applicaiton interactively from the terminal, connect out to another computer over the serial line, automate communication with a device over a serial port?

If you want bidirectional communication then I presume you want something interactive with a human on the terminal. You can configure the system to allow logins from a terminal over a serial port by seting up a getty(1) session on the serial port — getty is the tool for setting up a terminal and allowing logins onto it. Put an entry in your inittab(5) file to run it on the appropriate serial port on a respawn basis.

If you want to connect to a device and initiate automated two way conversations then you could see if expect will get you what you want. Use stty(1) to configure the port to the right parity, baud rate and other relevant settings.

If you want to communicate interactively with another computer over the serial port then you will need terminal emulation software. This does quite a lot — it sets up the port, interprets ANSI or other terminal command sequences (ANSI was far from being the only standard supported by serial terminals). Many terminal emulators also support file transfer protocols such as kermit or zmodem.

The ins and outs of serial communications and terminal I/O are fairly complex; you can read more than you ever wanted to know on the subject in the serial howto.

answered Oct 14, 2011 at 11:36

ConcernedOfTunbridgeWells's user avatar

You need to be sure to have the correct read write permits on the device, you could see it with:

$ls -l /dev/[serial device]

I rely on the script you found and made some modifications.

For the development systems I’ve used by now, they used to need:

  • None parity and
  • One stop bit

Those values are the default ones in the script.

So in order to connect, you can use it as simple as follows:

./connect.sh /dev/[serial device] [baud speed]

Example:

$./connect.sh /dev/ttyUSB0 19200

Script:

#!/bin/bash

# connect.sh


#Taken from example modified by: ihatetoregister
# On stack exchange, thread:
# http://unix.stackexchange.com/questions/22545/how-to-connect-to-a-serial-port-as-simple-as-using-ssh
# Modified by Rafael Karosuo <rafaelkarosuo@gmail.com>
#   - parity enabling and amount of stop bits
#   - no execution without minimum params
#   - exit code for stty
#   - bgPid fix, used $! instead of $? to take the PID of cat proc in background.
#   - exit command to end the program
#   - CR termination and strip of NL added by READ command, in order to make $cmdrn format instead of n$cmdn


# Usage:
# $./connect.sh <device> <port speed> [# Stop bits] [parity]

# Stop bits 1|2
# Parity even | odd

# If no last two params, then default values stopbits=1, parity=disab

# Example: 
# connect.sh /dev/ttyS0 9600 1 even, this will use 1 stop bit and even parity
# connect.sh /dev/ttyS0 9600, this will take default values for parity and stopbit


#Check if at least port and baud params provided
if [ -z "$1" ] || [ -z "$2" ]; then
    printf "nusage: ./connect.sh <device> <port speed> [# Stop bits 1|2] [parity even|odd]ntNeed to provide at least port and baud speed parameters.ntexample:connect.sh /dev/ttyS0 9600nn"
    exit 1;
else
    case "$3"   in
        2) stopb="cstopb";;
        *) stopb="-cstopb";;
    esac

    if [ "$4" = "even" ]; then
        par="-parodd"
    elif [ "$4" = "odd" ]; then
        par="parodd"
    else
        par="-parity"
    fi
    printf "nThen stty -F $1 $2 $stopb $parn";
fi

# Set up device
stty -F "$1" "$2" "$stopb" "$par" -icrnl

# Check if error ocurred
if [ "$?" -ne 0 ]; then
    printf "nnError ocurred, stty exited $?nn"
    exit 1;
fi

# Let cat read the device $1 in the background
cat -v "$1" &

# Capture PID of background process so it is possible to terminate it when done
bgPid="$!"

# Read commands from user, send them to device $1
while [ "$cmd" != "exit" ]
do
   read cmd
   echo -e "x08$cmdx0D" > "$1" #strip off the n that read puts and adds r for windows like LF

done

# Terminate background read process
kill "$bgPid"

P.S.: You need to know which kind of line feed is using your receiver system since this will determine how you’ll need to send the commands in my case I needed a Windows like LF, means that I need to send

commandr

ASCII values for:

  • LF : 0Ah, line feed «n»
  • CR : 0Dh, carrige return «r»
  • BS : 08h, back space «<-«

answered Jul 9, 2016 at 6:33

Rafael Karosuo's user avatar

1

You might want to take a look at

http://serialconsole.sourceforge.net

Pro: doesn’t have obvious security problems like minicom or picocom (if you don’t have a problem giving the users shell access, no problem, but you most likely do have one if you want to set up a terminal server…)

answered Mar 10, 2015 at 18:55

Peter's user avatar

PeterPeter

1611 silver badge2 bronze badges

Another easy option is to access the machine over ssh with the -X flag and run a program such as putty or gtkterm.

So:

$ ssh -X <user>@<machine_address>

$ sudo apt-get install gtkterm (if not installed already)

$ gtkterm

It should launch the graphical interface on your client PC and from there you can access the serial port as if you would be in the host.

Disclaimer: Only tried this with ubuntu machines. I’m guessing that it won’t work with machines without graphic interfaces.

From the ssh manual:

-X

Enables X11 forwarding. This can also be specified on a per-host basis in a configuration file.
X11 forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the user’s X authorization database) can access the local X11 display through the forwarded connection. An attacker may then be able to perform activities such as keystroke monitoring.
For this reason, X11 forwarding is subjected to X11 SECURITY extension restrictions by default. Please refer to the ssh -Y option and the ForwardX11Trusted directive in ssh_config(5) for more information.

-Y

Enables trusted X11 forwarding. Trusted X11 forwardings are not subjected to the X11 SECURITY extension controls.

So use -Y if security is an issue.

answered Jul 26, 2019 at 7:48

Grifo's user avatar

GrifoGrifo

12 bronze badges

Is there a way to connect to a serial terminal just as you would do with SSH? There must be a simpler way than tools such as Minicom, like this

$ serial /dev/ttyS0 

I know I can cat the output from /dev/ttyS0 but only one way communication is possible that way, from the port to the console. And echo out to the port is just the same but the other way around, to the port.

How can I realize two way communication with a serial port the simplest possible way on Unix/Linux?

asked Oct 13, 2011 at 9:38

ihatetoregister's user avatar

ihatetoregisterihatetoregister

3,9344 gold badges20 silver badges18 bronze badges

1

I find screen the most useful program for serial communication since I use it for other things anyway. It’s usually just screen /dev/ttyS0 <speed>, although the default settings may be different for your device. It also allows you to pipe anything into the session by entering command mode and doing exec !! <run some program that generates output>.

answered Oct 13, 2011 at 13:06

Shawn J. Goff's user avatar

Shawn J. GoffShawn J. Goff

44.5k25 gold badges133 silver badges145 bronze badges

6

Background

The main reason why you need any program like minicom to communicate over a serial port is that the port needs to be set up prior to initiating a connection. If it weren’t set up appropriately, the cat and echo commands would not do for you what you might have expected. Notice that once you run a program like minicom, the port is left with the settings that minicom used. You can query the communication settings using the stty program like this:

stty < /dev/ttyS0

If you have done it right; after booting the computer and before running any other program like minicom, the communication settings will be at their default settings. These are probably different than what you will need to make your connection. In this situation, sending the commands cat or echo to the port will either produce garbage or not work at all.

Run stty again after using minicom, and you’ll notice the settings are set to what the program was using.

Minimal serial communication

Basically, two things are needed to have two-way communication through a serial port: 1) configuring the serial port, and 2) opening the pseudo-tty read-write.

The most basic program that I know that does this is picocom. You can also use a tool like setserial to set up the port and then interact with it directly from the shell.

Community's user avatar

answered Oct 13, 2011 at 11:21

rozcietrzewiacz's user avatar

rozcietrzewiaczrozcietrzewiacz

38k8 gold badges91 silver badges102 bronze badges

2

I found a way using a shell script in Serial Programming
that runs cat as a background process
and a while loop that reads the user input
and echos it out to the port. 
I modified it to be more general and it fit my purpose perfectly.

#!/bin/sh

# connect.sh

# Usage:
# $ connect.sh <device> <port speed>
# Example: connect.sh /dev/ttyS0 9600

# Let cat read the device $1 in the background
cat "$1" &

# Capture the PID of the background process (cat)
# so it is possible to terminate it when done.
bgPid=$!

# Set up device
stty -F "$1" "$2"


# Read commands from user, send them to device $1
while read cmd
do
   echo "$cmd" 
done > "$1"

# Terminate background read process
kill "$bgPid"

G-Man Says 'Reinstate Monica''s user avatar

answered Oct 18, 2011 at 10:39

ihatetoregister's user avatar

ihatetoregisterihatetoregister

3,9344 gold badges20 silver badges18 bronze badges

11

If UUCP is installed on the system, you may use the command cu, e.g.

 $ cu -l /dev/ttyS0 -s 9600

answered Oct 13, 2011 at 10:39

ktf's user avatar

ktfktf

2,63917 silver badges15 bronze badges

1

Try http://tio.github.io

«tio» is a simple TTY terminal application which features a straightforward commandline interface to easily connect to TTY devices for basic input/output.

Typical use is without options. For example:

tio /dev/ttyS0

Which corresponds to the commonly used options:

tio --baudrate 115200 --databits 8 --flow none --stopbits 1 --parity none /dev/ttyS0

It comes with full shell auto completion support for all options.

Thomas's user avatar

Thomas

6,1128 gold badges26 silver badges32 bronze badges

answered Sep 2, 2017 at 11:13

Martin's user avatar

MartinMartin

3312 silver badges3 bronze badges

1

This script is based on another answer, but sends everything over the serial port (except Ctrl+Q), not just single commands followed by Enter. This enables you to use Ctrl+C or Ctrl+Z on the remote host, and to use interactive «GUI» programs like aptitude or alsamixer. It can be quit by pressing Ctrl+Q.

Just put the following code into a file /usr/local/bin/femtocom (or any other place in $PATH) and do chmod +x /usr/local/bin/femtocom.

From there on you can connect to any serial port like this for example:

femtocom /dev/ttyUSB0 57600

#!/bin/bash

if [[ $# -lt 1 ]]; then
    echo "Usage:"
    echo "  femtocom <serial-port> [ <speed> [ <stty-options> ... ] ]"
    echo "  Example: $0 /dev/ttyS0 9600"
    echo "  Press Ctrl+Q to quit"
fi

set -e    # Exit when any command fails

# Save settings of current terminal to restore later
original_settings="$(stty -g)"

# Kill background process and restore terminal when this shell exits
trap 'set +e; kill "$bgPid"; stty "$original_settings"' EXIT

# Remove serial port from parameter list, so only stty settings remain
port="$1"; shift

# Set up serial port, append all remaining parameters from command line
stty -F "$port" raw -echo "$@"

# Set current terminal to pass through everything except Ctrl+Q
# * "quit undef susp undef" will disable Ctrl+ and Ctrl+Z handling
# * "isig intr ^Q" will make Ctrl+Q send SIGINT to this script
stty raw -echo isig intr ^Q quit undef susp undef

echo "Connecting to $port. Press Ctrl+Q to exit."

# Let cat read the serial port to the screen in the background
# Capture PID of background process so it is possible to terminate it
cat "$port" & bgPid=$!

cat >"$port"   # Redirect all keyboard input to serial port

answered Sep 22, 2016 at 17:03

Fritz's user avatar

FritzFritz

5752 gold badges5 silver badges15 bronze badges

3

BTW, the putty package (which does run on Linux) does include serial support.

answered Oct 14, 2011 at 18:34

mdpc's user avatar

mdpcmdpc

6,6463 gold badges29 silver badges43 bronze badges

Another issue that can occur is that your user account may need to set to the «dialout» group to access the serial port.

sudo usermod -a -G dialout $USER

GAD3R's user avatar

GAD3R

60.9k30 gold badges126 silver badges189 bronze badges

answered Mar 28, 2018 at 16:42

dfowler7437's user avatar

Putty works well on Linux and offers some convenience, especially for serial communications. It has one drawback I haven’t been able to directly solve: no copy-paste from the Putty window itself. The windows version has a lovely auto-copy to clipboard on highlight, right-click to paste behaviour (and there are excellent plugins for both chrome and firefox to enable the same behavior), but on Linux, no copy love AFAIK.

If the lack of copy is a problem (it is for me) then turn on logging in putty and open a standard terminal window and # tail -f putty.log and bidirectional text is available for standard copypasta action.

answered Mar 22, 2015 at 18:30

gessel's user avatar

1

As mentioned before you can try picocom. The latest release (2.0) can also be used (safely) to set-up a «terminal server» since it no longer permits shell command injection. See:

https://github.com/npat-efault/picocom/releases

Thompson Dawes's user avatar

answered Aug 28, 2015 at 8:06

Nick Patavalis's user avatar

I wonder why nobody mentioned ser2net.

Example /etc/ser2net.conf:

3000:telnet:600:/dev/ttyUSB0:115200 8DATABITS NONE 1STOPBIT
3001:telnet:600:/dev/ttyUSB1:115200 8DATABITS NONE 1STOPBIT
3002:telnet:600:/dev/ttyUSB2:115200 8DATABITS NONE 1STOPBIT
3003:telnet:600:/dev/ttyUSB3:115200 8DATABITS NONE 1STOPBIT

You can connect to serial port as easy as:

telnet localhost 3000

Or remotely:

telnet <ip> 3000

Or even set up port forwarding on your router and expose it to Internet, so that you could connect to it from anywhere (let’s skip security issues, I’m talking about flexibility).

answered Sep 2, 2019 at 16:05

Andrejs Cainikovs's user avatar

As it is not mentioned here already, I’d also mention socat — more info in https://stackoverflow.com/questions/2899180/how-can-i-use-com-and-usb-ports-within-cygwin :

socat `tty`,raw,echo=0 /dev/ttyS15,raw,echo=0,setsid,sane

or

socat - /dev/ttyS15,raw,echo=0,setsid,sane

(though, I’ve had the problem of stopping it once it starts running, under MSYS2 on Windows)

Jeff Schaller's user avatar

Jeff Schaller

65.1k34 gold badges106 silver badges240 bronze badges

answered Feb 14, 2019 at 15:46

sdbbs's user avatar

sdbbssdbbs

4306 silver badges14 bronze badges

It depends on what you want to do. Do you want to run a shell or applicaiton interactively from the terminal, connect out to another computer over the serial line, automate communication with a device over a serial port?

If you want bidirectional communication then I presume you want something interactive with a human on the terminal. You can configure the system to allow logins from a terminal over a serial port by seting up a getty(1) session on the serial port — getty is the tool for setting up a terminal and allowing logins onto it. Put an entry in your inittab(5) file to run it on the appropriate serial port on a respawn basis.

If you want to connect to a device and initiate automated two way conversations then you could see if expect will get you what you want. Use stty(1) to configure the port to the right parity, baud rate and other relevant settings.

If you want to communicate interactively with another computer over the serial port then you will need terminal emulation software. This does quite a lot — it sets up the port, interprets ANSI or other terminal command sequences (ANSI was far from being the only standard supported by serial terminals). Many terminal emulators also support file transfer protocols such as kermit or zmodem.

The ins and outs of serial communications and terminal I/O are fairly complex; you can read more than you ever wanted to know on the subject in the serial howto.

answered Oct 14, 2011 at 11:36

ConcernedOfTunbridgeWells's user avatar

You need to be sure to have the correct read write permits on the device, you could see it with:

$ls -l /dev/[serial device]

I rely on the script you found and made some modifications.

For the development systems I’ve used by now, they used to need:

  • None parity and
  • One stop bit

Those values are the default ones in the script.

So in order to connect, you can use it as simple as follows:

./connect.sh /dev/[serial device] [baud speed]

Example:

$./connect.sh /dev/ttyUSB0 19200

Script:

#!/bin/bash

# connect.sh


#Taken from example modified by: ihatetoregister
# On stack exchange, thread:
# http://unix.stackexchange.com/questions/22545/how-to-connect-to-a-serial-port-as-simple-as-using-ssh
# Modified by Rafael Karosuo <rafaelkarosuo@gmail.com>
#   - parity enabling and amount of stop bits
#   - no execution without minimum params
#   - exit code for stty
#   - bgPid fix, used $! instead of $? to take the PID of cat proc in background.
#   - exit command to end the program
#   - CR termination and strip of NL added by READ command, in order to make $cmdrn format instead of n$cmdn


# Usage:
# $./connect.sh <device> <port speed> [# Stop bits] [parity]

# Stop bits 1|2
# Parity even | odd

# If no last two params, then default values stopbits=1, parity=disab

# Example: 
# connect.sh /dev/ttyS0 9600 1 even, this will use 1 stop bit and even parity
# connect.sh /dev/ttyS0 9600, this will take default values for parity and stopbit


#Check if at least port and baud params provided
if [ -z "$1" ] || [ -z "$2" ]; then
    printf "nusage: ./connect.sh <device> <port speed> [# Stop bits 1|2] [parity even|odd]ntNeed to provide at least port and baud speed parameters.ntexample:connect.sh /dev/ttyS0 9600nn"
    exit 1;
else
    case "$3"   in
        2) stopb="cstopb";;
        *) stopb="-cstopb";;
    esac

    if [ "$4" = "even" ]; then
        par="-parodd"
    elif [ "$4" = "odd" ]; then
        par="parodd"
    else
        par="-parity"
    fi
    printf "nThen stty -F $1 $2 $stopb $parn";
fi

# Set up device
stty -F "$1" "$2" "$stopb" "$par" -icrnl

# Check if error ocurred
if [ "$?" -ne 0 ]; then
    printf "nnError ocurred, stty exited $?nn"
    exit 1;
fi

# Let cat read the device $1 in the background
cat -v "$1" &

# Capture PID of background process so it is possible to terminate it when done
bgPid="$!"

# Read commands from user, send them to device $1
while [ "$cmd" != "exit" ]
do
   read cmd
   echo -e "x08$cmdx0D" > "$1" #strip off the n that read puts and adds r for windows like LF

done

# Terminate background read process
kill "$bgPid"

P.S.: You need to know which kind of line feed is using your receiver system since this will determine how you’ll need to send the commands in my case I needed a Windows like LF, means that I need to send

commandr

ASCII values for:

  • LF : 0Ah, line feed «n»
  • CR : 0Dh, carrige return «r»
  • BS : 08h, back space «<-«

answered Jul 9, 2016 at 6:33

Rafael Karosuo's user avatar

1

You might want to take a look at

http://serialconsole.sourceforge.net

Pro: doesn’t have obvious security problems like minicom or picocom (if you don’t have a problem giving the users shell access, no problem, but you most likely do have one if you want to set up a terminal server…)

answered Mar 10, 2015 at 18:55

Peter's user avatar

PeterPeter

1611 silver badge2 bronze badges

Another easy option is to access the machine over ssh with the -X flag and run a program such as putty or gtkterm.

So:

$ ssh -X <user>@<machine_address>

$ sudo apt-get install gtkterm (if not installed already)

$ gtkterm

It should launch the graphical interface on your client PC and from there you can access the serial port as if you would be in the host.

Disclaimer: Only tried this with ubuntu machines. I’m guessing that it won’t work with machines without graphic interfaces.

From the ssh manual:

-X

Enables X11 forwarding. This can also be specified on a per-host basis in a configuration file.
X11 forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the user’s X authorization database) can access the local X11 display through the forwarded connection. An attacker may then be able to perform activities such as keystroke monitoring.
For this reason, X11 forwarding is subjected to X11 SECURITY extension restrictions by default. Please refer to the ssh -Y option and the ForwardX11Trusted directive in ssh_config(5) for more information.

-Y

Enables trusted X11 forwarding. Trusted X11 forwardings are not subjected to the X11 SECURITY extension controls.

So use -Y if security is an issue.

answered Jul 26, 2019 at 7:48

Grifo's user avatar

GrifoGrifo

12 bronze badges

Понравилась статья? Поделить с друзьями:
  • Как подключиться к byfly wifi с ноутбука windows 10
  • Как подключиться к bluetooth модему windows 10
  • Как подключиться к airport time capsule с windows 10
  • Как подключить яндекс станцию к компьютеру через hdmi windows 10
  • Как подключить яндекс почту к почтовому клиенту windows 10