Proxy USB-ma и код TM

FORUM_NAME: Считыватели серии Proxy
Модератор: Модераторы

Уважаемые пользователи! В связи с отсутствием возможности оплачивать хостинг сайта и отсутствием материальной помощи от пользователей, Форум вынужден будет прекратить работу с Марта месяца 2024 года!.


aleksei_sm
Автор темы
aleksei_sm
Автор темы
Репутация: 1
Сообщения: 14
Зарегистрирован: 30.06.2016
С нами: 7 лет 8 месяцев
Профессия: сисадмин

Непрочитанное сообщение #1 aleksei_sm » 30.06.2016, 05:13

Добрый день! В нашей компании используются контроллеры С2000-2, считыватели proxy-h и считыватель proxy usb-ma. Проблема в том, что usb-считываетль считывает с карты только 5 байт. То, что нужно добавить первый байт 01 и то, что он постоянный для всех используемых нами карт ясно, проблема в 8 байте: это crc8. Но вопрос в том, из каких байт он вычисляется и по какому алгоритму. Прошу Вас дать мне этот алгоритм, тк на сегодняшний момент мы еще не можем позволить себе АРМ Орион-про и ведем учет карточек в excel. Идея в том, чтобы с помощью считывателя ub-ma заносить карты в excel базу, далее excel с помощью формулы (по алгоритму, которого у меня нет и который я прошу у Вас) вычисляет crc и выдает код, который в дальнейшем используется в uprog при конфигурировании приборов.
Заранее благодарен.

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #2 google » 30.06.2016, 09:47

День добрый!
Почитайте вот эту тему Прокс считыватели, формат карт. Может что найдёте по своему вопросу.

Admin M
Администратор
Администратор
Аватара
Admin M
Администратор
Администратор
Возраст: 43
Репутация: 30
Сообщения: 412
Зарегистрирован: 04.06.2012
С нами: 11 лет 9 месяцев
Профессия: в поисках себя
Откуда: респ. Беларусь, г. Минск

Непрочитанное сообщение #3 Admin » 30.06.2016, 10:28

aleksei_sm писал(а):на сегодняшний момент мы еще не можем позволить себе АРМ Орион-про
Работу в демо режиме не рассматриваете?

aleksei_sm
Автор темы
aleksei_sm
Автор темы
Репутация: 1
Сообщения: 14
Зарегистрирован: 30.06.2016
С нами: 7 лет 8 месяцев
Профессия: сисадмин

Непрочитанное сообщение #4 aleksei_sm » 30.06.2016, 10:45

google писал(а):День добрый!
Почитайте вот эту тему. Может что найдёте по своему вопросу.
Нет, к сожалению, ответа на мой вопрос здесь нет. Перед тем как задавать здесь вопрос я перешерстил весь форум, faq и другие вопросы, много узнал, но сейчас у меня загвоздка именно в том, как посчитать crc. Есть множество онлайн-калькуляторов, но они считают по-разному и получается разный ответ. А тот, который мне нужен (кот. считывается uprog'ом) никак не получается((

Admin писал(а):Работу в демо режиме не рассматриваете?
Демо-версию установили, но, я так понимаю, она рано или поздно закончится это раз. А во-вторых, насколько я понял, чтобы группу из c2000-2 собрать в одну сеть Орионом, нужен промежуточный аппарат C2000М или С2000пп.

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #5 google » 30.06.2016, 11:02

aleksei_sm писал(а):Демо-версию установили, но, я так понимаю, она рано или поздно закончится
Демо-версия не закончится. После запуска Вам будет доступен полный функционал ОрионПРО в течении 4-ех часов, вроде бы. По истечении этого времени просто напросто закрывается автоматом сервер Ориона. Но Вам ничего не мешает запустить сервер по новой и продолжить работать.

pet-and M
Активный участник
Активный участник
pet-and M
Активный участник
Активный участник
Возраст: 45
Репутация: 139
Сообщения: 3300
Зарегистрирован: 11.11.2012
С нами: 11 лет 4 месяца
Профессия: инженер
Откуда: Санкт-Петербург

Непрочитанное сообщение #6 pet-and » 30.06.2016, 12:07

В демо-режиме ОперативнаяЗадача работает два часа, СерверБД четыре часа. После установленного срока спокойно можно перезапустить и работать дальше.
Контроллеры можно подключить к компу через преобразователь ЮСБ-RS485.

aleksei_sm
Автор темы
aleksei_sm
Автор темы
Репутация: 1
Сообщения: 14
Зарегистрирован: 30.06.2016
С нами: 7 лет 8 месяцев
Профессия: сисадмин

Непрочитанное сообщение #7 aleksei_sm » 01.07.2016, 03:37

pet-and писал(а):Контроллеры можно подключить к компу через преобразователь ЮСБ-RS485.
Он же C2000-USB?

pet-and M
Активный участник
Активный участник
pet-and M
Активный участник
Активный участник
Возраст: 45
Репутация: 139
Сообщения: 3300
Зарегистрирован: 11.11.2012
С нами: 11 лет 4 месяца
Профессия: инженер
Откуда: Санкт-Петербург

Непрочитанное сообщение #8 pet-and » 01.07.2016, 06:58

Да.

Sm521987 M
Sm521987 M
Возраст: 50
Репутация: 10
Сообщения: 170
Зарегистрирован: 16.01.2016
С нами: 8 лет 2 месяца
Профессия: Инженер

Непрочитанное сообщение #9 Sm521987 » 01.07.2016, 07:55

Не совсем "он же" - разный конструктив, а суть таже.

Vse
Активный участник
Активный участник
Vse
Активный участник
Активный участник
Репутация: 38
Сообщения: 925
Зарегистрирован: 10.07.2013
С нами: 10 лет 8 месяцев
Профессия: всё и сразу

Непрочитанное сообщение #10 Vse » 01.07.2016, 11:05

aleksei_sm,
1)программа- конвертор кодов карт в Touch Memory для системы "Орион" : ftp://ftp.bolid.ru/distrib/wconvert.7z
2)http://bolid.ru/support/faq/

