Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2012, 20:24   #1
Natali1
Новичок
Джуниор
 
Регистрация: 18.01.2012
Сообщений: 1
По умолчанию Вычисление контрольной суммы

Код:
procedure TForm1.Button5Click(Sender: TObject);
 Var fSave:file of byte;
j,k,Ks:Integer;
begin
OpenCOMPort;
if ComboBox1.Text='eeprom' then begin                                    // чтение из порта
 WBuff[0]:=$12;WBuff[1]:=$02;WBuff[2]:=$55;WBuff[3]:=$10;
 WBuff[4]:=$00;i:=0;WBuff[5]:=$0;WBuff[6]:=$52;Ks:=$52; k:=0;
 Repeat
    WrComm(7);Sleep(200);ReComm;
    For j:=0 to 15 do begin
     D[k]:=Rbuff[j+3];
     Inc(k);
    end;
    WBuff[5]:=WBuff[5]+$10;WBuff[6]:=WBuff[5]Xor Ks;i:=i+10;     // вычисление KS
 Until(i>150);
  SaveDialog1.FileName := 'eeprom-93S56.bin';
     If SaveDialog1.Execute Then
      Begin
        AssignFile(fSave,SaveDialog1.FileName );
        Rewrite(fSave);
          For I := 1 to 512 do BlockWrite(fSave,D[I-1],1);
        CloseFile(fSave);end;
If Status then CloseHandle(ComFile);Status := false;
end;
end;
WBuff - 12 02 55 10 00 00 52 (52) - это контрольная сумма XOR
(12 02 55 10) - это команда чтения из порта файла.
(00 00) - это адресная строка,
чтение начинается со строки 00 00 по FF F0
чтение из буфера происходит таким образом с 00 00
00 00
00 10
00 20
00 30
00 40
00 50
00 60
00 70
00 80
00 90
00 A0
00 B0
00 C0
00 D0
00 E0
00 F0
01 00
01 10
и так по FF F0
я сделала чтение файла из порта размером 256 байт и вычисление KS, получилось работает,
а вот сделать чтение 65536 байт (60kb) не как не получается с вычислением KS.
Контрольная сумма у нас -
12 02 55 10 00 00 - 52ks
12 02 55 10 00 10 - 42ks
12 02 55 10 00 20 - 72ks
12 02 55 10 00 30 - 62ks
и так далее
12 02 55 10 01 00 - 53ks
12 02 55 10 01 10 - 43ks
12 02 55 10 01 20 - 73ks
12 02 55 10 01 30 - 63ks
и так адресная строка по FF F0
12 02 55 10 FF F0 - 5Dks

Не понимаю как сделать переход на сотые и тысячные, переход с 00 F0 на 01 00 и шло далее и так по FF F0 с автоматическим вычислением ks

Помогите пожалуйста.

Спасибо заранее всем за помощь



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 22.01.2012 в 10:57.
Natali1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подобрать алгоритм расчета контрольной суммы hypertonyc C/C++ Сетевое программирование 9 03.12.2012 22:26
C++ шифрование контрольной суммы freeeeez Помощь студентам 1 22.05.2011 15:10
Интересный пример для расчёта контрольной суммы. ATAMAN200 Общие вопросы C/C++ 0 05.10.2010 19:17
Алгоритм вычисления контрольной суммы файлов young_W Общие вопросы Delphi 2 11.09.2007 22:22