IronLogic СКУД

Адаптеры & Конвертеры => Z-397 WEB => Тема начата: andrei от 12 Июня 2019, 17:07

Название: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 12 Июня 2019, 17:07
Добрый день!
Считыватель Matrix-III RD-ALL подключен к конверетру Z-397 web, который, в свою очередь, подключен в режиме клиент к удаленному компьютеру. Через com2ip считыватель виден и с ним можно работать. Пытаемся подключится через объект "считыватель":

ZR_RD_OPEN_PARAMS rOpen = new ZR_RD_OPEN_PARAMS(ZP_PORT_TYPE.ZP_PORT_IPS, @"5000\192.168.1.50\3xxxx");
hr = ZRIntf.ZR_Rd_Open(ref m_hRd, ref rOpen, ref rRdInf);
возвращается hr = 0x80040302, те нет ответа

пробовали открыть порт
ZP_PORT_OPEN_PARAMS portParams = new ZP_PORT_OPEN_PARAMS();
portParams.nType = ZP_PORT_TYPE.ZP_PORT_IPS;
portParams.szName = @"5000\192.168.1.50\3xxxx;
hr = ZPIntf.ZP_Port_Open(ref hPort, ref portParams);

порт открывается нормально и передавать дескриптор объекту "считыватель" через параметры
ZR_RD_OPEN_PARAMS rOpen = new ZR_RD_OPEN_PARAMS(ZP_PORT_TYPE.ZP_PORT_IPS, null);
rOpen.hPort = hPort;
но всё так же - нет ответа.

Если установить уведомления для порта ZP_Port_SetNotification, то приходят уведомления о пропадении соединения, восстановлении, а вот уведомлений о приходе данных со считывателя нет. Возможно поэтому и нет ответа от ридера.

Подскажите пожалуйста, как можно работать со считывателем через конвертер?
Спасибо!



Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: gsa от 13 Июня 2019, 13:40
Добрый день
Попробуйте послать 'r', чтобы конвертер перешёл в режим Normal.
hr = ZPIntf.ZP_Port_Open(ref hPort, ref portParams);
hr = ZP_Port_Write(hPort, "r", 1);
rOpen.hPort = hPort;
hr = ZRIntf.ZR_Rd_Open(ref m_hRd, ref rOpen, ref rRdInf);
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 13 Июня 2019, 17:28
не помогло
уточню: а нужно-ли в параметрах подключения выставлять скорость и стоп биты или можно оставлять по умолчанию?
ZP_PORT_OPEN_PARAMS portParams = new ZP_PORT_OPEN_PARAMS();
portParams.nType = ZP_PORT_TYPE.ZP_PORT_IPS;
portParams.nStopBits = 2;
portParams.nBaud = 19200;
оставляли и по умолчанию и 9600, 19200, 57600 - не помогает. В ковертере в конфигах выставлена 19200
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 13 Июня 2019, 19:09
подумалось, что r надо послать именно в конвертер, поэтому
попробовали открыть конвертер, послать r, закрыть дескриптор конвертера, получив дескриптор порта и открыть ридер, но опять при открытии ридера возвращается "нет ответа":

ZG_CVT_OPEN_PARAMS rOp = new ZG_CVT_OPEN_PARAMS();
rOp.nPortType = ZP_PORT_TYPE.ZP_PORT_IPS;
rOp.pszName = @"5000\192.168.1.50\3xxx2";
rOp.nCvtType = ZGuard.ZG_CVT_TYPE.ZG_CVT_Z397_WEB;

hr = ZGIntf.ZG_Cvt_Open(ref hCvt, ref rOp, rInfo);
byte[] r = new byte[] { Convert.ToByte('r') };
hr = ZGIntf.ZG_Cvt_Send(hCvt, r, 1);
hr = ZGIntf.ZG_Cvt_DettachPort(hCvt, ref hPort);

Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: gsa от 13 Июня 2019, 19:18
Когда получу устройства (надеюсь завтра) потестирую и напишу ответ.

p.s. Возможно надо посылать 'r' + 0x0d.
Matrix III Rd-All на скорости 9600.
Sdk должен работать только с заводскими версиями прошивок.
Если подключиться через Com2ip и putty, то при подносе карт что передаётся в порт?
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 13 Июня 2019, 19:42
Считыватель через com2ip работает нормально: при подносе карты передается номер карты ( putty -serial работает только на 9600 ). Прошивался считыватель прошивкой через com2ip, которая выводит номер карты в шестнадцатеричном виде плюс возврат коретки, новая строка.

оффтопик: Интересно, что putty -telnet "адрес конвертера" получает приглашение на ввод пароля, но после ввода закрывает окно. Приходится работать виндовым телнетом.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: gsa от 13 Июня 2019, 19:54
Прошивался считыватель прошивкой через com2ip, которая выводит номер карты в шестнадцатеричном виде плюс возврат коретки, новая строка.
Sdk Readers этот формат номера карты не понимает, работает только с прошивкой с надписью "заводская прошивка".
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 13 Июня 2019, 20:24
помогло добавить 0x0d.
byte[] r = new byte[] { 114 , 0x0d };
hr = ZPIntf.ZP_Port_Write(hPort, r, 2);

появились ивенты для порта и ридер ищется с любой прошивкой, но, конечно, понятно, что работать будет только с заводской.
Спасибо!
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 13 Июня 2019, 20:52
Добавлю тогда уже тут, хотя и другой топик.
Стали появляться события о приходе данных, раньше были только события о потери\восстановлении соединения.

m_oEvent = new ManualResetEvent(false);
IntPtr eventHandle = m_oEvent.SafeWaitHandle.DangerousGetHandle();
hr = ZPIntf.ZP_Port_SetNotification(hPort, eventHandle, IntPtr.Zero, 0, ZPIntf.ZP_PNF_RXEVENT | ZPIntf.ZP_PNF_STATUS);

Но после потери\восстановления соединения событий о приходе данных больше не возникает, хотя события о потери\восстановлении продолжают приходить. Неужели придётся закрывать и открывать порт заново?

Отвечу сам: похоже, надо всего лишь опять отправлять магическую последовательность байт. Завтра проверю.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: gsa от 14 Июня 2019, 07:38
Отвечу сам: похоже, надо всего лишь опять отправлять магическую последовательность байт. Завтра проверю.
Да, и возможно ещё надо скорость установить ZP_Port_SetBaudAndEvChar(hPort, 9600, 0xd)
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 14 Июня 2019, 10:36
ещё интересная штука возникла. Для проверки, как восстанавливается соединение, перезагружали конвертер удалённо через telnet. Достаточно много было попыток. Но сегодня, после очередной "игры", из порта стала прилетать раз в 99 секунд такая последовательность:
45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A.

Удалённая перезагрузка не помогает. Открываем порт и через каждые 99 сек прилетает вот это. Что это может быть? Можно ли как-то "перезагрузить" удаленно сам считыватель?
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: gsa от 14 Июня 2019, 11:10
45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A.
Это сообщение "Err5: Syntax" считывателя, он так отвечает когда передана некорректная команда.
Sdk вроде ничего не шлёт если параметр ZR_RD_NOTIFY_SETTINGS::nCheckCardPeriod = -1 (значение по умолчанию).
Может что-то отправляете ему на скорости 9600? А если подключиться через putty, тоже такое будет прилетать?
Можно ли перезагрузить - не знаю.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 14 Июня 2019, 16:12
в путти ничего не прилетает и совершенно точно ничего не шлём в порт. Пока не пробовали перезагрузить считыватель. Чуть позже попробуем снять с него питание и подать вновь. Не понятно, почему не прилетает в путти.

