Терминал для работы с RS-232 и RS-485


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


Последние комментарии

V: AVR против STM32
Всё хорошо, но &q...

Алексей: AVR против STM32
Все должно быть с...




           

Библиотека для AVR





AXLIB Генератор





Помощь сайту


   
				

Терминал для работы с RS-232 и RS-485

	
	
	

Дата: 14 Января 2020. Автор: Алексей

	
	
Ссылка для скачивания программы CTerminal.zip

Всем привет. Наткнулся я тут на проблему связанную с общением по RS-232 он же COM порт. Проблема связана с разностью подходов передачи данных. Например для общения с GSM модулями, необходим текстовый режим для отправка AT команд, а для общения с разными протоколами нужен шеснадцатиричный ввод. Да, у меня есть аж целых три терминала сторонних разработчиков, но все они имеют разные возможности и исходя из задачи приходится использовать, то один, то другой, то третий. В итоге мне это надоело и я решил написать свой терминал со всеми плюшками сразу)
Сказано, сделано. Поехали!

ТЗ
1. Программа должна иметь отдельную строку ввода, для возможности исправления опечаток перед отправкой.
2. Программа должна сама определять все находящиеся порты на ПК при загрузке.
3. Программа должна находить подключаемые мосты USB <-> UART без перезагрузки.
4. Программа должна уметь управлять выводом DTR. Дергает ресет на Ардуино платах и им же можно рулить потоком RS-485.
5. Программа должна уметь общаться в текстовом режиме, а также в шеснадцатиричном.
6. Программа должна уметь передавать команды перевода каретки и перехода на другую строку. Необходимо для многих модулей.
7. Программа должна уметь передавать команду Ctrl+Z необходима для отправки SMS.
8. Программа должна считать принятые и полученные байты.
9. Программа должна уметь считывать состояние ножки CTS. На всякий случай.

Ну что же, задание получено, давайте выполнять)

Терминал

Покрупнее

Собственно что мы тут видим.
Начнем по порядку из задания.

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

Строка отправки

2. Программа должна сама определять все находящиеся порты на ПК при загрузке.

Выбор порта

Собственно она так и делает. При загрузке программы, она сканирует ПК на наличие СОМ портов и все что находит выводит в список.

3. Программа должна находить подключаемые мосты USB <-> UART без перезагрузки.

Кнопка найти порт

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

4. Программа должна уметь управлять выводом DTR. Дергает ресет на Ардуино платах и им же можно рулить потоком RS-485.

Управление DTR

Мега классная штука. По мимо того что она дергает ресет на Ардуиновских платах, ее так же можно использовать для управления потоком RS-485. Это означает то что микросхемы мостов USB <-> UART без поддержки RS-485 (CP2102, CH340), лекго можно подключить к дешевым драйверам типа MAX485. На таких драйверах китайцы наладили дешевые шилды для ардуин.

Соединение Китайских модулей

Так же я этот вывод подключаю к радиомодулю HC-12 к ножке SET что дает мне без лишних телодвижений переключать модуль между управляющими командами и линией передачи данных в эфир.

Модуль HC-12

5. Программа должна уметь общаться в текстовом режиме, а также в шеснадцатиричном.

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

Режим передачи

Если выбрать Символы, то передача и прием данных будет осуществляться русскими или латинскими буквами и символами пунктуации.

Символьный режим

Если выбрать HEX, то передача и прием будет осуществляться только в шеснадцатиричним формате.

Передача HEX

По подробнее о передачи в режиме HEX

Передача HEX

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

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

Передача HEX

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

Ну здесь ничего сложного.

Спецсимволы

Если установить галочку Добавлять \r\n, то после отправки данных в порт, в конце тандемом также улетят данные коды коды.

7. Программа должна уметь передавать команду Ctrl+Z (необходима для отправки SMS).

Для отправки кода Ctrl+Z нужно нажать на кнопку Ctrl+Z. В строке для отправки появится стрелочка вправо указывающая на то что код будет отправлен.

Спецсимволы

8. Программа должна считать принятые и полученные байты.


Статистика

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

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

9. Программа должна уметь считывать состояние ножки CTS. На всякий случай.

Ну и куда уж без нее. Под счетчиками есть надпись Состояние CTS, как раз она показывает какой уровень на данной ножке. У меня мост с микросхемой CP2102 и на ней данный вывод подтянут к плюсу питания. Если данный вывод прижать к GND, то в программе появится ноль.

Вот вроде и все. Ах да, внизу тикают часики. Это для хохмы. Место нужно было чем-то забить. Часики берут время с текущего ПК на котором запущена программа.

А теперь самое главное. Программа представляет собой простой EXEшник. Ничего не нужно устанавливать. Просто запустить и все. Поэтому его можно носить с собой на флешке и нет необходимости устанавливать на ПК. Единственный нюанс, для работы программы, на ПК должен быть установлен .NET Framework 4.6.1 или выше. Скачать его можно на сайте Мелкософта бесплатно. И система должна бить не ниже win7 x64


Ссылка для скачивания программы CTerminal.zip 





Чтобы вставить ссылку используйте форму вида[url]http://www.адрес.ru[/url][text]текст ссылки[/text]
Чтобы вставить код используйте форму вида[code]код[/code]

Имя:   





  







Рейтинг@Mail.ru Яндекс.Метрика