?? p.dpr
字號(hào):
program P;
{$APPTYPE CONSOLE}
// kleiner interner TEST
//
// * alle units eingebunden ... Compiler l鋟ft durch
// * reasdsync, buffpool und read test mit USB-Maus
//
uses
sysutils,windows,
USBIO in '.\..\units\usbio.pas',
USBIObuf in '.\..\units\usbiobuf.pas',
USBIOPipe in '.\..\units\usbiopipe.pas',
USBIO_I in '.\..\units\Usbio_i.pas',
USBSPEC in '.\..\units\Usbspec.pas',
usbio_i_delphi in '.\..\units\usbio_i_delphi.pas';
const
CONFIG_INDEX = 0;
CONFIG_NB_OF_INTERFACES = 1;
CONFIG_INTERFACE = 0;
CONFIG_ALT_SETTING = 0;
CONFIG_TRAN_SIZE = 4096;
ENDPOINT_ADDRESS = $81;
BUFFER_SIZE = 8;
NB_OF_BUFFERS = 5;
var
test : tusbio;
pi : TusbioPipe;
BufPool : TUsbIoBufPool;
mbuf : TUsbIoBuf;
ep : HDEVINFO;
desc : USB_DEVICE_DESCRIPTOR;
StrDescSize : DWORD = sizeof(USB_STRING_DESCRIPTOR)+256;
status : DWORD;
conf : USBIO_SET_CONFIGURATION;
buf1 : array[0..100] of byte;
bytecnt : DWORD;
i : integer;
beideMausTasten : boolean;
label Exit;
begin
//=================================================
// Usbio testen....
//=================================================
test:=tusbio.Create;
ep:=test.CreateDeviceList(@USBIO_IID);
status:=test.open(0,ep,@USBIO_IID);
writeln('OPEN:',test.errortext(status));
if status <> USBIO_ERR_SUCCESS then goto Exit;
Status:=test.GetDeviceDescriptor(@desc);
writeln('GetDeviceDescriptor:',test.errortext(status),' ',desc.idVendor,' ',desc.idProduct);
if status <> USBIO_ERR_SUCCESS then goto Exit;
// get the string descriptor, our mouse was buggy, so we skip the test
{
getmem(PStrDesc,StrDescSize);
status:=test.GetStringDescriptor(PStrDesc,StrDescSize,desc.iSerialNumber);
writeln('GetStringDescriptor:',test.errortext(status),' ',desc.iSerialNumber);
if status <> USBIO_ERR_SUCCESS then goto Exit;
}
Conf.ConfigurationIndex:=CONFIG_INDEX;
Conf.NbOfInterfaces:=CONFIG_NB_OF_INTERFACES;
Conf.InterfaceList[0].InterfaceIndex:=CONFIG_INTERFACE;
Conf.InterfaceList[0].AlternateSettingIndex:=CONFIG_ALT_SETTING;
Conf.InterfaceList[0].MaximumTransferSize:=CONFIG_TRAN_SIZE;
Status:=test.SetConfiguration(@Conf);
writeln('SetConfiguration:',test.errortext(status));
if status <> USBIO_ERR_SUCCESS then goto Exit;
pi:=TusbioPipe.Create;
status:=pi.Bind(0,ENDPOINT_ADDRESS,ep,@Usbio_IID);
writeln('Bind:',test.errortext(status));
if status <> USBIO_ERR_SUCCESS then goto Exit;
//=================================================
// readSYNC testen....
//=================================================
BeideMausTasten:=false;
Writeln('Move mouse! Press both mouse buttons to stop');
while not(BeideMausTasten) do
begin
bytecnt:=BUFFER_SIZE;
pi.ReadSync(@Buf1,bytecnt);
if bytecnt>0 then
for i:=0 to bytecnt-1 do write(buf1[i]:3);
beideMausTasten:=(buf1[0]=3);
Writeln;
end;
writeln;
writeln;
//=================================================
// Buf testen....
//=================================================
BufPool:=TUsbIoBufPool.create;
BufPool.Allocate(BUFFER_SIZE,NB_OF_BUFFERS);
Writeln('Test buffer pool');
Writeln('Move mouse! Press both mouse buttons to stop');
//=================================================
// read testen....
//=================================================
BeideMausTasten:=false;
while not(BeideMausTasten) do
begin
mBuf:=BufPool.get;
mBuf.NumberOfBytesToTransfer:=BUFFER_SIZE;
pi.Read(mbuf);
pi.WaitForCompletion(mbuf,INFINITE);
if mbuf.bytestransferred>0 then
for i:=0 to mbuf.bytestransferred-1 do write(byte(pchar(mbuf.buffer)[i]):3);
beideMausTasten:=(byte(pchar(mbuf.buffer)[0])=3);
Writeln;
BufPool.put(mBuf);
end;
bufpool.destroy;
Exit:
test.DestroyDeviceList(@USBIO_IID);
end.
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -