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

Categories:

Еще одна веб-морда на RPi для спектрометра

Сейчас закончил еще одну веб-морду, вот как она выглядит:
2016.01.18_21:07:35



Чтобы не плодить сущностей, я добавил ее как поддиректорию в репозиторий rasp-spect. Для видеоподсмотра используется astrovideoguide_v2. Я его тоже допилил: теперь есть возможность суммировать N кадров и равномерно растягивать уровни яркости по диапазону 0..255 (можно будет в принципе еще и подгонку гистограммы засунуть).

На верхнем рисунке изображены основные органы управления: включение/выключение опорных ламп ("плоский" спектр галогенки и опорный спектр торий-аргоновой лампы), перемещение подвижки с оптикой на концевики, изменение скорости движения подвижки (в принципе, не такая уж и нужная опция, а вот добавить индикатор, насколько близка подвижка к цели, стоило бы), суммирование N кадров для улучшения отображения, а также дополнительные параметры, позволяющие сменить тип видеостриминга (но "малинка" уж очень тормозная, через вебсокеты совсем уныло получается), сменить IP "малинки" (конфигурация сразу прописывается в /etc/conf.d/net и перезапускается сервис net.eth0) и даже перезагрузить "малинку", если что-то пошло не так.

Связь — как и раньше, через вебсокеты.

Дополнительные функции появляются только если вебсокет подсоединен, иначе они скрыты. Открыть их после подключения можно, нажав на текст "Дополнительные параметры":
2016.01.18_21:18:48


Кнопочки включения ламп меняют цвет на зеленый, если лампа активирована. Аналогично кнопочки перемещения подвижки "краснеют", как только наехали на нужный концевик.

Убил сегодня, кстати, полдня на попытки сделать из обычного адреса (80-й порт) POST-запрос на порт 54321 (для связи с процессом, формирующим изображения). Как только ни менял отклик, все равно не хотел, зараза, firefox принимать ответ. Пока не полез я в старые свои исходники и не обнаружил, что нужно добавить в начало ответа "HTTP/2.0 200 OK\r\n". Вот такой ответ отлично проходит:
		if(strncmp(found, "sum=", 4) == 0){
				int x;
				if(myatoi(found + 4, &x)){
					if(x > 0 && x < 255)
						Global_parameters->nsum = x;
				}
				size_t sumlen = snprintf(buff, BUFLEN, "sum=%d", Global_parameters->nsum);
				size_t L = snprintf(buff, BUFLEN,
					"HTTP/2.0 200 OK\r\n"
					"Access-Control-Allow-Origin: *\r\n"
					"Access-Control-Allow-Methods: GET, POST\r\n"
					"Access-Control-Allow-Credentials: true\r\n"
					"Content-type: multipart/form-data\r\nContent-Length: %zd\r\n\r\n"
					"sum=%d", sumlen,
					Global_parameters->nsum);
				write(sock, buff, L);
				DBG("%s", buff);
				break;
			}

В этом куске кода проверяется содержимое запроса (POST/GET или внутри сокета), а затем отправляется ответ — чтобы можно было изменить количество суммируемых кадров, а также узнать его текущую величину.

Еще очень много можно придумать с этой штукой, но оставлю на будущее. У меня еще система управления телескопом не допилена до конца, да и с анализом гартманнограмм пока вяло, не говоря уж о Шаке-Гартманне, в обработке которого еще конь не валялся!
Tags: raspberry pi, websockets
Subscribe

  • M$ teams…

    Начал с сегодняшнего дня студентам ЮФУ удаленно лекции читать. У них все завязано на различные корпорации зла. И базовая работа - через teams. ОК,…

  • Почему systemd — дерьмо

    Уже давно на эту статейку натыкался, но все забывал в "закладки" добавить. Вот, добавляю: "systemd — отстой". Советую эту статейку почитать…

  • Разбираемся с утечками

    Занялся полным рефакторингом кода системы управления оптоволоконным спектрографом. А глаз уже "замыленный": ну вот не могу сходу обнаружить, где я…

promo eddy_em september 3, 12:13 8
Buy for 10 tokens
Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую сборку (как обычно, местами пришлось "доработать напильником"): Пока прибор без названия (да и как-то не лезет в голову ничего, у меня нет…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 0 comments