The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Конфигурация serial port"
Отправлено Аноним, 28-Июн-15 12:09 
> Спасибо! Все заработало!

Отлично :)

> Благо обошлось без этого.

Но запомнить этот момент не лишне. Я так как-то долго прыгал по грабелькам. А потом заметил что файл девайса оказывается вовсе и не файл девайса, а уже обычный файл.

> Полностью согласен. И не читайте всякими hexdum`пами и cat`ами и иже с ними.

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

> Особенно миникомами.

Он переклинен на диалапных модемах. Терминалка для обзвона BBS-ок. Остальное там - "можно, но сложно".

> Действительно уйму времени угробил, пока понял, что не все они "читают".

Миником ожидает модем. А обычные утили - обычные файлы. Попытки кормить софт не тем чем он ожидал - ни к чему хорошему не ведут.

> мощь не позволило недостаточность моих знаний.

Да там все достаточно просто. Хотя спама может быть многовато. Можно обрубить лишнее, встроенным фильтром или просто каким-нибудь редиректом в grep.

> Это было сделать не тривиально: UART бридж на основе CP210x физически спрятан

Извиняюсь, невнимательно читал что у вас погодная станция. Думал что кабель все-таки отдельно. А с отдельными кабелями бывает много грабель в электрическом уровне, вот я "по инерции" и посоветовал.

> схемотехнике самого устройства у меня знаний не хватает.

На самом деле это не так уж сложно, в том плане что найти надо этот самый CP2102 и посмотреть куда идут его лапки TX и RX (даташит на CP210x - общедоступен). Скорее всего к процу этой штуки, на его UART. В лучшем случае могут быть контактные площадки или даже разъем с UART-ом. Но разбирать готовый девайс и правда как-то не очень.

>> Поэтому если вы будете лезть с виндовым бэкграундом в
>> линух - будете получать граблями по лбу.
> Согласен, но с чего-то начинать нужно.

На самом деле я сам когда-то прогрмамил компорты в винде. А теперь в линухе. Они не настолько уж разные. Но отличия все-таки есть. И желание срезать угол на предыдущих знаниях может сыграть дурную шутку иной раз.

> Очень надеялся, что переслать пару байт возможно без глубокого (относительно) изучения
> всей системы. Но нет...

Ну это на самом деле нечто типа random. Может и получится, в зависимости от. Параметры порта - можно выставить утилитой типа setserial, например. Но изначально ее может в системе и не быть. И мне кажется надежнее явно впрогрмамить заведомо правильные настройки порта и проверять статус операций. Так по крайней мере в случае чего - понятно что не так.

> Это действительно так. И я так и поступил. Правда влез в stty.

Да не принципиально в кого именно, единственное что всякие "терминалы" и т.п. - могут использовать "канонический" процессинг текста, а насколько вы хотели это при работе с произвольным девайсом - отдельный вопрос.

> И тут можно "плохому" научиться)) Так что не все сорсы одинакого полезны?

Как написано в том мануале на который я сослался, есть канонический ввод, ориентированый сугубо на построение терминалок. И есть неканонический, где система не пытается умничать и делать строки из того что строками может и не являться. По понятным причинам, с произвольными данными работать надо в неканоническом режиме. Если этот момент упустить - можно удивляться тому что данные "портятся".

> Уже тоже имееться своя узкая тропинка, усыпаная грабельками...

Да на самом деле там не все так страшно, особенно если подсмотреть у кого-нибудь заведомо работающего как это делать.

> Это было одно из первых, что я прочитал.

Даже так? Про это можно было бы упомянуть :)

> Только без *никсового бекграунда это очень тяжело воспринимается снаскоку.

Я бы не сказал что я - такой уж крутой *никсовый программер. Там вроде все достаточно логично написано и не то чтобы мне требовался при чтении этого какой-то бэкграунд.

> И да, работаю в режиме "многозадачности" и конечно чистого времени на эту
> проблему не пара недель. Просто когда вижу, что мысли начали заходить
> в тупик, переключался на другую задачу, где "бери лопату и кидай"))

А, ну понятно :). А я то удивлялся - как за 2 недели можно не найти тот how to и что там в нем 2 недели читать. Я то в него более-менее въехал ну может часа за 2.

> взял в руки что потяжелее, c++ например. Так отконфигурил, вот кусок кода:

...
> Ну а потом select в руки и read. И все заработало.

Ну вот я тоже как-то так предпочитаю :). Там ничего особо страшного.

> Параллельно большое спасибо за udev! Так как и сам девайс не подарок.
> Как оказалось переодически отваливался от компьютера,

Вот это уже может быть глюками старого ядра. Как бы там ни клялись про стабильность фанаты дебиана, мне ядра до 3.10 в плане работы usb не очень нравятся. На самом деле, чипы и чипсеты в мамках - достаточно бажные. А драйвера наполовину состоят из "quirks" и воркэраундов глюков чипов. Одна из причин по которым я не люблю старые ядра - чем новее ядро тем о большем количестве нестандартных закидонов чипов оно знает и знает как правильно выходить из таких штопоров или вообще не допускать их.

> и премонтировался под разными /dev/ttyUSB#.

Ну да, если ttyUSB0 уже занят, очередной адаптер сядет на ttyUSB1, и так далее.

> grep показал, что "USB port nn disabled by hub (EMI?)". Причину
> EMI искать в устройстве-компе не стал, провода точно хорошие,

Тогда может быть это какие-то глюки чипа или чипсета а относительно старый кернел не все воркэраунды содержал.  С другой стороны, качество проводов для usb на глаз прикинуть тоже нелегко. Это скоростная дифференциальная пара, там волновое сопротивление роялит и прочие отражения сигнала. На глаз это проверить не то чтобы просто.

> симлинк с постоянным именем для девайса.

Вариант. Заодно можно какое-то более логичное название девайса дать. Скажем /dev/weatherstation. Из недостатков: прога будет по идее сталкиваться с ошибками чтения когда девайс отпал. Но если написать там переоткрытие порта - работать по идее будет. Хоть это и костыль и по хорошему так быть не должно.

> Только в удев_рулёзе так и смог команду RUN заставить работать...

Я в правилах обычно пользуюсь чем-то типа: RUN+="/usr/bin/program %k" (отдает /usr/bin/program как argv[1] параметр %k, который "название девайса по мнению ядра"). Да, там надо указывать ПОЛНЫЙ путь к программе. И там не будут работать всякие фичности шелла типа перенаправлений или раскрытия wildcard, насколько я помню. Это просто выполнение программы а не шелл. Но можно передать кучу параметров и прочая. Путь к программе - ***обязательно*** полный. А примеры подсмотреть можно в системных правилах, их немеряно в каком-нибудь /lib/udev/rules.d/ :)

> все равно не исполняется.

Странно, у меня исполняется. Например, на нотике я делаю как-то так:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNEL=="wlan*", RUN+="/usr/bin/macchanger -r %k"

Этот рулес при появлении сетевого устройства "wlan*" в системе - запускает программу macchanger, которая ставит на указанном интерфейсе (%k - имя девайса по версии ядра) рандомный MAC. Небольшой подарок любителям слежки за перемещениями людей через отслеживание MAC в периодических probe requests :P. Или "как запилить это более честно чем apple" :)

> Еще раз, всем огромное спасибо!

Да не за что - приятно помочь сообразительному человеку.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру