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

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

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

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

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

Скачать программу Bray Terminal v1.9

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

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

  • Терминал
    Может выдавать логи обмена данных улетевших к нами от нас. Слать из файла. Обрабатывать пересылаемое макросами (что может быть очень крутым подспорьем, но мне пока не пригождалось). Терминал как терминал, ничего особенного.
  • Прослушка
    Это фишка уже поинтересней. Позволяет воткнуть комп в разрез между принимающим и передающим девайсом и прослушать передачу данных кто кому и что передал. Также ведутся логи с указанием времени передачи посылки.
  • Захват
    Вот за эту фичу я и люблю эту программу — возможность снифферить обмен между софтом и портом. Редкая фича. Из бесплатных программ я нигде такого не встречал, а у программ вроде Advanced Serial Port Monitor или Free Serial Port Monitor эта фича доступна только в платной версии, тут же ее можно заюзать даже в демо версии.

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

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

  • Невозможность разделить в режиме «Захват» входящие и исходящие данные на два разных окна.
  • Отстуствие русской документации, хотя бы по тому же скриптописанию.
  • Шароварность. Впрочем, я бы не назвал это недостатком. Автор, я думаю, не святым духом питается.

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

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

Скачать последнюю версию ComPort Toolkit можно с официального сайта автора

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

  1. И офигительная по простоте, кросплатформенная и с исходным кодом на Qt: Qt_comport
    http://www.qt-apps.org/content/show.php/QT_comport?content=95246

    Позволяет выбирать базовые настройки порта, вывод/посыл в ASCII, hex, двоичной системе, да и пишет количество принятых/отправленных байт.
    Не скатерть-самобранка, конечно, но модифицируй-нехочу.

  2. Для меня многим(не только хакерам ;-) более удобна утилита PuTTY.
    С Terminal v1.9b by Bray тоже работал, но на больших скоростях шибко комп напрягает.
    А PuTTY довольно универсальна не только для СОМ но и для сетевых протоколов.
    Самое главное нет проблем с отображением кириллицы, + шибко шустрая, + проект Open Source!!!

    Так что достойная альтернатива.

      1. Да и сейчас там что то не густо:

        Аналоги Proteus
        Multisim
        также всякие AVR Studio или VMlab есть?

        Единственное что нашел какую то полудохлую Контроллер лаб, глючную и похоже уже заброшенную.

        1. Хрен знает. Есть волшебный язык Python (http://python.org/). На нём можно очень многое быстро написать. Как я уже говорил, на простейший эмулятор для ATtiny13 я потратил два вечера. Для работы с RS232 есть мега библиотека pySerial (http://pyserial.sf.net/). Пишется небольшой скрипт, который создаёт фейковый COM порт и обеспечивает его связь с реальным, журналируя обмен. Возни на час.

        2. теоретически это все должно пойти под вайном. 1с, фотошоп и ворд запускаются — почему бы и этому софту не пойти? аврстудию могу даже попробовать запустить если кому-то интересно.

    1. из гуйни тот же putty либо см. выше Qt_comport либо cutecom либо gtkterm.
      из консольных minicom (им собсно и пользуюсь)

      ещё есть хорошие программы stty и cat, с их помощью можно скрипты пейсать хоть на bash. Либо ставишь либу pyserial и пишешь скрипты на нормальном Питоне а не на «паскалеподобной» херне.

        1. Это все хорошо в теории:). Но вот пробовал я практически ставить kontrollerlab. В общем это просто GUI конструктор. Чтобы обеспечить его функциональность надо кучу всего поставить во первых avrdude или uisp, потом как я понял собрать из исходников binutilis. avr-gcc и gdb. Да так чтобы версии согласовались…И весит все это не мало..
          В принципе, вроде бы есть технология:
          http://www.linux.org.ru/view-message.jsp?msgid=3143232
          http://paul.graysonfamily.org/thoughts/avrlinux/

          А в 2009 mandrive есть кое какие готовые пакеты и сайт тайваньский про это http://ftp.isu.edu.tw

          Но тогда надо систему обновлять, к тому же 2009 под 4 KDE а kontrollerlab под 3 kde.
          Опять нестыковка…

          Так-что лучше уж в винде одной кнопкой программку за 5 минут поставить и работать, в лине пока такого варианта нет.

          1. Простите, но вы совершаете типичную ошибку начинающих линуксойдов — выбираете наиболее распеаренный гламурный дистрибутив а потом паритесь из-за его кривизны и ошибок в ДНК разработчиков.

            У меня в Fedora вообще не возникло никаких проблем с установкой kontrollerlab. Я только что попробовал установить rpm скачанный с sf и он встал абсолютно без проблем, автоматически доустановились qt3 и либы от третьих кедов, они нормально работают бок о бок с 4м кде.

            Компилировать ничего не надо, начинающим это вообще противопоказано. И avr-gcc и avrdude и многое другое ставится из штатных репозиториев одной командой.

            1. Собственно Вы правы. Оказывается в мандриве нет родного пакета контроллерлаба, а я запускал пакет от 6-ой федоры :) Дистр специально не выбирал, мне его подарили для тренировки :) Любопытно что некоторые пакеты федоры неплохо работают и в ней. Например хорошо работает диспетчер задач rftask. В принципе попробую поковырятся с контроллерлабом и наставлю пакетов от федоры может и получится. А вообще любопытно попробовать убунту.

      1. по быстрому можно screen /dev/ttyS0 9600 или подобно :) в лялихе многое из консольного заточено на возможность работы в терминальном режиме, та же консоль. так что agetty и им подобные в друзья :). Другое дело, что я не знаю функциональных аналогов что у комрада DI описаны, но уже выше несколько ссылочек проскакивало.

  3. Автору за обзор терминалок — зачот.
    Под виндами как-то грустно вообще с этим делом, сама парадигма представлять всё в виде потоков здорово портит дело.
    Пока были машины, на которых работал w98, проблем вообще не было — был дос-навигатор, встроенная терминалка которого служила той самой волшебной таблеткой, подходящей для большинства случаев.
    А для тех случаев, когда дн-терма не хватало, был самописанный сниффер, для дос-режима, который висел на двух портах сразу, и писал в файл протокол обмена между устройствами, соблюдая порядок переданных данных.
    Родной же терминал виндов — такое убожество, что делается непонятно, кто и с какой целью его написал, и откуда у них в этот момент росли руки. То, что голова при этом процессе не участвовала — медицинский факт!

  4. После нескольких лет отладки софта связи с промышленными девайсами, так и не нашел для мониторинга порта ничего лучше Portmon’а от Sysinternals.
    В качестве терминального эмулятора пользовались своей софтиной, но она именно была заточена не под «мега-универсальность», а под конкретные задачи — вручную слать пакеты данных софту(не только в COM-порты, но и в TCP-соединение), генерить контрольные суммы, ну и смотреть чего приходит. Точно также — удобнее нее для тех задач, которыми я занимался, так ничего и не увидел.
    Ну и настропалился с тех пор в хексах глазами шариться 8)

    1. Мне портомон не понравился категорически. Да он может вести перехват, но он показывает кто, и куда, а вот сами данные идут у него невнятной присказкой, а не полноценным дампом.

      1. Камрад — онож настраивается.
        Там очень важный момент — можно контролировать не только данные, которые туда-сюда ходят, но и переключения режимов ком-порта.
        Например, можно отследить «общение» дерганием всяких RTS’ов. Некоторые девайс так и работают.
        У Сисинтерналс вообще утилиты хорошие.

  5. День добрый!

    Я пользуюсь TeraTerm Pro. Старинная программа. Хотя не так давно вышли новые её версии, кажется. Функциональность на высоте. Главное — бесплатная.

    Работаем с железом всяко-разным. От контроллеров до ARM-компьютеров. С некоторыми терминалками что-то, да не идёт (какой-нибудь XYZ-modem не пашет к примеру), а с этим никогда никаких заморочек не было.\

    В общем, под винды рекомендую.

  6. вот сижу, мучаюсь с hyperterm и думаю — вот неплохо бы отвлечься, поискать что-нибудь приличное в инете. а тут — бац — такая статья! мистика!
    вобщем спасибо.
    кстати, а как putty с компортом подружить? разве это возможно?

  7. DI HALT, Вы не правы. В бесплатно версии Free Serial Port Monitor захват присутствует. Пользовался неоднократно. Да у этой программулины только захват и присутствует :)))
    Входящие\исходящие разбиты по двум отдельным окнам. А вот время не пишет, но вроде пока и не нужно было.

    А макросы действительно удобно. Даже тех 12-ти, что присутствуют в Terminal, не всегда хватает :)

    1. Вот сейчас у меня установлена последняя версия FreeSerialPort Monitor

      Там доступна ТОЛЬКО терминалка. Даже слушать два RS232 порта сразу нельзя.

      Режим анализа протокола (в один порт входит из другого выходит, а прога слушает) только в про версии.
      Режим воспроизведения данных — только в про версии

      А про перехват данных Soft-Port даже слова нету. В про версии вроде бы есть

        1. Не, ты не понял.

          Захват это когда девайс общается с какой либо софтиной, а программа подслушивает и ведет лог этого обмена.

          Либо вклинивается в линию передачи между двумя девайсами (надо два ком порта) и ведет лог обмена.

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

              1. Такое ощущение, что мы говорим о разных программах :) Потому-что мой Free Serial Port Monitor 3.31 (как раз эта версия выложена на сайте, а последнее обновление было в 2005) только и умеет, что перехватывать обмен между софтом и устройством. Посылать данные на СОМ-порт, как Терминал, фри монитор не умеет.
                Брал во тут: http://www.serial-port-monitor.com/free-serial-port-monitor-downloads.html

                1. О блин! Так он может на порт цеплятся. Главное в нужном порядке запускать. Вначале порт монитор, потом целевую софтину. А я наоборот делал — вначале прогой цеплялся, а потом уже пытался сессию поднять. Естественно он занятый порт не видел.

  8. Снова спасибо за полезную информацию!

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

  9. Есть еще вот такая программа — http://code.google.com/p/serialcom/

    Из плюсов — opensource, работает не только с компортами, но и с сокетами, причем может быть также и сервером. Также имеет интересный метод печати дампов — называет Smart Hex Dump. Видимые символы отображаются просто символами, а непечатные — в виде дампа. Эдакое сочетание вимости и кодов. Бывает очень удобно.

    Автор — я ;-)

  10. Использую терминалку (freeware) Multiway под винду, т.к. она среди прочего омроновские протоколы поддерживает. Нареканий в общем нет.
    Описание:
    «Features and protocols included:
    — Sysmac-Way series
    — FINS serial Toolbus, Ethernet UDP and TCP
    — Modbus RTU Master / Slave TCP Client / Server
    — ASCII terminal serial, Ethernet UDP / TCP
    — Modem functionalities PSTN / GSM
    — Terminal Map ASC02/11/21/31.
    — Compoway/F
    — Sniffer port RS232C
    — Booster RS232C/Ethernet UDP
    — OPC Client»
    Screenshot: http://www.support-omron.fr/images/Modbus.JPG

    Скачать: http://cospa.ru/disk1/Software/MultiInstall.zip

  11. Когда я подбирал терминалку для своих нужд, Bray мне чем-то не понравился, чем именно — не помню, но помню что чем-то существенным.
    В результате я остановился на HTerm от der-hammer (кстати, как по виндами, так и для линукса есть). Данные может представлять в hex, bin, dec, ASCII, причем одновременно. Дамп пишет в перечисленных форматах плюс raw и csv. Интерфейс так же типа «всё под рукой». Скрипты и передача файлов не умеет, во всяком случае, в моей версии (0.6.5, аж 2006 года, сейчас посмотрел на сайте — 0.8.1 лежит)

    В качестве сниффера использую PortMon Руссиновича (Sysinternals, ныне поглощенная микрософтом). Единственный минус, на мой взгляд — настраиваемость слабовата. А по функциям — вполне джентльменский набор: дамп с таймштампами, ловит как данные, так и управление портом…

    А вообще, посмотрю-ка я новые версии как Bray так и тулкита, что-то уж больно вкусно описаны.

  12. Есть вопрос к разбирающейся публике, как из терминала послать на мк несколько байт, так сказать не по очереди, вписывая байтик и отправляя их один за другим, а скажем записать байтики в текстовый файлик и отправить его? Мне не понятно как программа-терминал будет отсылать этот файл с байтиками или такой режим не применим для отсылки байтов на юарт мк?

      1. Спасибо, DI HALT, вопрос снят. Получилось отправить из программы-терминала
        Terminal v1.9b by Bray txt файлик с записаными подряд буковками, мк их корректно
        принял, что я увидел по диодам, которые засветили двоичные коды принятых буковок.
        Спасибо за полезную статью.

  13. Terminal v1.9b by Bray
    Замечательная вещь, но однажды у меня с ней вышел досадный трабл…

    Надо было законектиться на com11 … А… аа…. а… Нет там его…
    Только 10 и всё… Так и не придумал, что с этим сделать… Пришлось юзать другой терминал…

  14. ПРивет! Пользуюсь терминалом v1.9. Вопрос встал с соответствием ASCII таблицы с тем что я шлю. В мк зашиваю слово «Hello!» и просто отправляю его на терминал. а на терминале какая то хрень следующего вида — «·MÒR¤» (при выборе галочки ASCII) или в хексах — 00 B7 4D D2 52 A4 03 00. первые и последние нули понятно что. Какие настройки нужны терминалу для корректного отображения данных?

  15. со скоростями все в порядке. согласно формуле — fck — 24MHz, скорость — 9600, по формуле получаем переменную USARTDIV — 156,25. переводим в хексы — 0х09С4 и пишем в регистр BRR. все вроде правильно. а кракозябры прут!

  16. я раскомментировал в файле system_stm32.c вот эту строчку #define SYSCLK_FREQ_24MHz 24000000 и ее использую в проекте. эта частота является частотой SYSCLK в RCC. может я и не прав, но в проекте с морганием светодиодами я использовал ее для реализации функции задержки.

  17. всем привет! запустил уарт и обмениваюсь с терминалом. байты шлются — просто красота. но вот дернул меня черт понажимать кнопки DTR и RTS. и с ними все хорошо шлется и когда обе нажаты и когда по отдельности. но вот не задача, когда они выключены — байты НЕ передаются! печаль! подскажите как это можно исправить к первоначальному состоянию, чтобы с выключенными кнопками работал уарт.

  18. Интерфейс «всё-в-кучу», наверно, хорош наглядностью, но он же занимает много места! Если работать только с терминалом, то пофиг, а если запущена ещё кучка программ? Да на ноуте? Вот кабы верхняя часть сворачивалась. Или её можно было бы отцепить как отдельный тулбар :) Может заслать автору идейку?
    ЗЫ: сам пользую простенький AccessPort http://www.sudt.com/en/ap/index.html — бесплатный, не требует инсталляции, режимы терминала и монитора.

  19. Подскажите пожалуйста, как при отправке байта с контроллера, задать его (байта) цвет для гипер терминала? к примеру посылать слово GPS_sat и при каком-то условии красить надпись то в красный то в зелёный.

  20. А подскажите снифер. Надо снять обмен между двумя железками. Т.е., я так понимаю, надо слушать два потока и выводить их на экран (в файл). Желателен вывод в одно окно, с разделением потоков, например, цветом. Режимы ASCII и HEX. PS: Статью и коменты читал, COM Port Toolkit скачал, буду пробовать, но, может, что-то ещё подскажете?

  21. Подскажите как в Terminal v1.9b отправлять непечатные символы (возврат каретки и тп) для AT команд нужно. Например
    AT+CREG? {здесь ENTER надо заслать} — а как не понятно…

  22. Перечитал сегодня еще раз комментарии — скачал обновленную версию v1.91 — а рядом с кнопкой «sensd» флаг +СR появился. DI, спасибо огромное за твой сайт.

Добавить комментарий