Описание программы версия 1.2.5
Публикую вторую версию управляющей программы для HW 1.0. Хотя это более обширная, но все же пробная версия. Воспринимайте программу в основном как источник информации для тех, кто захочет продолжить мою работу. Другой вариант программы для управления HW 1.0, наверное, писать не буду. Основой программы по-прежнему является веб-сервер node.js и связь с ним с помощью javascript.
Основное расширение программы - добавление 20 предустановленных кнопок. После заполнения их данными появляется возможность автоматически поворачивать блюдо в заданные положения. Однако эта версия программы не содержит пользовательских настроек. Это необходимо сделать вручную с помощью текстового редактора.
Данные о настройках хранятся в файле config.ini. Каждый раздел состоит из трех пунктов:
- PosAZ - количество импульсов счетчика азимута
- PosEL - количество импульсов счетчика высоты
- Name - номер предустановки и название спутника
Первый раздел [Default] содержит текущую позицию. Он сохраняется после любого изменения положения. Он загружается в момент запуска программы. Следующие разделы с [mem01] до [mem20] представляют собой отдельные предустановки. Их значения изначально равны нулю. Это ведет себя так, как будто они выключены и ничего не запускается при нажатии кнопки предварительной настройки. Только после ввода данных активируются кнопки и начинается переустановка блюда в новое положение.
После подключения веб-браузера на сервер, появится следующий экран:
Нажатие любой кнопки со стрелкой запускает соответствующий двигатель. При отпускании, двигатель снова останавливается. Если вы нажмете кнопку, переместите мышь за ее пределы и отпустите мышь, двигатель будет продолжать работать. Нажмите на ту же кнопку, чтобы остановить его. Остерегайтесь этой ошибки. Если вы должны запустить двигатель со стрелкой в течение длительного времени, вы должны держать курсор мыши на кнопку.
Когда двигатель остановлен, текущее положение отображается в окнах под «Azimuth» и «Elevation». Not Set отображается в верхнем окне, предназначенном для имени спутника. Текущая позиция не отображается во время перемотки. Таким образом, нет никакого способа узнать, что двигатели работают. Однако программа должна запускаться в окне терминала, и смена позиции постоянно отображается там.
Просто нажмите на кнопки предустановленных mem01 до mem20. Если значения азимута и высоты равны нулю, то ничего не происходит. Если они содержат ненулевое значение, позиционер запускает двигатели и устанавливает антенну в новое положение. Во время движения, ничего не меняется на экране, так что опять не известно, что двигатели являются активными. Это может занять несколько десятков секунд на больших расстояниях. Однако, даже в этом случае изменение позиции отображаются в окне терминала. После остановки, значение новой позиции отображается в соответствующих окнах. Имя спутника отображается в верхнем окне. Все три данные сохраняются в файле config.ini в секции [Default].
Чтобы запрограммировать пресеты:
В файле config.ini, значения азимута и высоты равны нулю для всех пресетов. Это гарантирует, что программа не реагирует на эти предпочтения перед тем, как установить правильно. В разделе [Default], текущие позиции устанавливаются в 50000. В результате значение позиции не может достичь отрицательных чисел, когда двигатели запускается в первый раз, потому что максимальный диапазон движения составляет приблизительно 30000 импульсов.
Для начала нужно установить обе нулевые точки. Чтобы установить нулевую точку азимута, нажмите и удерживайте кнопку со стрелкой влево. Значение азимутального положения в первом столбце постоянно уменьшается в окне терминала. Третий столбец сигнализирует о достижении нулевой точки путем изменения значения «True» на «False». На этом этапе двигатель необходимо остановить. Из-за инерции двигателя позиционер пересекает правильную нулевую точку. Поэтому вам все равно нужно вернуться, используя кнопку со стрелкой вправо. Когда значение в третьем столбце изменяется с «False» на «True» в окне терминала, позиционер достиг правильного значения нулевой точки. Даже если двигатель не может быть остановлен в этот момент, программа устанавливает значение азимута на 0, а затем вычисляет правильное положение. Это устанавливает положение нулевого азимута.
Аналогичным образом необходимо установить нулевую отметку. Сначала зажмите кнопку со стрелкой вниз. Значение высоты уменьшается в окне терминала во втором столбце. В четвертом столбце достижение нулевой точки обозначается изменением значения с «True» на «False». На этом этапе двигатель необходимо остановить. Возвращаемся немного снова кнопкой со стрелкой вверх. В тот момент, когда изменение в четвертом столбце окна терминала с «False» на «True» регистрируется программой как достижение правильной нулевой точки, сбрасывает значение высоты и с этого момента она вычисляет правильное положение.
ВАЖНОЕ ПРИМЕЧАНИЕ: Мой позиционер EGIS не предназначен для перемещения за нулевую точку. Поэтому очень важно очень осторожно подходить к нулевым точкам и останавливать двигатели как можно быстрее после их достижения. В противном случае позиционер может быть поврежден механически.
После установки нулевой точки, мы можем сосредоточиться на отдельных предустановок. Используйте стрелки для перемещения к выбранному спутнику. Отмечу, значение его азимут и возвышение вместе с названием спутника на бумаге. Мы можем повторить это для всех необходимых спутников. После того, как мы собрали необходимые данные, мы пишем его с помощью текстового редактора в настройки в файле config.ini. После любого изменения в этом файле, необходимо перезапустить программу Node.js, чтобы загрузить новые данные. Никогда не вручную изменить значения в разделе [Default]. Это приведет к нарушению целостности текущего положения позиционера и нулевые точки должны быть установлены снова.
После некоторого времени использования этой пробной версии управляющей программы меня стало беспокоить то, что непонятно, какой спутник под какой предустановкой хранится. Поэтому, запрограммировав предпочтения, я добавил имена спутников в файл index.html. В конце предустановленные кнопки записываются как button со значением id = "memory01" - "memory20". Если мы добавим соответствующие имена спутников к этим кнопкам в к пункту Title, они будут отображаться при наведении курсора мыши на кнопку.
С профессиональной точки зрения у программы много недостатков. Но он все еще не предназначен для нормального использования. Речь идет лишь о проверке работоспособности аппаратной версии 1.0. Тем не менее, я должен отметить, что не несу ответственности за все ошибки, которые могут возникнуть во время работы. Программа основана на запущенных javascripts. И это очень сильно зависит от того, как какие веб-браузеры получают доступ к javascripts. Во время тестирования я вскоре обнаружил, что при использовании IE11 программа ведет себя очень ненормально. Поэтому в процессе разработки я постепенно перешел на Google Chrome. С ним все функции программы работают корректно. Я не тестировал другие браузеры.
Здесь вы можете скачать исходные тексты программы.