Сообщение создано: 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
Сообщения: 3750
|
"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
Сообщения: 3750
|
"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-сессию, если мы являемся клиентом и хотим ожидать данные от сервера?
отсылаем запрос таким образом
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
Сообщения: 3750
|
"aNdrOS" wrote:
Как поддерживать TCP-сессию, если мы являемся клиентом и хотим ожидать данные от сервера?
Не останавливать транспорт "tr.at().stop()";
"aNdrOS" wrote:
отсылаем запрос таким образом
tr.at().messIO( (char *)regreq, regreq->GetSize(), NULL, 0, 0, true );
Таким образом Вы не получаете ответа, а всегда только шлёте запрос.
Learn, learn and learn better than work, work and work.
|