Кросс-платформенный терминал - SerIO

«SerIO» это кросс-платформенное приложение терминал, предназначено для организации связи и обмена данными через последовательный порт между ПК и различными электронными модулями или устройствами. Приложение ориентировано на любителей и специалистов в области разработки и конструирования различных электронных устройств и систем. Все элементы управления и контроля расположены в одном окне и оптимизированы для максимально удобной работы оператора. Передаваемые данные могут иметь формат строки ASCII символов, шестнадцатеричных значений, паттернов данных, пользовательских файлов и таблицы команд назначенных на функциональные клавиши F1 — F12. Доступна функция передачи данных в порт по таймеру, с заданным источником и интервалом времени. Принимаемые данные могут отображаться в символьном виде, шестнадцатеричном, двоичном и графическом (осциллограмма или диаграмма). Используя профили, можно оперативно изменять настройки программы под различные задачи и оборудование. Количество создаваемых профилей не ограничено.

Данное приложение является продуктом моей миграции с ОС Windows на Linux, а так же перехода c «MS Visual Studio» на кросс-платформенную среду программирования «Open Source QT Creator». Для освоения новой среды программирования, решил сразу начать с какого ни будь полезного проекта. Выбор пал на создание удобной, в моём понимании, терминальной программы. К тому же, реально удобных и функциональных терминальных программ, пригодных для работы в сфере электроники, практически нет, или я о них просто не знаю… Интерфейс программы англоязычный, вся терминология стандартная для такого плана приложений. К тому же, это гарантия того что программа будет корректно отображаться в любой языковой локализации.

Приложение «SerIO» это свободное программное обеспечение, распространяется под лицензией GNU GPLv3 или выше, без каких либо гарантий. Скомпилировано статически, включает все необходимые зависимости (библиотеки) для своей работы.

Главное окно программы

Примеры отображения принимаемых данных в графическом виде



Инструкция: SerIO-201020-manual-RU-Rev1.pdf

ОС Linux (x64): Ubuntu 20, Mint 20, Manjaro 20, Fedora 32
1. Скачать архивный файл SerIO_201020.tar.xz (универсальный пакет)
2. Извлечь содержимое архива, папку SerIO, в домашнюю папку пользователя /home/user/ (user — это ваше имя пользователя)
3. Выполнить инструкции описанные в файле /home/user/SerIO/ReadMy.txt

ОС Windows (x32x64): 7, 8, 10
SerIO_201020.exe

Исходный проект: SerIO_source_201020.7z
Перед тем как использовать исходный код, ознакомьтесь с условиями лицензии GNU GPLv3.

Работа с СОМ-портом на Си в linux

Каждый, кто постоянно занимается электроникой и программирует встраиваемые устройства, неизбежно сталкивается с необходимостью работы с СОМ-портом под линуксом. Чаще всего появляется задача сопрячь какой-то датчик, либо удалённое устройство с одноплатником. Да, что греха таить, сейчас в 2020 году UART, наверное, самый распространённый интерфейс для обмена данными, несмотря на всю его архаичность.
Поэтому умение работать с СОМ-портами в linux особенно важно. И вот, казалось бы, UART, древнейший интерфейс, всё должно быть известно и понятно, и даже опытные программисты ломают зубы, работая с ним в линуксе. Особенный цирк с конями начинается при работе с передачей сырых данных по RS-485. Не знаю ни одного программиста, который бы не хватил горя при разработке ПО для таких решений. Самое забавное, что с более новомодным i2c работать в линуксе куда проще и понятнее, чем с ортодоксальным UART. Чтобы не было путаницы дальше, всё семейство UART (RS-232, RS-485, UART 5V, UART 3,3 и т.д.) по тексту я буду называть COM-порт или UART. Мы говорим в статье не о физическом интерфейсе, а о программной стороне вопроса.
В этой статье я хочу показать, как писать свои программы, работающие с UART в ОС Linux. И неважно на каком языке вы пишете программу для работы с UART (python, c, c++, bash, php, perl и т.д.), принцип работы и грабли будут одни и те же, так как всё равно всё упирается в системные вызовы к ядру. А не понимание того, что там происходит и приводит к различным трудноуловимым багам.


Телетайп, на который БЭВМ могли выводить и получать данные. Фото взято здесь

Исторически сложилось, что СОМ-порт в UNIX использовался как терминал. То есть, как устройство для отображения и получения информации работы с ЭВМ. Отсюда идёт всё базовое наследие работы UART.

Читать дальше

QThread + QSerialPort! Крутим в отдельном потоке работу с СOM портом ( продолжение). + чучуть протокола DCON

Продолжение предыдущего моего топика о работе с Qt
Так и не дошли руки (стыдно мне очень перед тов. Alatar ) доработать его.
Задача: Организовать стабильный обмен данными (важен сам прием) дописать немножко терминалку. Получить критику и подзатыльники(если будет за что).
Посылка с устройства идет байтами и не всегда это неразрывный поток. В большинстве случаев между байтами проскакивают паузы. По этой причине нужно немножко подзаморочится… Приведенный в предыдущем моем посте способ приема – банальная подпорка палкой.


Читать дальше
  • +1
  • 26 марта 2014, 18:09
  • kalik
  • 1

QThread + QSerialPort! Крутим в отдельном потоке работу с СOM портом.

