Работу в демо режиме не рассматриваете?aleksei_sm писал(а):на сегодняшний момент мы еще не можем позволить себе АРМ Орион-про
Нет, к сожалению, ответа на мой вопрос здесь нет. Перед тем как задавать здесь вопрос я перешерстил весь форум, faq и другие вопросы, много узнал, но сейчас у меня загвоздка именно в том, как посчитать crc. Есть множество онлайн-калькуляторов, но они считают по-разному и получается разный ответ. А тот, который мне нужен (кот. считывается uprog'ом) никак не получается((google писал(а):День добрый!
Почитайте вот эту тему. Может что найдёте по своему вопросу.
Демо-версию установили, но, я так понимаю, она рано или поздно закончится это раз. А во-вторых, насколько я понял, чтобы группу из c2000-2 собрать в одну сеть Орионом, нужен промежуточный аппарат C2000М или С2000пп.Admin писал(а):Работу в демо режиме не рассматриваете?
Демо-версия не закончится. После запуска Вам будет доступен полный функционал ОрионПРО в течении 4-ех часов, вроде бы. По истечении этого времени просто напросто закрывается автоматом сервер Ориона. Но Вам ничего не мешает запустить сервер по новой и продолжить работать.aleksei_sm писал(а):Демо-версию установили, но, я так понимаю, она рано или поздно закончится
Он же C2000-USB?pet-and писал(а):Контроллеры можно подключить к компу через преобразователь ЮСБ-RS485.
Каким образом можно считать код карты, который прокси считыватель выдаст в формате ТМ?
Код карты, выдаваемый считывателем в формате 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 отличается по коду). Формат данных считывателя не влияет на скорость обработки и передачи данных.
Код: Выделить всё
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 ] ];
Код: Выделить всё
bolid2dallas F8001C005B148801 >> out.txt
bolid2dallas 40001A00A6F93201 >> out.txt
bolid2dallas FE004200BEBBF001 >> out.txt
Код: Выделить всё
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.
Вернуться в «Считыватели серии Proxy»
Сейчас этот раздел просматривают: 2 гостя