Category: корабли

Category was added automatically. Read all entries about "корабли".

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
Костерок

Курить маны, говорите?

Пытаясь скрестить all-sky с болтвудом столкнулся с проблемой: у обоих RS-485 через FTDI идет, т.е. VID/PID одинаковый, и хитрый симлинк udev'ом не сделать (ну или просто через libusb+udev можно было бы в программке сразу нужный девайс искать). И вот оказалось, что если демон, работающий с all-sky, уже запущен, то в случае если кто-то что-то в порт напишет, происходит зависон (т.к. нужно реинициализировать устройство, охреневшее от неожиданных данных).
Сразу подумал, что можно было бы открывать порт, блокируя его. Убрал из open() O_NONBLOCK, и — фигвам! Этот флаг не отвечает за блокировку устройства, а лишь блокирует процесс, пока устройство не будет готово.

Ну и как, интересно, мне открыть порт так, чтобы никто больше его не мог открыть?

UPD: надо было сразу гуглить "lock serial port", ioctl с флагом TIOCEXCL должен помочь (отсюда).

UPD-2: TIOCEXCL не защищает от повторного открытия порта рутом! Т.е. для обеспечения надежности таки демоны надо из-под рута запускать.

UPD-3: вывод был сделан неверно. TIOCEXCL просто не работает у рута!
Костерок

Морзянка на STM32F030

В рамках бодания с таймером на STM32F030 родил морзянку: фразы, пришедшие по USART1 (до '\n') выпискиваются в коде Морзе пищалкой, висящей на PA6 (TIM3CH1). Короткое видео паршивого качества.


P.S. Кросспост с dreamwidth.org сработал. Правда, встроенное видео не прошло.