![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 08.11.2012
Сообщений: 7
|
![]()
Доброе время суток.
Есть устройсво (rfid считыватель), нужно написать на Delphi программу для обмена данными с этим устройсвом. Протокол известен, но возникли трудности с расчетом FCS, я так понимаю это и есть CRC16? Сталкивался ли кто может подскажите что к чему или ссылочек киньте. Спасибо. |
![]() |
![]() |
![]() |
#2 |
Регистрация: 08.11.2012
Сообщений: 7
|
![]()
Бесконтактный считыватель PROX 13мгц-Reader.
http://prox.ru/index.php?item=13mhz-rw-232 FCS в данном протоколе реализована согласно стандартам CCITT X.25 или ISO/IEC 3309 или RFC1331 (PPP). Полином 0х8408. А кто нить сам реализовывал? Вот из сниффера - запрос FD C7 02 02 F1 50 FE ответ FD C7 02 03 78 41 FE FD,FE - начало, конец. C7 - идентификатор кадра 02 - команда 02 - данные команды F1,50 - FCS который нифига не могу понять Хотелось бы написать ручками. Но за бибку спасибо! В ГОСТе ИСО/МЭК 3309-98 на 9ой страничке есть описание. Но не пойму даже что такое X ??? |
![]() |
![]() |
![]() |
#3 |
Регистрация: 08.11.2012
Сообщений: 7
|
![]()
Всем лень? или никто правда не знает?
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
свои наработки давай
Не стесняемся, плюсуем!
![]() |
![]() |
![]() |
![]() |
#5 |
Регистрация: 08.11.2012
Сообщений: 7
|
![]()
Да в общем вот что получилось, помогли чуть. Пока разбираюсь, думаю вопросы еще возникнут.
var FCS: Word; procedure X_FCS(_D: Byte); var _i: Integer; _w: Word; begin _w := _D xor (FCS and $FF); _i := 8; repeat if Boolean(_w and 1) then begin _w := _w shr 1; _w := _w xor $8408; end else _w := _w shr 1; Dec(_i); until _i = 0; FCS := _w xor (FCS shr 8); end; var Request: array[0..6] of Byte = ($FD, $C7, $02, $02, $F1, $50, $FE); procedure TfrmMain.Button2Click(Sender: TObject); var i: Integer; begin FCS := $FFFF; for i := 1 to SizeOf(Request) - SizeOf(FCS) - 2 do X_FCS(Request[i]); ShowMessage(IntToHex(not FCS, 4)); end; |
![]() |
![]() |
![]() |
#6 |
Регистрация: 08.11.2012
Сообщений: 7
|
![]()
Много гуглил и не нашел как Word в 2 байта разделить.
Не подскажет ли кто? Собственно в случае FCS можно воспользоваться конечно hi и lo, но хотелось бы и такой вариант узнать. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
div и mod на 256 не устраивает?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 08.11.2012
Сообщений: 7
|
![]()
Конечно устраивает. А если будет 4х байтовое? В CRC32 например, надо отправлять 4х байтовое число ведь.
Нет ли какой нить функции разложения х-байтового числа в масив из х байт? |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
С DWORD можно так поиграться
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#10 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Такая функция пишется вручную за минуту.
Код:
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как у Frame сделать закругленные края? | pavellyba | Общие вопросы Delphi | 1 | 16.04.2011 03:13 |
Как научить программу создавать несколько Frame? | pavellyba | Общие вопросы Delphi | 3 | 05.04.2011 00:18 |
Как рассчитать возраст sql запрос | slai | БД в Delphi | 5 | 28.09.2010 11:02 |
Как рассчитать периметр фигуры | Kuzia | Microsoft Office Excel | 4 | 24.12.2009 07:51 |
Как рассчитать значения в табеле? | fs444 | Microsoft Office Excel | 2 | 16.11.2009 13:10 |