Mar. 14th, 2017

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

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

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

UPD-2: TIOCEXCL не защищает от повторного открытия порта рутом! Т.е. для обеспечения надежности таки демоны надо из-под рута запускать.
eddy_em: (Default)
В попытке написать скрипт автозапуска демонов all-sky и cloud sensor, пока еще мне не подсказали о /dev/serial, я что-то эдакое записал в порт камеры, проверяя на нем, не является ли он болтвудовским датчиком.
В итоге коммуникация с камерой работает нормально, а вот картинку она не отдает. Точнее, отдает первую порцию данных с недостачей в несколько байт, а дальше молчит.
Пока я тут методом тыка пытаюсь разобраться, заодно послал запросы в техподдержку и на форум SBIG ­— вдруг таки дадут полноценный протокол? А вообще, это свинство — делать такие дорогие железки, и не сопровождать их уж если не SDK, так хотя бы полноценной документацией!

UPD: если запустить fits_capture.py отсюда, то изображение считывается, и дальше мой демон работает без проблем.
Ну вообще мистика какая-то — ведь в питоновом скрипте все точно также, разве что чтение блокирующее! Похоже, что-то я намудрил с ioctl'ами... Неужто TIOCEXCL в этом виноват? Потому как все остальное осталось таким же, каким и было.
eddy_em: (Default)
Сегодня я отлутил и спаял плату для второго термодатчика. Коллега на работе дал мне кусок стекла для чистоты эксперимента (все-таки, датчики к стеклу будут клеиться, правда, не совсем такому). Я приклеил датчики к стеклу, и стал копить статистику.

Дальше )

October 2025

S M T W T F S
   1234
567 89 1011
121314 15161718
19202122232425
2627 28293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 10th, 2026 08:17 pm
Powered by Dreamwidth Studios