March 14th, 2017

Костерок

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

Пытаясь скрестить 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 просто не работает у рута!
promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
Костерок

Рукожопие продолжается

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

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

P.S. Для пользователей внутренней сети обсерватории данные с болтвудовского датчика будут доступны по этому адресу: http://znd.sao.ru:55555/
Можно будет делать запросы с веб-страниц и обрабатывать их, чтобы вставлять куда надо данные. А на zarch.sao.ru будет крутиться архивный демон, сохраняющий изображения all-sky а FITS-файлы с добавлением в шапку информации о показаниях болтвуда.
Костерок

Сравнение двух TSYS01

Сегодня я отлутил и спаял плату для второго термодатчика. Коллега на работе дал мне кусок стекла для чистоты эксперимента (все-таки, датчики к стеклу будут клеиться, правда, не совсем такому). Я приклеил датчики к стеклу, и стал копить статистику.

Collapse )