Стартовая страница › Форумы › Взаимодействие с устройствами › Кситал GSM-12T
- В этой теме 27 ответов, 5 участников, последнее обновление 3 года, 7 месяцев назад сделано
manjey73.
-
АвторЗаписи
-
05.12.2022 в 14:26 #26444
OakimУчастникПодскажите контроллер Кситал GSM-12T может слать данные в тескстовом виде на определенный IP-адрес и TCP-порт в текстовом виде, типа:
Формат пакета данных:#MAC[#NAME]\n #mac1#value1[#time1][#name1]\n ... #macN#valueN[#timeN][#nameN]\n ##Пример:
#07-EF-E2-87-6A-39 #T1#12.83#1540410942 #T1#7.99#1540410342 #T1#28.81#1540409742 ##Как лучше разбирать подобные данные?
Нужно писать драйвер, если да то на основании какого лучше?-
Тема изменена 3 года, 8 месяцев назад пользователем
Oakim.
05.12.2022 в 15:46 #26447
manjey73УчастникНаверное лучше модуль. А если писать драйвер, то надо чтобы он запустил в потоке прослушку и не отключал бы ее, а выполняя код Session просто проверял поступившие данные.
05.12.2022 в 16:19 #26448
OakimУчастникА чем модуль отличается от драйвера?
Или может эти сообщения можно разбирать как JSON?05.12.2022 в 16:45 #26449
manjey73УчастникЭто не json. JSON это ключ : значение а тут этим не пахнет
Хотя манипуляциями в коде можно превратить ив json только уже смысла не имеет.Драйвер сам по себе работает от запроса до запроса, то есть вы вызываете в методе Session какой-то код и что-то обрабатываете, но между вызовами вы будете терять данные. По этому если делать как драйвер, надо что-то запустить в фоне, а потом при очередных подключениях проверять есть ли данные. Это в кратце.
А модуль по идее запустится и будет слушать…
По идее можно и так и так сделать, где именно будет проще, не знаю.
05.12.2022 в 17:04 #26451Romiros
УчастникПо логике нужен драйвер в режиме slave. Модуль это всё-таки постобработка.
06.12.2022 в 00:43 #26458
JurasskParkУчастникНа сайте производителя есть приложение написанное на Net Framework. Поставьте. Может там библиотека отдельно идёт. Чтобы код с нуля не писать.
А два — обратитесь в тех. поддержку. Задайте им вопросы. Не укусят — это точно. Скажите, что хотите написать для SCADA. Может охотнее помогут. 🙂06.12.2022 в 08:53 #26462
OakimУчастникЯ с производителем общался, но у него нет планов по реализации протокола Modbus в ближайшее время.
У производителя есть два приложения (которые я знаю) одно для ПК для конфигурирования контроллера соединение через USB, второе под Android общается с контроллерами через SMS.
По поводу приложения на .NET ничего не знаю.Я в принципе написал программку на .NET которая открывает порт и слушает его, нужно добавить парсинг и передавать данные в SCADA, подскажите какой драйвер можно взять за бызовый, который мозет работать TCP-сокетами?
Или может лучше это реализовать в виде отдельного OPC-сервера и передавать в SCADA через OPC-соединение?06.12.2022 в 09:33 #26463
manjey73УчастникНу так и используйте свой кусок кода в драйвере.
Если я правильно понял Михаила, то в драйвере в разделе public DevMyDriverLogic задаете ConnectionRequired = false;
При вызове Session запускаете свой «приемник» в отдельном потоке и проверяете каждую Session что он запущен и слушает (то есть не запускаете каждый раз)
При Терминировании Линии соответственно свой поток «приемника» закрываете
Ну и проверяете, получил ли «приемник» данные.
Линию по идее настраивать как TCP Сервер.Если честно, даже не подскажу, какой из драйверов подойдет из текущих. С открытием потока вроде нет примеров.
06.12.2022 в 09:35 #26464
manjey73УчастникЕсли своей программой пишите в файл, можно драйвер сделать, чтобы просто проверял файл.
Есть пример по работе с файлом в драйвере но для 5-й версии. Могу поискать исходники старые, до ума так и не довел. На Raspberry читал датчики 1 Wire через crontab c записью в файл, а драйвером просто читал этот файл и забирал данные.06.12.2022 в 09:37 #26465
manjey73Участник#07-EF-E2-87-6A-39 #T1#12.83#1540410942 #T1#7.99#1540410342 #T1#28.81#1540409742 ##Тут у вас непосредственно по данным по сути массив строк, разделитель #, первое поле типа идентификатор, потом данные, вероятно с меткой времени
06.12.2022 в 10:50 #26467
OakimУчастник#07-EF-E2-87-6A-39— идентификатор прибора
#T1— Тип и номер датчика
#12.83— Показания датчика
#1540410942— Наименование датчика, может быть любым06.12.2022 в 10:55 #26468
manjey73УчастникНе столь важно, вопрос как вы будете создавать теги, если Кситал ничего не прислал?
Или его как-то можно опросить, чтобы он прислал все данные? например отправив SMS ?
-
Ответ изменён 3 года, 7 месяцев назад пользователем
manjey73.
06.12.2022 в 12:47 #26474
MikhailМодераторЗдесь подойдёт драйвер для Коммуникатора, а не модуль для Сервера.
Из существующих драйверов, которые выложены на GitHub, все являются ведущими, а Вам нужен режим ведомого.
Внутри логики устройства потребуется реализовать методы ReceiveIncomingRequest и ProcessIncomingRequest.06.12.2022 в 15:22 #26485
OakimУчастникМихаил, а если принять Коммуникатором сообщение, после чего его распарсить формулой из которой присвоить значения нескольким каналам?
06.12.2022 в 15:55 #26486
manjey73УчастникСовсем непонятный вопрос…
На лету никак, так как чтобы присвоить каналу значение, этот канал нужно предварительно создать.То есть сделать шаблон тегов в Коммуникаторе. Создать их предварительно при запуске линии связи.
-
Тема изменена 3 года, 8 месяцев назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.