Автор Тема: подключится к Matrix III RD-ALL через Z-397 web  (Прочитано 11707 раз)

andrei

  • Пользователь
  • *****
  • Сообщений: 16
Добрый день!
Считыватель 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, то приходят уведомления о пропадении соединения, восстановлении, а вот уведомлений о приходе данных со считывателя нет. Возможно поэтому и нет ответа от ридера.

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




gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #1 : 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);

andrei

  • Пользователь
  • *****
  • Сообщений: 16
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #2 : 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

andrei

  • Пользователь
  • *****
  • Сообщений: 16
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #3 : 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);


gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #4 : 13 Июня 2019, 19:18 »
Когда получу устройства (надеюсь завтра) потестирую и напишу ответ.

p.s. Возможно надо посылать 'r' + 0x0d.
Matrix III Rd-All на скорости 9600.
Sdk должен работать только с заводскими версиями прошивок.
Если подключиться через Com2ip и putty, то при подносе карт что передаётся в порт?

andrei

  • Пользователь
  • *****
  • Сообщений: 16
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #5 : 13 Июня 2019, 19:42 »
Считыватель через com2ip работает нормально: при подносе карты передается номер карты ( putty -serial работает только на 9600 ). Прошивался считыватель прошивкой через com2ip, которая выводит номер карты в шестнадцатеричном виде плюс возврат коретки, новая строка.

оффтопик: Интересно, что putty -telnet "адрес конвертера" получает приглашение на ввод пароля, но после ввода закрывает окно. Приходится работать виндовым телнетом.

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #6 : 13 Июня 2019, 19:54 »
Прошивался считыватель прошивкой через com2ip, которая выводит номер карты в шестнадцатеричном виде плюс возврат коретки, новая строка.
Sdk Readers этот формат номера карты не понимает, работает только с прошивкой с надписью "заводская прошивка".

andrei

  • Пользователь
  • *****
  • Сообщений: 16
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #7 : 13 Июня 2019, 20:24 »
помогло добавить 0x0d.
byte[] r = new byte[] { 114 , 0x0d };
hr = ZPIntf.ZP_Port_Write(hPort, r, 2);

появились ивенты для порта и ридер ищется с любой прошивкой, но, конечно, понятно, что работать будет только с заводской.
Спасибо!

andrei

  • Пользователь
  • *****
  • Сообщений: 16
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #8 : 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);

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

Отвечу сам: похоже, надо всего лишь опять отправлять магическую последовательность байт. Завтра проверю.
« Последнее редактирование: 13 Июня 2019, 22:47 от andrei »

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #9 : 14 Июня 2019, 07:38 »
Отвечу сам: похоже, надо всего лишь опять отправлять магическую последовательность байт. Завтра проверю.
Да, и возможно ещё надо скорость установить ZP_Port_SetBaudAndEvChar(hPort, 9600, 0xd)

andrei

  • Пользователь
  • *****
  • Сообщений: 16
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #10 : 14 Июня 2019, 10:36 »
ещё интересная штука возникла. Для проверки, как восстанавливается соединение, перезагружали конвертер удалённо через telnet. Достаточно много было попыток. Но сегодня, после очередной "игры", из порта стала прилетать раз в 99 секунд такая последовательность:
45-72-72-35-3A-20-53-79-6E-74-61-78-0D-0A.

Удалённая перезагрузка не помогает. Открываем порт и через каждые 99 сек прилетает вот это. Что это может быть? Можно ли как-то "перезагрузить" удаленно сам считыватель?
« Последнее редактирование: 14 Июня 2019, 11:05 от andrei »

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #11 : 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, тоже такое будет прилетать?
Можно ли перезагрузить - не знаю.
« Последнее редактирование: 14 Июня 2019, 11:13 от gsa »

andrei

  • Пользователь
  • *****
  • Сообщений: 16
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #12 : 14 Июня 2019, 16:12 »
в путти ничего не прилетает и совершенно точно ничего не шлём в порт. Пока не пробовали перезагрузить считыватель. Чуть позже попробуем снять с него питание и подать вновь. Не понятно, почему не прилетает в путти.

Если слать "магическую" последовательность после восстановления соединений, данные опять прилетают ( включая злополучный Err5: Syntx ). Если рестартануть конвертер пару раз подряд, то даже магическая последовательность не помогает.
« Последнее редактирование: 14 Июня 2019, 16:31 от andrei »

andrei

  • Пользователь
  • *****
  • Сообщений: 16
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #13 : 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

andrei

  • Пользователь
  • *****
  • Сообщений: 16
Re: подключится к Matrix III RD-ALL через Z-397 web
« Ответ #14 : 14 Июня 2019, 17:14 »
передергивание питания считывателю и конвертеру не помогло. Я думаю, сообщение "Err5: Syntax" прилетало и раньше, но до этого мы вообще не получали данных из-за адвансед мода, а потом торопились и не ждали больше 90 секунд.