В одном из своих проектов столкнулся с небольшой проблемкой: задача заключается в том, что нужно работать с тремя разными портами одновременно(если быть точнее с двумя, а при настройке и калибровке оборудования 3мя), а самая большая опа в том, что все они общаются по разным протоколам… да в придачу два (в некоторых случаях 3) устройство висит на RS485 с протоколом DCON, это первый порт! Одно устройство на RS232 с жутким самопальным протоколом внеочередной переделкой Wake. И настроечно-калибровочное подключается также по RS232-му, протокол неизвестен (занимаюсь расшифровкой)… Ну это все прелюдия и ОФФТОП…
В такой задаче ИМХО целесообразно крутить работу с каждым портом в отдельном потоке. Вот на этом месте и начались все проблемы… Проведя жуткоскучный и мучительный лит. поиск «ГУГЛ в помощь» результаты были весьма и весьма неоднозначны. Мои подзатыльники самому себе и хочу здесь привести на примере создания простейшей ГУЕвины терминалки с использованием QserialPort и Qthread. Надеюсь топик поможет многим, да и мне возможность получить дополнительных подзатыльников=)))


Читать дальше
  • +3
  • 16 февраля 2014, 19:27
  • kalik
  • 1

USB Virtual COM на STM32L - Keil Project

Предлагаю проект для контроллера STM32L152 для организации виртуального COM порта (USB-COM). Проект основан на публикованном ранее похожем проекте для STM32F103ZE: STM32 — организация виртуального COM-порта
Большое спасибо автору за хорошую публикацию.


Читать дальше

Программа (TCP_SerPort) редиректор TCP<> COM порт под Android



Обратился ко мне один клиент-медик со следующим вопросом.У него есть оборудование (медицинский прибор) которое представляет из себя контроллер (на AVR ) c USB выходом (FTDI FT232RL) и компьютер с программой управления.Через программу управления заливаются данные в контроллер и снимаются некие показания.Прибор вообщем не ответственный, но нужный.Контроллер имеет батарейное питание.Так как в медицине жесткие требования к безопасности (4KV и т.д) то приходится часто отключать прибор, подсоединять к PC и т.д короче «гемор».Все это еще осложняется тем, что программа достаточно навороченная и «сертифицирована» у медиков и как раз тот «классический» вариант когда программиста верхнего уровня уже не найти ( или уехал/уволился или спился :) Также были пожелания что бы пациенту выводились некоторые данные на экран и была бы возможность по по WIFI считывать изменять данные.Вот такие «хотелки».
Мною была предложена и сделана следующая схема.
Берем Андроид планшет c USB HOST, подключаем к нему через кабель USB-OTG прибор.На планшете включаем WIFI точку доступа к которому подключается по WIFi ноутбук.На компьютере запускаем эту программу
Virtual Serial Port
которая создает виртуальный COM порт в системе и перенаправляет данные по сети на Андроид.А на Андроид пишем программу-редиректор TCP<>COM
Программа принимает данные с сети (ТСP) и перенаправляет их через СОМ порт подключенный к Андроид на различные устройства.Поддерживаются переходники USB<->COM на чипах FT232RL(FTDI), CP2102(Silicon Lab), PL2303(PROLIFIC).
Андроид должен иметь USB HOST и версию не ниже 3.1
Запускаем медицинскую программу которая работает через виртуальный СОМ по WIFI сети с контроллером.Все работает, все довольны :) На экране планшета я также отображаю некоторые данные как бонус :) и кнопки старт/стоп для персонала.
Думаю редиректор можно использовать и в других случаях.Написал порт программы убрав лишнее.Кому интересно пробуйте :) Где это можно использовать?
Допустим у Вас есть устройство (например теплосчетчик или микроконтроллер) который имеет интерфейс RS232 или USB и работает напрямую с компьютером.Теперь Вам надо получать/управлять им через сеть или Интернет.Часто бывает что переписать программу на компьютере на сетевую нет возможности и переделывать контроллер на сетевой тоже часто не просто.
Запускаем программу TCP_SerPort на Андроиде.В программе VSP на компьютере указываем IP и порт(3333) Андроид устройства.Запускаем программу которая работает с подключенным оборудованием на PC и подключаемся к виртуальному СОМ порту.Все.Работаем с устройством по сети.
Софтовый аналог программы замечательная утилита LINUX ser2net.Есть программы редиректоры под PC, но они в основном платные и на обоих сторонах должны быть компьютеры, что часто неудобно.
Есть так-же «железные» решения типа Tibbo, там тоже свои нюансы.
Плюс использования Андроид в том что небольшое/недорогое, сразу имеем WI_FI и можно еще организовать обработку, отображение и запись данных. Редиректор также можно использовать в робототехнике когда андроид устройство стоит на тележке, а рулим удалено с PC или другого андроида. Для этого просто пишем клиента к TCP серверу. Можно применять для Ардуино :) (Сейчас налетят хулители :) ) Так-же можно подключать различное торговое оборудование(сканеры, принтеры и т.д)
Программа Вета версия.Делал под свои задачи.В брендмауре на PC открыть порт 3333!!!
При работе с программой следует учитывать задержки которая может вносить сеть и если в программе верхнего уровня используются короткие тайм-ауты (например MODBUS), то могут быть проблемы.
Буду рад если пригодится еще кому то.
Конструктивные замечания/предложения приветствуются.Перед использованием можно проверить работают ли у Вас на устройстве переходники USB<> COM моей программой TermUSB
TermUSB

Если у Вас Андроид >= 3.1 и есть USB HOST и не заработало, внимательно читаем топик
Топик TermUSB
Так-же рекомендую для тестирования программы TCP_SerPort по сети эту утилиту
Hercules UTILITY

Исходники не даю так как ссылки на исходники по работе с ком портом на git давал в предыдущих топиках, читайте.Успехов!

Управляем сервомашинкой из LabView

Предисловие.
Еще прошлым летом побывал я в Киеве, в магазине радио управляемых моделей. И там удалось мне купить потрепанную сервомашинку – PROTECH B-150. Вроде как механика у ней барахлила под нагрузкой, от того и списали. Но вообще рабочая, для экспериментов пригодная.


Читать дальше