⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p.dpr

📁 DSP系列之TMS320VC5509的USB接口PC机端的驱动和测试应用程序。可识别设备
💻 DPR
字号:
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.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -