Стартовая страница › Форумы › Разработка и интеграция › Вопрос по кодингу модуля сервера.
- В этой теме 37 ответов, 4 участника, последнее обновление 8 лет, 11 месяцев назад сделано
Mikhail.
-
АвторЗаписи
-
11.08.2017 в 15:11 #6994
MikhailМодераторПерезапуск сервера — это полностью новый запуск службы, поэтому конструктор вызывается. Хотя в идеале нужно стремиться к тому, чтобы при вызове OnServerStart и OnServerStop модуль корректно перезапускался.
Если есть вопросы по отладке модуля в дебаггере — задавайте.11.08.2017 в 17:57 #6996
OldManSpbУчастникCпасибо.
Теперь возник еще вопрос. Мне надо получить список текущих данных и статусов по всем каналам. То есть нужен один срез, но по всем каналам имеющимся в таблице каналов одновременно. Насколько я понял в текущем срезе могут быть не все каналы?12.08.2017 в 10:45 #6997Romiros
УчастникНе все. Только те, данные которых изменились.
Чтобы получить все каналы, нужно читать таблицу вручную. В onserverstart создать отдельный поток и из него обращаться к таблице текущего среза. Поищите по форуму, уже обсуждалось-
Ответ изменён 8 лет, 11 месяцев назад пользователем
Romiros.
12.08.2017 в 14:03 #6999
MikhailМодераторПри сработке методов модуля OnCurDataProcessed и OnCurDataCalculated вам передаётся ссылка на срез всех каналов. Вам достаточно получать срез внутри этих методов? Чтобы получить срез из заданных каналов используйте переменную ServerData.
Читать срез напрямую из файла допустимо, но не очень красиво, на мой взгляд, потому что срез уже есть в памяти.
Вы разобрались, как использовать отладчик Visual Studio?13.08.2017 в 00:22 #7002
OldManSpbУчастникЯ должен передать другому серверу раз в три минуты данные по каждому каналу и статус плюс единицы измерения, название КП, объекта и т п. Это делается в отдельном потоке, по таймеру. Список каналов я беру из соответствущей таблицы. Соответственно надо добавить в это сообщение текущие значения и статусы по каждому каналу. Внутри методов OnCurDataProcessed и OnCurDataCalculated устраивает, я могу работать и асинхронно. Просто могу в своем модуле хранить срез всех каналов и обновлять его при приходе новых данных, а когда надо передать то брать оттуда.
С отладкой еще не разбирался.14.08.2017 в 10:46 #7008
MikhailМодераторOnCurDataCalculated вызывается постоянно, поэтому рекомендую в нём получать нужные данные. В текущей реализации ссылка на текущий срез, который передаётся в этих методах, не меняется, но нет гарантии, что так и будет дальше.
Если не хотите «грязное чтение» из среза, то при его чтении сделайте lock (curSrez)
Однако, при неосторожном обращении с lock Сервер может зависнуть из-за взаимных блокировок.14.08.2017 в 11:02 #7009
OldManSpbУчастникТо есть я правильно понимаю, что в первом аргументе OnCurDataProcessed и OnCurDataCalculated передаются каналы которые в данный момент обновились, а во втором просто ссылка на полный срез? То есть можно в своем модуле не хранить ничего в памяти?
15.08.2017 в 11:00 #7015
MikhailМодераторOnCurDataProcessed(int[] cnlNums, SrezTableLight.Srez curSrez)
OnCurDataCalculated(int[] cnlNums, SrezTableLight.Srez curSrez)Аргументы curSrez — один и тот же полный срез, а cnlNums каждый раз разные по смыслу
15.08.2017 в 13:08 #7016
OldManSpbУчастникПонятно, спасибо, разобрался. Все работает, Михаил спасибо огромное. Сейчас есть задача сделать СМС шлюз для https://smsbliss.ru/ я так понимаю готового ничего нет, надо писать? Если да, готов подключиться к github, так как это в отличие от предыдущего моего проекта может пригодиться всем. В принципе можно сделать универсальный модуль, который будет формировать POST запрос для любого шлюза.
-
Ответ изменён 8 лет, 11 месяцев назад пользователем
OldManSpb.
15.08.2017 в 15:07 #7021
manjey73УчастникНе обязательно присоединиться, можно просто выложить на github, а Михаил если что сделает ссылку на драйвер или модуль.
16.08.2017 в 08:36 #7030
MikhailМодераторЕсть готовый не опубликованный драйвер, который мы используем для https://smsc.ru/
Думаю, он подойдет. Вот ссылка, но проблема в том, что драйвер собран под новую версию Коммуникатора, может не заработать на текущей. Думаю, что нужно будет включить этот драйвер в дистрибутив для всех.Применительно в выкладыванию модулей, однозначно рекомендую GitHub. Есть хорошие аналоги, но всё же GitHub самый популярный.
17.08.2017 в 17:48 #7060
OldManSpbУчастникЯ сделал модуль для https://smsbliss.ru/. Михаил, мне его залить в ваш GitHub или в свой? Для вашего надо доступ.
17.08.2017 в 19:50 #7068
MikhailМодераторВыкладывайте на свой аккаунт и присылайте ссылку. Желательно на гитхабе сделать подробное описание, как здесь и также добавить вариант описания на английском. Тогда я смогу опубликовать драйвер в репозитории модулей.
Вы не пробовали тот драйвер, ссылку на который я публиковал?
17.08.2017 в 19:52 #7069
MikhailМодераторИдеология Rapid SCADA такова, что чем больше авторов и разнообразных модулей, тем лучше. При этом автор сам поддерживает свои модули в актуальном состоянии и отвечает на вопросы по нему, добровольно конечно ))
21.08.2017 в 11:08 #7088 -
Ответ изменён 8 лет, 11 месяцев назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.