Если слать "магическую" последовательность после восстановления соединений, данные опять прилетают ( включая злополучный Err5: Syntx ). Если рестартануть конвертер пару раз подряд, то даже магическая последовательность не помогает.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 14 Июня 2019, 16:32
пока это выглядит так
Port's opened
Waiting for events
4:04:58 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:06:38 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:08:17 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:09:56 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:11:35 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:13:15 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:14:54 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:16:33 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:18:13 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:19:52 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:21:31 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:23:10 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:24:50 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:26:29 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:28:08 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:29:47 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
4:31:27 PM 45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 14 Июня 2019, 17:14
передергивание питания считывателю и конвертеру не помогло. Я думаю, сообщение "Err5: Syntax" прилетало и раньше, но до этого мы вообще не получали данных из-за адвансед мода, а потом торопились и не ждали больше 90 секунд.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: gsa от 14 Июня 2019, 17:35
передергивание питания считывателю и конвертеру не помогло. Я думаю, сообщение "Err5: Syntax" прилетало и раньше, но до этого мы вообще не получали данных из-за адвансед мода, а потом торопились и не ждали больше 90 секунд.
Это ошибка Sdk. Скоро пришлю обновление.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: gsa от 14 Июня 2019, 19:19
Обновление Sdk Readers v3.26.19 https://yadi.sk/d/FpfnizmH3KFhZQ (https://yadi.sk/d/FpfnizmH3KFhZQ)
Sdk теперь само отправляет 'r' и теперь перестаёт опрашивать конвертер после подключения функцией ZR_Rd_Open.
Тестировал на эмуляторе, который 'r' игнорирует, поэтому возможно обновление не заработает как надо с Z-397 Web.

