Работа с СОМ-портом на Си в 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.

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

Передача данных в устройство через COM-порт

В продолжении нашей темы по виртуальному изучению возможностей LabView, попробуем сегодня передать данные в устройство и в зависимости от символа выполнять те или иные действия.
Алгоритм такой же как и в предыдущих примерах:
инициализируем com-порт;
в цикле считываем значение переключателя;
преобразуем цифру с переключателя в строку и передаем в com-порт.
В микроконтроллере вшита программа слушающая входные данные с порта, и в цикле case включая и отключая светодиод. Программу, например, берем отсюда AVR. Учебный Курс.


Читать дальше
  • +5
  • 02 ноября 2019, 19:54
  • gadz
  • 1

Обновленная версия "Знакомимся с LabView"

Многие начинающие исследователи LabView наверно столкнулись с тем, что пример (http://easyelectronics.ru/znakomimsya-s-labview.html) не работает в современных версиях. Функция Scan from String отказывается принимать входные данные с потока com порта.
В этот дождливый последний час октября, совершенно безвозмездно выкладываю свой вариант примера. Тестировалось в LabView14



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

ОСРВ Windows

ЖЕЛЕЗНЫЙ ТЕСТ



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

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

COM Port Terminal

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



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

Отладка программ для AVR через виртуальный COM порт Proteus

Всем привет. Заранее боясь прослыть некромантом, представляю краткую заметку о способе отладки программ для микроконтроллеров avr, использующих связь с компьютером или другим мк через uart. Предназначен для тех, кто о нем не знает, на революционность не претендую.


Читать дальше
  • +3
  • 06 июня 2015, 02:42
  • XOR

Excel и автоматический сбор данных.

Excelsior сборка данных


Вопрос о получении данных в Excel довольно подробно разобран на бывшем pcports, а ныне kernelchip.ru, единственная проблема это то, что приведенные примеры относятся к старым версиям Excel и mscomm32.ocx и в новых операционных системах (напр. w7) это все не поддерживается. Activex компонент mscomm32.ocx не устанавливается в семерку и не поддерживается новыми версиями офиса. Не знаю с чем это связано, но мне так и не удалось найти встроенный аналог этого компонента в VBA, зато нашелся бесплатный компонент совместимый и с w7 и с новым офисом — https://home.comcast.net/~hardandsoftware/NETCommOCX.htm управление им такое же как mscomm.ocx только немного другие названия.

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