nix1111 писал(а):Как можно быстро добавить 300 карт на уже имеющийся список сотрудников. Чтобы не парится с каждым В АБД..
Может есть какая утилита?
Есть генератор CRC в экселе. Часто помогает :) Но не всегда.AlexRuden писал(а):;;10;Максимум;28.04.2008;28.04.2009;E300090034AFD601
И только вручную, генераторов и утилит нету.
Почему не всегда?Sia-Ori писал(а):Есть генератор CRC в экселе. Часто помогает :) Но не всегда.
Я считываю в настольном считывателе через свою программку, которая формирует файл со строками вида -Sia-Ori писал(а):Я быстро добавляю карточки так.
Код: Выделить всё
;;ABCDE;Максимум;01.01.2012;31.12.2050;XX00YY0011223301
в экселе чтоли?AlexRuden писал(а):Почему не всегда?Sia-Ori писал(а):Есть генератор CRC в экселе. Часто помогает :) Но не всегда.Я считываю в настольном считывателе через свою программку, которая формирует файл со строками вида -Sia-Ori писал(а):Я быстро добавляю карточки так.Код: Выделить всё
;;ABCDE;Максимум;01.01.2012;31.12.2050;XX00YY0011223301
Где, "ABCDE" задаю программно табельный номер, равный цифрам в номере карты после запятой.
В файле списка сотрудников достаточно нужному сотруднику присвоить правильный таб. номер и карта подцепится к нему при импорте. На такой основе проще раздавать карты сотрудникам (таб.номер = номеру карты).
В своей программе? - на ассемблере.nix1111 писал(а):Каким образом считаешь CRC ???
Код: Выделить всё
; buffer IN - 0000440011223301
; OUT - XX00440011223301
proc crc8_bolid uses ecx ebx edi, buffer
xor ebx,ebx
mov edi,[buffer]
mov ecx,8
@@:
mov al,byte[edi+ecx]
xor bl,al
and ebx,0FFh
mov bl,byte[crc8_bolid_table+ebx]
dec ecx
jnz @B
mov byte [edi],bl
ret
endp
data.
crc8_bolid_table db 0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65
db 157,195,33,127,252,162,64,30,95,1,227,189,62,96,130,220
db 35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98
db 190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255
db 70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7
db 219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154
db 101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36
db 248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185
db 140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205
db 17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80
db 175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238
db 50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115
db 202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139
db 87,9,235,181,54,104,138,212,149,203,41,119,244,170,72,22
db 233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168
db 116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53
На Васике лет 20 не программил, забыл я его уже, да и не нравится он мне. Попробуйте прикрутить в своей программе -nix1111 писал(а):здорово
мне бы на VB такой же код...
Код: Выделить всё
Private Declare Function CRC8 Lib "CRC8.DLL" (ByVal buffer As Byte) As Long
....
CRC8 (buffer)
// массив из 8 байт на входе (старший crc-нули), на выходе встречаем массив с посчитанным crc8
Ну это не пример - это самоделка из кода выше )). Это расчет по табличному алгоритму, сам я пользуюсь расчетом на основе полинома.nix1111 писал(а):Хмм здорово.
Спасибо.
А с BLOB полями нет случайно примера?
В частности просто хочется автоматизировать добавление фотографий.
Код: Выделить всё
26 000000 64057A 01 02 64057A
F5 000000 640582 01 02 640582
70 000000 640585 01 02 640585
BB 000000 6405A9 01 02 6405A9
D5 000000 6405AB 01 02 6405AB
18 000000 6405B2 01 02 6405B2
52 000000 6405BF 01 02 6405BF
6B 000000 6405C7 01 02 6405C7
14 000000 6405D8 01 02 6405D8
BE 000000 230FBE 01 02 230FBE
5B 000000 230FC2 01 02 230FC2
FA 000000 230FCA 01 02 230FCA
48 000000 230FCC 01 02 230FCC
7B 000000 230FEB 01 02 230FEB
C9 000000 230FED 01 02 230FED
D8 000000 230FF0 01 02 230FF0
81 000000 230FF3 01 02 230FF3
A5 000000 230FFC 01 02 230FFC
4E 000000 AF1D6E 01 02 AF1D6E
F1 000000 AF1D87 01 02 AF1D87
A8 000000 A92EE4 01 02 A92EE4
8E 000000 A92EF8 01 02 A92EF8
D7 000000 A92EFB 01 02 A92EFB
83 000000 A92F0E 01 02 A92F0E
4E 000000 A92F17 01 02 A92F17
24 000000 A92F33 01 02 A92F33
6E 000000 A92F3E 01 02 A92F3E
F0 000000 A92F7B 01 02 A92F7B
14 000000 A92F82 01 02 A92F82
DB 000000 A92F88 01 02 A92F88
7E 000000 A92FA6 01 02 A92FA6
97 000000 A92FB0 01 02 A92FB0
1C 000000 A92FCE 01 02 A92FCE
C4 000000 A92FEC 01 02 A92FEC
24 000000 A9303D 01 00 A9303D
1D 000000 A93045 01 00 A93045
0C 000000 A93058 01 00 A93058
6C 000000 A35733 01 00 A35733
39 000000 A3575A 01 00 A3575A
8C 000000 7B614F 01 00 7B614F
Тут много разжевано про это. Чем не подходит выложенная выше библиотека?1120 писал(а):Вопрос в том как посчитать эту CRC-8, которую необходимо дописать в начало?!?!?! Перепробовал кучу алгоритмов, все выдают разные результаты, но ни один не выдет то, что нужно. Может кто-то может скомпилировать EXE для подсчёта этих злосчастных CRC?
Код: Выделить всё
02 64057A
Код: Выделить всё
26 000000 64057A 01 00 64057A - Виганд 26
B7 000200 64057A 01 02 64057A - ТМ
Я не спорю, что разжевано много, но у меня не получилось и поэтому я пишу здесь. Библиотека не помогла, как минимум потому что я не понимаю какой параметр у функции (как бы передаётся 1 байт, а не 8) и почему возвращается LONG (8 байт), а не BYTE (1 байт). Пробовал прикрутить по-разному, но не считает то, что мне нужно. Может кто-то сумеет проверить правильность CRC в примере, который я привёл, а то я уже начинаю сомневаться. что первый байт из восьми - это CRC не смотря на то что это признанный факт.Тут много разжевано про это. Чем не подходит выложенная выше библиотека?
Я не знаю нужно его учитывать или нет хотя бы потому что я не могу почитать CRC чтобы проверить это утверждение. Если можете - посчитайте пожалуйста. Я расскажу как я получил 8 байт из 4-х. Зашел в Орион Про; перешел на вкладку ввода ключа нажал кнопку "Получить с настольного ситывателя"; поднес карту к считывателю; в поле ввода появилось "0264057A", нажал "ОК"; в итоге получил "2600000064057A01". И так далее для всех.02 здесь я так понимаю злополучный 5-й байт номера карты - если режим Виганд 26 - он обнуляется, если режим ТМ, тогда его нужно учитывать -
Входной параметр 8 байт - вход: 0000000064057A01, после выполнения функции получите: 2600000064057A011120 писал(а):Библиотека не помогла, как минимум потому что я не понимаю какой параметр у функции (как бы передаётся 1 байт, а не 8) и почему возвращается LONG (8 байт), а не BYTE (1 байт). Пробовал прикрутить по-разному, но не считает то, что мне нужно.
Формат выходных данных у считывателя какой установлен?1120 писал(а):поднес карту к считывателю; в поле ввода появилось "0264057A", нажал "ОК"; в итоге получил "2600000064057A01". И так далее для всех.
PProg отлично подсчитывает CRC8. А для пакетного преобразования нужно формировать с вашей стороны входной файл с кодами, а пакетник их пережуёт и выдаст готовые crc8.1120 писал(а):Повторю свою просьбу еще раз. ПОЖАЛУЙСТА! Скомпилируйте EXE-файл для подсчёта БОЛИДовского CRC, если не трудно!
Сейчас этот раздел просматривают: 2 гостя