Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

Утилита для управления турелью HSFW от Edmund Optics

Итак, вчера я написал базовый функционал для управления турелью "High Speed Filter Wheel" от Edmund Optics, сегодня добавил функцию смены имен колес/фильтров и более-менее дополировал. Код лежит на гитхабе (т.к. утилитка мелкая, я ее в сниппеты запихал, чтобы отдельную репу не делать), а также в одноименных репах на сосфорже, гитлабе и битбакете. Функционал сброса имен в "умолчательные" значения пока не добавлял (не думаю, что нужно).

Вот краткая справка:
HSFW_manage

  -H, --home              переместиться в стартовую позицию
  -N, --wheel-name=arg    название колеса
  -W, --wheel-id=arg      буквенный идентификатор колеса
  -h, --help              отобразить эту справку
  -i, --filter-id=arg     идентификатор фильтра, например, "A3"
  -n, --filter-name=arg   название фильтра
  -p, --f-position=arg    номер позиции фильтра
  -s, --serial=arg        серийный номер турели (с начальными нулями)
  --list                  список имен только присутствующих устройств
  --list-all              список всех сохраненных имен
  --rename                переименовать сохраненные имена колес/фильтров

Если запустить утилиту без параметров, она выдаст на экран текущую позицию турели. В принципе, базовый функционал из справки понятен: это перемещение в "дом", перемещение в заданную позицию, выдача списка всех подключенных устройств или списка всех сохраненных в EEPROM параметров, переименование колес/позиций.
На случай, если вдруг в разных турелях будут установлены колеса с одинаковыми буквенными обозначениями и именами, я добавил доступ по идентификатору.
Кстати, пока гонял программку в попытках снять видео, нашел пару багов: 1) даже если указать другой идентификатор при подключенной одной турели, все равно будет выбрана она; 2) попытка переименовать фильт с номером >5 для 8-фильтровых колес (колеса F, G и H) заканчивается матюками, что номер позиции >5 (видимо, на стадии проверки). И если второе — ерунда, которую фичей можно обозвать, первое обязательно надо будет исправить, иначе в случае, когда подключено несколько турелей, и одна отвалилась, а обращение идет по идентификатору, вместо выдачи ошибки благополучно будет крутиться другая турель!

Видео:


UPD


Сегодня взял вторую турель и доработал утилиту: избавился от вышеназванных багов, добавил возможность сброса имен в значения по умолчанию, добавил возможность установки в позицию "дом" той турели, в которой есть указанный фильтр. Да и вообще, оказалось, что все купленные колеса промаркированы как 'A', т.е. обращаться надо будет либо по идентификатору (что не очень удобно), либо по именам (что удобней). Хотя, конечно, плохо, что колеса одноименные: если колесо воткнуть в "чужую" турель, понять об этом можно будет лишь после пробных снимков (и то, возможно, не сразу)...

Систему управления фотометром планируем только под линукс писать (Тимур говорит, что "родной" линуксовый SDK для быстрой камеры присутствует и есть истории успеха работы с ним), архитектура будет клиент-серверная. А вот клиенты уже будут кроссплатформенными (для себя, наверное, консольную сделаю, а для народа тимур на Qt нарисует). Самой интересной и сложной будет методическая работа: как обрабатывать "кубы данных" с быстрой камеры, чтобы реализовать работу Lucky imaging. Заодно думали про фокусировку: если у цейсса нет каких-нибудь характерных асимметричных дефектов изображения (скажем, комы) с амплитудой выше полуширины первого максимума функции Эйри (но, понятное дело, меньше сиинга, иначе эти дефекты давно заметили бы), то определить знак изменения фокуса без перефокусировки (или установки в сходящемся пучке асимметричной маски) будет невозможно!
Tags: c, usb, велосипедостроение, железяки
Subscribe

  • А что, в С так нельзя?

    Пытаюсь передать в функцию цвет как массив. Функция такая: void Pattern_draw3(Img3 *img, Pattern *p, int xul, int yul, uint8_t colr[3]); И…

  • Ардуиноподход

    Вот как ни гляну, большинство народу для считывания данных калибровки в BMP/BME280 использует типичный ардуиноподход, как, например, здесь: зачем-то…

  • Темы-2

    Некоторые испугались, прочитав предыдущие темы. Повторяю: темы для работы в течение всей школы (три года). А вот — их части, которые можно осилить за…

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

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 2 comments