Спойлер
Каким образом можно считать код карты, который прокси считыватель выдаст в формате ТМ?
Код карты, выдаваемый считывателем в формате Touch Memory, можно увидеть, например, в программе Uprog, если подключить считыватель к прибору "С2000-4" или "С2000-2", добавить ключ и осуществить считывание кода карты. Код карты, отображаемый программой Uprog, имеет следующий формат (справа налево!):
Первый (младший) байт кода вегда 01(hex) (в UPROG это две последние шестнадцатиричные цифры).
Затем идет 6 байт кода карты. Значащих из них не менее трех, остальные заполнены нулями (обычно) или FFh (иногда).
Последний (старший) байт кода - это 8-разрядная CRC предыдущих 7-байт (в UPROG это две первые шестнадцатиричные цифры). Таким образом, если отбросить первые 2 цифры (CRC), затем все незначащие нули, а также последние 2 цифры (01), то получится код карты в шестнадцатиричном формате.


Не можете ли вы подсказать, как ваши контроллеры преобразуют код прокси-карты (насколько мне известно, в карту зашит бинарный код). У вас на выходе получается 16 разрядное шестнадцатиричное число.

Наши приборы, такие как "С2000-2", общаются не с картами, а со считывателями. Код карты, получаемый контроллером по интерфейсу Wiegand, преобразуется в формат, принятый в системе "Орион" (формат идентификатора Touch Memory DS1990A) по следующему алгоритму (в АБД АРМ "Орион" первый байт - это две последние шестнадцатиричные цифры, второй - две предыдущие цифры и т.д.):
первый и последний бит Wiegand-посылки (четность) отбрасываются"
первый (младший) байт кода вегда 01(hex) (в АБД АРМ "Орион" - это две последние шестнадцатиричные цифры)"
затем идет 6 информационных байт - это байты принятой Wiegand-посылки (если принято менее 6-и информационных байт, то старшие биты заполняются нулями)"
последний (старший) байт кода - это 8-разрядная CRC предыдущих 7- байт (в АБД АРМ "Орион" - это две первые шестнадцатиричные цифры).
Так, например, если по интерфейсу Wiegand принята посылка 12 34 56 (56(hex) - это младший байт кода), то в АБД АРМ "Орион" этот будет выглядеть так :
CRC 00 00 00 12 34 56 01, где CRC - это две шестнадцатиричные цифры (байт) циклической контрольной суммы остальных 7-и байт.
По такому алгоритму код карты преобразуется в 8-и байтовый код ключа Touch Memory не только в системе "Орион", но и в считывателях других производителей.
Похоже, что для занесения такого кода в Вашу систему необходимо отбросить 3 первых байта (CRC и два старших байта), а также последний байт (который всегда 01), а оставшиеся 4 байта проинвертировать и поменять местами
.

В системе ОРИОН используются считыватели PR-A03 (Parsec). Какой формат данных предпочителен: Wiegard 26 или Touch Memory? В системе более 80 приборов, и необходима максимальная скорость обработки и передачи данных..
Не важно, какой формат используется, важно, чтобы он был одинаков на всех считывателях (Wiegand-26 немного обрезает код карты, поэтому одна и та же карта в Wiegand-26 и в Touch Memory отличается по коду). Формат данных считывателя не влияет на скорость обработки и передачи данных.

