RSS
people

Мои инструменты: DualComPortLogger

Доброго всем времени суток.

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

И тут я вспомнил, что уже давно существует намного усовершенствованная версия сего творения (не помню, писал ли про нее уже, давно было дело), которая умеет немного больше, чем раньше.

Так случилось, что по работе понадобилось отследить, что гуляет у нас на одном порту, да в обе стороны, да еще и с веселой скоростью 1843200 бод. Естественно, что чтобы отследить оба направления, пришлось малость по паять и  сварганить небольшой адаптер, который обе линии в два порта на RX линии переправлял, но об этом вы уже и сами догадались :)

И так, встречайте: Dual Comport Logger. Пока что версия 2.5

Главное окошко малость изменилось и выглядит теперь вот так:

Main Window

Значит по порядку.

В меню File можно, как и раньше выбрать файл, куда  писать лог с портов. Там же его можно и закрыть. В меню Communication можно настроить порты (об этом ниже), и отркыть их или закрыть.

Галка "Put Break after" включает возможность вставлять в лог после определенной последовательности  символов (введенных в окошко рядом) перевод строки, для удобоваримого чтения логов потом. Дальше идет примерчик, что можно вводить в окошко. Это может быть любой текст, симоволы (не тестировал все, думаю, что слэш обратный может не прокатить, но можете попробовать ;-) ), а так же последовательность HEX байтов, которая вводится с использованием «$», соответственно, если надо поймать сам «$» то его надо ввести два раза подряд (кажется. Давно дело было, не помню уже :) ).

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

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

Скорость одна на оба порта. Если выбран один и тот же порт в обоих случаях, то прога работает как старая версия — пишет с одного порта.

Лог в файле выглядит вот так (это я свою железку на скорую руку подключил, она там текст постоянно гоняет по порту) :
COM3 00:06:33.859: 53 74 61 72 74 69 6E 67 20 4D 65 61 73 75 72 65 6D 65 6E 74 20 0A
COM3 00:06:34.968: 54 65 6D 70 65 72 61 74 75 72 65 73 20 72 65 61 64 65 64 0A
COM3 00:06:36.484: 53 74 61 72 74 69 6E 67 20 4D 65 61 73 75 72 65 6D 65 6E 74 20 0A
COM3 00:06:37.578: 54 65 6D 70 65 72 61 74 75 72 65 73 20 72 65 61 64 65 64 0A
COM3 00:06:39.093: 53 74 61 72 74 69 6E 67 20 4D 65 61 73 75 72 65 6D 65 6E 74 20 0A
COM3 00:06:40.203: 54 65 6D
COM3 00:06:40.296: 70 65 72 61 74 75 72 65 73 20 72 65 61 64 65 64 0A
COM3 00:06:41.703: 53 74 61 72 74 69 6E 67 20 4D 65 61 73 75 72 65 6D 65 6E 74 20 0A
COM3 00:06:42.921: 54 65 6D 70 65 72 61 74 75 72 65 73 20 72 65 61 64 65 64 0A
COM3 00:06:44.328: 53 74 61 72 74 69 6E 67 20 4D 65 61 73 75 72
COM3 00:06:44.421: 65 6D 65 6E 74 20 0A

Сначала идет порт, потом время приема, это время компьютера (вот засиделся то, спать уже надо идти :) ), и сами данные.

В бинарном варианте выглядит это вот так:

COM3 00:06:45.531: Temperatures readed

COM3 00:06:47.046: Starting Measurement

COM3 00:06:48.140: Temperatures readed

COM3 00:06:49.656: Starting Measurement

COM3 00:06:50.765: Temperatures readed

COM3 00:06:52.265: Starting Measurement

COM3 00:06:53.375: Temperatures readed

Как уже говорил, в меню Communication-Com Port Settings можно выбрать порты, скорость и еще кое что.

Сommunication Settings

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

«Время от времени» выставляется в полях «Time in ms» — период, через который производится симуляция и «Duration» — как долго симулировать.

Ну вот вроде как и все.

А. Как и просили ранее, добавил скорости. Теперь прога поддерживает такие скорости (зависит от железа) :

600, 1200, 2400, 4800, 9600, 19200, 34800, 56000, 57600, 115200, 128000, 230400, 250000, 460800, 921600, 1843200 бод

Про «зависит от железа»: Обычные COM порты компьютера, что на материнской плате встроенные, поддерживают скорости до 115200 бод. Скорости выше — это уже USB to Serial конвертеры, да и то не все. У нас на работе есть пара, которые до 250000 бод только работают, а дальше только мусор гоняют. А есть и такие, которые и 3000000 бод держат (больше не пробовали, наш проект только с 3 МБ работает максимум).

Ну и сама прога в архиве:

DualComPortLogger_2_5.rar

Я не уверен, надо ли ей каких то библиотек, так что если у кого потребует чего — напишите, довыложим.

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

Оставить комментарий или два

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