dlinyj: (Default)
[personal profile] dlinyj
Что-то клавиатура покрылась пылью, я начал сам зарастать жирком, и мозг заплывать. Пора взбодриться.

Долго думал, как же лучше рассказать о программировании СОМ-портов в линуксе. Понимаю, что если писать нормальную статью, с полными выкладками, то получится капец как долго и сложно. При этом статья будет явно не одна и никто её читать не будет она будет сложна для схватывания сути. Поэтому я решил сделать видеоурок по программированию СОМ-порта.


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

Пока примерная дата прямой трансляции - грядущее воскресенье 9 сентября, 18:00. В субботу я отдельно скажу о времени, явке, ссылках. В любом случае, трансляция будет на моём канале.

Я надеюсь ещё на вашу информационную поддержку, а так же поддержку [livejournal.com profile] di_halt

Date: 2018-09-06 01:29 pm (UTC)
From: [identity profile] instantmanager.livejournal.com
Буквально на прошлой неделе подохла малинка и вместо нее датчики опрашивает ардуина подключения к компу.
Написал на питоне простенький скрипт опроса. Вроде работает, а что там сложного?

Date: 2018-09-06 02:33 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Питон для слабаков.

А если по сути, то даже в питоне много подводных камней при работе с несколькими СОМ-портами. Плюс, как на счёт сырых данных и одновременно требуется и слать и получать данные? Поточно, непрерывно
Edited Date: 2018-09-06 02:35 pm (UTC)

Date: 2018-09-06 03:50 pm (UTC)
From: [identity profile] electrodyssey.livejournal.com
в своё время это руководство сильно пригодилось: https://www.tldp.org/HOWTO/pdf/Serial-Programming-HOWTO.pdf

Date: 2018-09-06 04:15 pm (UTC)
From: [identity profile] instantmanager.livejournal.com
Каждый компорт - отдельный файл - никаких проблем. В цикле пробегаем, если что-то есть отрабатываем. Ну или с колбэками (не знаю как это в питоне делается).

Вот с последним согласен, это уже не так тривиально. Но опять же, открываем дважды: на чтение и на запись и работаем.

Date: 2018-09-06 04:26 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Проблема в том, что все эти руководства ОЧЕНЬ не полны!!!

Date: 2018-09-06 04:27 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
А если данных очень много. И не открывая/закрывая, а получать и передавать непрерывно?

И представим, что у нас не какие-то сраные 115200, а десяток мегабит?
Edited Date: 2018-09-06 04:27 pm (UTC)

Date: 2018-09-06 04:29 pm (UTC)
From: [identity profile] electrodyssey.livejournal.com
Соглашаюсь

Date: 2018-09-06 05:09 pm (UTC)
From: [identity profile] instantmanager.livejournal.com
in = fopen("/dev/usbACM0", "r")
out = fopen("/dev/usbACM0", "w")

while(1) {
if(in.что-то-есть){
in.четаем(buffer1)
}
if(есть чо сказать) {
out.пишем(buffer2)
}
}

хоть гигабит

Date: 2018-09-06 05:55 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Ну это не асинхронно, если чё так.

Ограничение тут - размер буфера ядра.
Edited Date: 2018-09-06 05:56 pm (UTC)

Date: 2018-09-06 08:28 pm (UTC)
From: [identity profile] free-artp.livejournal.com

Как то пришлось прорываться через этот вопрос. Последовательно на bash, python, C. Синхронно с дерганьем GPIO. В принципе, заработало, но насколько бы верен выбранный ПУТЬ?


ЖДЕМ с нетерпением видеоурок.

Date: 2018-09-07 04:28 am (UTC)
From: [identity profile] instantmanager.livejournal.com
мне кажется это как раз асинхронно (условия вносят асинхронность).
а вот если б надо было синхронно то пришлось бы городить треды.

размер буфера ядра то тут причем?

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 04:02 pm
Powered by Dreamwidth Studios