УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

Создаем свой модуль DAQ


Автор Сообщение
Сообщение создано: 30. 11. 2010 [15:06]
aNdrOS
Андрей
Создатель темы
Зарегистрирован(а) с: 07.05.2010
Сообщения: 102
Интересует вопрос есть ли среди существующих модулей протоколов или модулей DAQ образец для того, чтобы подсмотреть как сделать модуль с таким режимом работы:
1. Подключаемся по TCP к серверу;
1. Авторизуемся, получаем сведения об авторизации;
2. Уходим в режим ожидания сообщений со стороны сервера;
3. При получении обрабатываем;
4. Отключение происходит либо клиентом, либо сервером по таймауту. Таймаут продлевается запросом статуса сервера клиентом;
5. Из режима ожидания иногда посылаются запросы к серверу.
Сообщение создано: 30. 11. 2010 [17:00]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"aNdrOS" wrote:

Интересует вопрос есть ли среди существующих модулей протоколов или модулей DAQ образец для того, чтобы подсмотреть как сделать модуль с таким режимом работы:
1. Подключаемся по TCP к серверу;
1. Авторизуемся, получаем сведения об авторизации;
2. Уходим в режим ожидания сообщений со стороны сервера;

Если в этот момент не происходит разрыва канала связи и сообщение от сервера идёт по нему то достаточно простого "DAQ"-модуля, или-же если всё-таки сам клиент ходит к серверу за сообщением, что вероятно следует из пункта 5. Если осуществляется разрыв и сервер выступает инициатором нового соединения то нужно совмещать "DAQ" с "Protocol".

В любом случае модули "ModBus" и "OPC_UA" реализуют концепцию DAQ+Protocol через TCP-транспорт. Модуль "BFN" и "DAQGate" реализуют просто DAQ через TCP-транспорт.

Learn, learn and learn better than work, work and work.
Сообщение создано: 01. 12. 2010 [07:28]
fido_max
Maxim Kochetkov
Contributor
Зарегистрирован(а) с: 28.10.2010
Сообщения: 129
Вопросик еще кстати про новый модуль DAQ:

Что и куда нужно прописать чтоб новый модуль корректно собирался по ./configure и make?
Сообщение создано: 01. 12. 2010 [09:33]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"fido_max" wrote:

Что и куда нужно прописать чтоб новый модуль корректно собирался по ./configure и make?

Файл configure.in, два участка.
Определение параметра отключения:
AC_ARG_ENABLE(BFN,AC_HELP_STRING([--disable-BFN], [disable build module DAQ.BFN]),
[ if test $enableval = yes; then ModBFN=true; else ModBFN=false; fi],[ ModBFN=true; ])

Инициализация самого модуля:
if test ${ModBFN} = true; then
AC_MSG_RESULT(Build module: DAQ.BFN)
AC_CONFIG_FILES(src/moduls/daq/BFN/Makefile)
DAQSub_mod="${DAQSub_mod}BFN "
fi


Learn, learn and learn better than work, work and work.
Сообщение создано: 01. 12. 2010 [20:50]
aNdrOS
Андрей
Создатель темы
Зарегистрирован(а) с: 07.05.2010
Сообщения: 102
Как поддерживать TCP-сессию, если мы являемся клиентом и хотим ожидать данные от сервера?
отсылаем запрос таким образом
JAVASCRIPT
AutoHD<TTransportOut> tr = SYS->transport().at().at(TSYS::strSepParse(mAddr,0,'.')).at().outAt(TSYS::strSepParse(mAddr,1,'.'));
   try { tr.at().start();
 
....
 
tr.at().messIO( (char *)regreq, regreq->GetSize(), NULL, 0, 0, true );



[Сообщение редактировалось 1 раз(а), в последний раз 01.12.2010 в 20:52.]
Сообщение создано: 02. 12. 2010 [08:42]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"aNdrOS" wrote:

Как поддерживать TCP-сессию, если мы являемся клиентом и хотим ожидать данные от сервера?

Не останавливать транспорт "tr.at().stop()";
"aNdrOS" wrote:

отсылаем запрос таким образом
JAVASCRIPT
tr.at().messIO( (char *)regreq, regreq->GetSize(), NULL, 0, 0, true );


Таким образом Вы не получаете ответа, а всегда только шлёте запрос.

Learn, learn and learn better than work, work and work.



8783