Модуль "P2KApi" (часть 60) - TP2KAPI.StackOverFlow
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
от 07 декабря 2007 г.
function TP2KAPI.StackOverFlow(Addr: Dword; Data: Pointer; Size: dword): boolean; var Cmd_temp:array[0..2055] of byte; i:word; chk:byte; Cmd_Ans:array[0..1023] of char; //Cmd_Ans:array[0..4095] 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;
//repeat
if SendSize < $800 then BlockSize:=SendSize else BlockSize:=$800;
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;
//xx:= 4096;
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;
BlockAddr:=BlockAddr+BlockSize;
BufPos:=BufPos+BlockSize;
//until SendSize = 0;
sleep(2003);
// ger status "Ready"
xx:= 1024;
for I:=0 to High(Cmd_ans) do Cmd_ans:=#0;
USB_ReadDataEx(@Cmd_ans, xx,2,xFlashTimeOut);
end;
Еще записи по теме
- Модуль "Календарь" (часть 17) - AddDateBook
- Модуль "Справочник" (часть 29) - EditGroup
- Модуль "Будильник" (часть 2)
- Модуль "P2KApi" (часть 17) - FillTCIFSACStructEx
- Модуль "Пункты меню" (часть 28) - EditNodeItemOld
- Модуль "Новое сообщение" (часть 2) - FormCreate
- Модуль "Справочник" (часть 24) - Abonent_Edit
