Модуль "P2KApi" (часть 59) - TP2KAPI.SendFile2
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
от 07 декабря 2007 г.
function TP2KAPI.SendFile2(Addr: Dword; Data: Pointer; Size: Dword; ABlock: dword; AfrmProgress: TfrmProgress): boolean; var Cmd_temp:array[0..2055] of byte; i:word; chk:byte; Cmd_Ans:array[0..1023] of char; tmpstr:shortstring; SendSize, Progress:dword; BlockSize:word; BlockAddr:dword; BufPos:dword; DataTmp:Pointer; xx: dword;
begin
result:= false;
if not TelStatus then exit;
chk:=0;
cmd_temp[0]:=02;
cmd_temp[1]:=ord('B');
cmd_temp[2]:=ord('I');
cmd_temp[3]:=ord('N');
cmd_temp[4]:=$1E;
SendSize:=Size;
BlockAddr:=Addr;
BufPos:=0;
result:=true;
AfrmProgress.AdvProgressBar1.Value:= 0;
AfrmProgress.AdvProgressBar1.MaxValue:= Size;
repeat
if SendSize < ABlock then BlockSize:=SendSize else BlockSize:=ABlock;
cmd_temp[5]:=hibyte(BlockSize);
cmd_temp[6]:=lobyte(BlockSize);
asm
mov eax, Data
add eax, BufPos
mov DataTmp, eax
end;
move(DataTmp^,cmd_temp[7],BlockSize);
chk:=0;
for i:=1 to BlockSize+2 do chk:=chk+cmd_temp[i+4];
cmd_temp[BlockSize+7]:=chk;
cmd_temp[BlockSize+8]:=03;
SendAddr(BlockAddr);
for I:=0 to High(Cmd_ans) do Cmd_ans:=#0;
USB_WriteDataEx(@Cmd_temp, BlockSize+9,2,xFlashTimeOut);
xx:= 1024;
USB_ReadDataEx(@Cmd_ans, xx,2,xFlashTimeOut);
tmpstr:=trim(cmd_ans);tmpstr:=copy(tmpstr,1,3);
if tmpstr = 'ERR' then result:=false
else result:= true;
SendSize:=SendSize-BlockSize;
if BlockSize mod 4 = 0
then begin
AfrmProgress.AdvProgressBar1.Value:= AfrmProgress.AdvProgressBar1.Value + BlockSize;
Application.ProcessMessages;
end;
//Application.ProcessMessages;
//AfrmProgress.Update;
//AfrmProgress.Repaint;
BlockAddr:=BlockAddr+BlockSize;
BufPos:=BufPos+BlockSize;
until SendSize = 0;
sleep(1);
end;
Еще записи по теме
- Модуль "Flash_Patching" (часть 3) - btnOpenPatchClick
- Модуль "Новое сообщение" (часть 4) - spSkinRadioGroup2Click
- Модуль "Стили звонка" (часть 9) - SetRingStyle
- Модуль "Справочник" (часть 19) - RestorePhoneBook
- Модуль "P2KFileManager" (часть 25) - droptophone
- Главный модуль программы (часть 8) - FormCreate
- Модуль "CategoryProp" (часть 2) - процедуры и функции