P.S. Но так как после ZR_Rd_Open устройству не посылаются никакие команды, то возможно конвертер будет обрывать связь по тайм-ауту отсутствия передачи данных, этого можно избежать 2 способами: 1) в конфиге конвертера установить NODATA_TIMEOUT=0 (отключить тайм-аут), 2) установить параметр ZR_RD_NOTIFY_SETTINGS::nCheckCardPeriod = 3000 функцией ZR_Rd_SetNotification. Хотя после разрыва конвертер должен сразу же связь восстановить.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 14 Июня 2019, 20:50
протестировали. Данные получаются и без "r", err5 не прилетает, но после перезагрузки конвертера не приходит событие о потере\восстановлении соединения и данные от ридера тоже не приходят.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: gsa от 17 Июня 2019, 10:08
после перезагрузки конвертера не приходит событие о потере\восстановлении соединения и данные от ридера тоже не приходят.
Похоже, что Sdk не обнаруживает потерю связи (вероятно не приходит уведомление от сокета). Попробуйте установить параметр ZR_RD_NOTIFY_SETTINGS::nCheckCardPeriod = 3000 функцией ZR_Rd_SetNotification. Тогда при попытке отправить данные если нет связи, то произойдёт ошибка и Sdk закроет сокет и будет ждать новое подключение конвертера.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 06 Июля 2019, 21:16
Проверил: ZR_RD_NOTIFY_SETTINGS::nCheckCardPeriod = 3000 помогает. После установки этого параметра множественное отсоединение\восстановление сети от конвертера, снятие\восстановление питание конвертера, снятие\восстановление питания ридера не влияет на приход событий от ридера. Но, вот, перезагрузка конвертера через телнет иногда с третьего или четвертого раза "вешает" приход событий и не помогает уже снятие питания с конвертера, отсоединение сети, только перезагрузка программы.
И можно-ли как-то восстанавливать работу и с портом тоже, а не только с ридером?
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: gsa от 08 Июля 2019, 10:55
...не помогает уже снятие питания с конвертера, отсоединение сети, только перезагрузка программы.
И можно-ли как-то восстанавливать работу и с портом тоже, а не только с ридером?
Включите уведомление об ошибках:
ZR_RD_NOTIFY_SETTINGS rRNS;
rRNS.nNMask = ZR_RNF_ERROR;
ZR_Rd_SetNotification(hRd, rRNS);
В обработчике уведомления ZR_RN_ERROR переподключитесь к считывателю ZP_CloseHandle(hRd), ZR_Rd_Open(hRd, ...).
Попробуйте обновление Sdk Readers v3.26.20 https://yadi.sk/d/FpfnizmH3KFhZQ (https://yadi.sk/d/FpfnizmH3KFhZQ) исправил алгоритм подключения к IP конвертеру в режиме "Клиент".
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 08 Июля 2019, 15:52
С новым сдк ZR_Rd_SearchCards возвращает 0x80040303, те ZR_E_BADANSWER. События не приходят.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: gsa от 08 Июля 2019, 16:44
С новым сдк ZR_Rd_SearchCards возвращает 0x80040303, те ZR_E_BADANSWER. События не приходят.
Это происходит после перезагрузки конвертера? Часто возникает ошибка? Можете прислать лог файл Sdk? Для записи лог файла нужно: 1) использовать библиотеку из папки "Log", 2) первым вызвать ZR_Initialize с флагами ZP_IF_LOG + ZR_IF_LOG, 3) с помощью функции ZP_SetLog установить путь к файлу лога.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 08 Июля 2019, 18:41
Ошибка возникает всегда, сразу после подключения к считывателю. Пробовал со строй dll - всё ок. Логи сделаю чуть позже.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 08 Июля 2019, 18:48
Не понял, что значит ZP_IF_LOG + ZR_IF_LOG
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: gsa от 08 Июля 2019, 18:51
Не понял, что значит ZP_IF_LOG + ZR_IF_LOG
ZR_Initialize(0x102)
ZP_IF_LOG, ZR_IF_LOG - это константы, объявленные в заголовочном файле.
Название: Re: подключится к Matrix III RD-ALL через Z-397 web
Отправлено: andrei от 08 Июля 2019, 19:01
19:00:19.401 [L I303 1] "127.0.0.1:50156" connected.
19:00:19.401 [  I0 1] Log 08.07.2019 (Windows 64-bit v6.2.9200 ; App 32-bit: ZPort.dll v1.18.14, \Z2M_EnumCards.exe v1.0.0, ZReader.dll v3.26.20)
19:00:19.401 [P I40000 2] "ZP_Initialize" returned 0. Flags=103h, RefCount=1.
19:00:19.401 [R I45000 2] "ZR_Initialize" returned 0. Flags=103h, RefCount=1.
19:00:20.104 [P I40022 3] Port "5000\192.168.98.50\38902" is open. Handle=57C73B0h, Baud=9600, char=0Dh, stopBits=2.
19:00:20.104 [P I40011 1] "ZP_Write" returned 0h.  Handle=57C73B0h, data=[3]{"i\r\n" 69 0D 0A}.
19:00:21.120 [P I40011 1] "ZP_Write" returned 0h.  Handle=57C73B0h, data=[3]{"i\r\n" 69 0D 0A}.
19:00:21.214 [P I40012 1] "ZP_Read" returned 0h.  Handle=57C73B0h, buf=[14/14]{"Err5: Syntax\r\n" 45 72 72 35 3A 20 53 79 6E 74 61 78 0D 0A}.
19:00:21.214 [P I40011 1] "ZP_Write" returned 0h.  Handle=57C73B0h, data=[3]{"i\r\n" 69 0D 0A}.
19:00:21.807 [P I40012 1] "ZP_Read" returned 0h.  Handle=57C73B0h, buf=[218/218]{"\r\nThe MATRIX-III RD-ALL S/N:10585 [0501]\r\nCopyRight (C)2006 IronLogic, Saint-Petersburg,RUSSIA\r\nwww.ironlogic.ru ph. +7(495)78-77066,+7(812)542-04-80\r\nPlease send Email: marketing@ironlogic.ru\r\nSoftware version: 0031\r\n"}.
19:00:21.807 [R I45003 1] "ZR_Rd_Open" returned 0h.  Handle=12FF1E4h.
19:00:21.807 [P I40011 1] "ZP_Write" returned 0h.  Handle=57C73B0h, data=[1]{"r" 72}.
19:00:22.573 [P I40012 1] "ZP_Read" returned 0h.  Handle=57C73B0h, buf=[218/218]{"\r\nThe MATRIX-III RD-ALL S/N:10585 [0501]\r\nCopyRight (C)2006 IronLogic, Saint-Petersburg,RUSSIA\r\nwww.ironlogic.ru ph. +7(495)78-77066,+7(812)542-04-80\r\nPlease send Email: marketing@ironlogic.ru\r\nSoftware version: 0031\r\n"}.

В файл почему-то не пишет, но в лог сервер отправляет.