Hallo miparo,
das schreiben in der PIPE $81 funktioniert leider nicht, egal ob mit der Demo oder mit meinen Programm, ich erhalte beim usbTxBuf() immer False:
Kannst Du mir die Parameter "xUSB_DoJob($81, true, @TXbuf, Count + 2, nil)" erklären?
$81: ist die Pipe
true: ????
@Txbuf: Pointer auf den Übertragungsspeicher
Count+2: Übertragungsanzahl
nil: ????
Darf bei einem "xUSB_DoJob()" evtl. nicht der "xUSB_RXsetBuffer()" aktiv sein?
Thorsten
das schreiben in der PIPE $81 funktioniert leider nicht, egal ob mit der Demo oder mit meinen Programm, ich erhalte beim usbTxBuf() immer False:
Code
function usbTxBuf(p: pointer; Count: word): boolean;
begin
if HostFailed or (not UsbDriverConnect) then
return(false);
endif;
DebugOut('TX:1');
TxJob:= xUSB_EpGetJob($81);
SetSysTimer(TimerU, 2000 div SysTick);
repeat
DebugOut('TX:2');
if not TxJob^.busy then
DebugOut('TX:3');
cnt:= Count;
CopyBlock(p, @TXbuf[2], Count);
if xUSB_DoJob($81, true, @TXbuf, Count + 2, nil) then // Job still busy?
DebugOut('TX:TRUE');
return(true);
else
DebugOut('TX:False');
return(false);
endif;
endif;
until isSysTimerZero(TimerU);
return(false);
end;
begin
if HostFailed or (not UsbDriverConnect) then
return(false);
endif;
DebugOut('TX:1');
TxJob:= xUSB_EpGetJob($81);
SetSysTimer(TimerU, 2000 div SysTick);
repeat
DebugOut('TX:2');
if not TxJob^.busy then
DebugOut('TX:3');
cnt:= Count;
CopyBlock(p, @TXbuf[2], Count);
if xUSB_DoJob($81, true, @TXbuf, Count + 2, nil) then // Job still busy?
DebugOut('TX:TRUE');
return(true);
else
DebugOut('TX:False');
return(false);
endif;
endif;
until isSysTimerZero(TimerU);
return(false);
end;
Kannst Du mir die Parameter "xUSB_DoJob($81, true, @TXbuf, Count + 2, nil)" erklären?
$81: ist die Pipe
true: ????
@Txbuf: Pointer auf den Übertragungsspeicher
Count+2: Übertragungsanzahl
nil: ????
Darf bei einem "xUSB_DoJob()" evtl. nicht der "xUSB_RXsetBuffer()" aktiv sein?
Thorsten