Vse
Активный участник
Активный участник
Vse
Активный участник
Активный участник
Репутация: 38
Сообщения: 925
Зарегистрирован: 10.07.2013
С нами: 10 лет 8 месяцев
Профессия: всё и сразу

Непрочитанное сообщение #11 Vse » 04.07.2016, 11:01

Как преобразовать код карточек Виганд в формат кода Dallas TouchMemory?

Для преобразования кода карточек Виганд в формат кода Dallas TouchMemory необходимо дополнить код Виганд нулевыми битами до 7-ми байт и посчитать для них циклическую контрольную сумму:

Таблица 1
Табл1.png

Т.е. на примере кода 011 55982 получается следующий код:

Таблица 2
Табл2.png


Циклическая контрольная сумма получается по правилу фирмы Dallas. Расчет осуществляется следующим образом:

Код: Выделить всё

  CRCTable : array [0..255] of byte = (
      0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65,
      157,195,33,127,252,162,64,30,95,1,227,189,62,96,130,220,
      35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98,
      190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255,
      70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7,
      219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154,
      101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36,
      248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185,
      140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205,
      17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80,
      175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238,
      50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115,
      202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139,
      87,9,235,181,54,104,138,212,149,203,41,119,244,170,72,22,
      233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168,
      116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53);
KeyCode: array[1..8] of byte;
KeyCode[ 8 ] := 0;

For j := 1 to 7 do
    KeyCode[ 8 ]  := CRCTable[ KeyCode[ 8 ] xor KeyCode[ j ] ];



Полученный 8-ми байтный код можно заносить в БД для использования в АРМ "Орион".

megaaxel
megaaxel
Репутация: 0
Сообщения: 12
Зарегистрирован: 13.09.2016
С нами: 7 лет 6 месяцев
Профессия: инженер

Непрочитанное сообщение #12 megaaxel » 19.09.2019, 15:40

Потребовалось конвертировать коды со считывателей Bolid в формат Dallas (его выдаёт считыватель IronLogic Matrix-V), готового решения не нашёл.
Для примера, BC00360062818C01 -> 590000005B148801.
Но помогла информация данного топика, и вот готов результат, слепленный на коленке.

Для пакетной обработки можно использовать CMD-файлы в виде

Код: Выделить всё

bolid2dallas F8001C005B148801 >> out.txt
bolid2dallas 40001A00A6F93201 >> out.txt
bolid2dallas FE004200BEBBF001 >> out.txt

или переписать программу под себя.

Программа написана на PascalABC.NET.
Исходный код карты можно ввести в качестве параметра программы (для пакетной обработки), если не вводить - программа запросит в подсказке (в консоли). Регистр вводимых символов значения не имеет.
Обработка вводимых данных не производится, поэтому при неправильном формате ввода (длина ключа, символы, и т.п.) происходит либо неправильный вывод, либо вылет программы.

Спойлер

Код: Выделить всё

VAR
 CRCTable : array [0..255] of byte = (
      0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65,
      157,195,33,127,252,162,64,30,95,1,227,189,62,96,130,220,
      35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98,
      190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255,
      70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7,
      219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154,
      101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36,
      248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185,
      140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205,
      17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80,
      175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238,
      50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115,
      202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139,
      87,9,235,181,54,104,138,212,149,203,41,119,244,170,72,22,
      233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168,
      116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53);
     
KeyCode: array[1..8] of byte = ($01,$00,$00,$00,$00,$00,$00,$00);
InputCode : string;

Function Hex2Byte(s: string): byte;
const c: string[16]='0123456789ABCDEF';
Begin
  s := s.ToUpper;
  if length(s) < 2
    then Result := pos(s, c) - 1
    else Result := (pos(s[1], c) - 1) * 16 + pos(s[2], c) - 1;
End;

Function Byte2Hex(b: byte): string;
const c: string[16]='0123456789ABCDEF';
Begin
  Result := c[b div 16 + 1] + c[b mod 16 + 1];
End;

BEGIN
  if ParamCount <> 0
    then InputCode := ParamStr(1)
    else
    begin
      Write('Введите код карты: ');
      Readln(InputCode)
    end;

  for j:byte :=1 to 3 do
    KeyCode[j+1] := Hex2Byte(InputCode.Substring(14 - j*2, 2));
  for j:byte := 1 to 7
    do KeyCode[8] := CRCTable[KeyCode[8] xor KeyCode[j]];
  for j:byte := 8 downto 1 do
     Write(Byte2Hex(KeyCode[j]));
   Writeln;
END.
Вложения
bolid2dallas.zip
(14.36 КБ) 184 скачивания


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Считыватели серии Proxy»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 3 гостя

forum-bolid.ru : Отказ от ответственности