Про ошибки хотелось бы узнать подробнее.
http://posix.ironlogic.ru/wiki/Z397_IP_Advanced_Mode#.D0.A0.D0.B0.D0.B1.D0.BE.D1.82.D0.B0_.D1.81_.D0.BA.D0.BE.D0.BD.D0.B2.D0.B5.D1.80.D1.82.D0.B5.D1.80.D0.BE.D0.BCраздел "запрос списка контроллеров"
получить и декодировать список контроллеров на шине с конвертера в режиме advanced удаётся. Хотя ответ содержит 16 байт битовых полей, вместо ожидаемых 13 (как указано в документации)
12 байт отправлено
дамп отправки
[0->0x20]
[1->0xCA]
[2->0xCA]
[3->0xC2]
[4->0xCF]
[5->0xCC]
[6->0xCA]
[7->0xCA]
[8->0xCA]
[9->0xCA]
[10->0xCA]
[11->0xD]
Дамп сырого ответного пакета о контроллерах шины
[0->0x20]
[1->0x5E]
[2->0xDF]
[3->0xCF]
[4->0xCC]
[5->0xCB]
[6->0xCA]
[7->0xCA]
[8->0xCA]
[9->0xCA]
[10->0xCA]
[11->0xCB]
[12->0xCA]
[13->0xCA]
[14->0xCA]
[15->0xCA]
[16->0xCA]
[17->0xCA]
[18->0xCA]
[19->0xCA]
[20->0xCA]
[21->0xCA]
[22->0xCA]
[23->0xCA]
[24->0xCA]
[25->0xCA]
[26->0xCA]
[27->0xCA]
[28->0xCA]
[29->0xCA]
[30->0xCA]
[31->0xD]
unpacked packet`s body dump
[0x0->0xDE]
[0x1->0x15]
[0x2->0x5]
[0x3->0x6]
[0x4->0x0]
[0x5->0x0]
[0x6->0x0]
[0x7->0x0]
[0x8->0x1] --- на шине RS485 найден контроллер по адресу 0x2
[0x9->0x0]
[0xA->0x0]
[0xB->0x0]
[0xC->0x0]
[0xD->0x0]
[0xE->0x0]
[0xF->0x0]
[0x10->0x0]
[0x11->0x0]
[0x12->0x0]
[0x13->0x0]
[0x14->0x0] == по докам это должен быть последний байт битовой карты адресов rs485
[0x15->0x0]
[0x16->0x0]
[0x17->0x0]
но вот например описание запроса инфо о конкретном контроллере не работает: присылается нечто, не содержащее полезной информации - копия моего запроса + нули
Дамп сырого ответного пакета о контроллере по адресу 0x2
[0->0x20]
[1->0x60]
[2->0xDF]
[3->0xCF]
[4->0xCB]
[5->0xCB]
[6->0xCB]
[7->0xC8]
[8->0xCA]
[9->0xCA]
[10->0xCA]
[11->0xCB]
[12->0xCA]
[13->0xCA]
[14->0xCA]
[15->0xCA]
[16->0xCA]
[17->0xCA]
[18->0xCA]
[19->0xCA]
[20->0xCA]
[21->0xCA]
[22->0xCA]
[23->0xCA]
[24->0xCA]
[25->0xCA]
[26->0xCA]
[27->0xCA]
[28->0xCA]
[29->0xCA]
[30->0xCA]
[31->0xD]
unpacked body dump
[0x0->0xE0]
[0x1->0x15]
[0x2->0x5]
[0x3->0x1]
[0x4->0x1]
[0x5->0x2]
[0x6->0x0]
[0x7->0x0]
[0x8->0x1]
[0x9->0x0]
[0xA->0x0]
[0xB->0x0]
[0xC->0x0]
[0xD->0x0]
[0xE->0x0]
[0xF->0x0]
[0x10->0x0]
[0x11->0x0]
[0x12->0x0]
[0x13->0x0]
[0x14->0x0]
[0x15->0x0]
[0x16->0x0]
[0x17->0x0]
тогда я сдампил то, что Demo.exe из СДК отправляет и получает с конвертора z-397 при попытке получения инфо по контроллеру с адресом 0x2
{ 0x20,0xc2,0x6c,0xc2,0xcf,0xcf,0xca,0xca,0xca,0xC8,0xCA,0x0d }
Полученный ответ (декодированное тело), похоже интерпретируется так:
[0x0->0x2D] контр сумма ?
[0x1->0x14] длина тела 20 байт - да сходится.
[0x2->0x5] лицензия
[0x3->0x5] ид пакета
[0x4->0x49] серийный номер
[0x5->0x5] серийный номер 0x4905 = 18693 (как раз мой z5r-net)
[0x6->0x2] адрес на шине rs485
[0x7->0x0]
[0x8->0x25] тип контроллера z5r-net
[0x9->0x6] флаги?? непонятно - у меня должно быть наверное touchMemory, 8k судя по демо.ехе
[0xA->0x2] v.2.9 прошивка контроллера
[0xB->0x9] v.2.9 прошивка контроллера
[0xC->0x0]
[0xD->0x6]
[0xE->0x8]
[0xF->0x19] ... дальше наверное "адреса событий" но где - непонятно,
[0x10->0x1]
[0x11->0x0] .... и что за лишние поля в ответе?
[0x12->0x4]
[0x13->0x2]
но ведь оригинальная табличка из описания протокола рассказывает о чуть-чуть другом:
0x00 1 байт Контрольная сумма
0x01 1 байт 0x08 Длина пакета
0x02 1 байт 0x08 Номер лицензии
0x03 1 байт 0x01 Идентификатор пакета
0x04 1 байт 0x00 Код операции (0 - среди найденных, 1 - перепроверить этот сетевой адрес)
0x05 1 байт Сетевой адрес контроллера
0x06 2 байта 0x0000 Зарезервировано
0x08 1 байт Тип контроллера 0x24 - Matrix-II-Net 0x25 - Z5R-Net
0x09 1 байт араметры контроллера
биты 0-1 - размер памяти (0x00 - 2Kb, 0x01 - 4Kb, 0x02 - 8Kb)
бит 3 - карты кодируются по стандарту Wiegand
бит 7 - есть новые события
остальные биты зарезервированы
0x0A 2 байта Версия ПО контроллера
0x0C 1 байт зарезервировано
0x0D 2 байта Адрес последнего записанного события
0x0F 2 байта Адрес последнего считанного события
посмотрел на это, ...ребутнул весь стенд, снова отправляю {0x20,0xc2,0x6c,0xc2,0xcf,0xcf,0xca,0xca,0xca,0xC8,0xCA,0x0d } и ничего
видимо, demo.exe еще что-то предварительно инициализирует. Запускаю demo, закрываю, запускаю свою "размотку" , отправляю {0x20,0xc2,0x6c,0xc2,0xcf,0xcf,0xca,0xca,0xca,0xC8,0xCA,0x0d } и снова вижу ответ из 20 байт в теле (см. в начале).
не могу понять, то ли неполное/устаревшее описание протокола, то ли не вчитался и пропустил какой-то важный шаг - то ли то и другое вместе взятое..