关于在DELPHI 里如何调用USB设备,其实很简单:步骤如下:
以AVR309为例:
1,创建设备句柄:
DrvHnd:=CreateFile(PChar(Drvfile),GENERIC_WRITE or GENERIC_READ, FILE_SHARE_WRITE or FILE_SHARE_READ,
nil,OPEN_EXISTING,0,0);
Drvfile:为USB设备驱动建立的句柄名称(比如AVR309是:Drvfile:PChar='\\.\AVR309usb_0');
2, 控制设备:
Result:=DeviceIoControl(DrvHnd,$800+8,@ibuf,5,@obuf,512,cardinal(OutLength),nil);
DeviceIoControl 是向设备发送或接收数据。
$800+8:是IOCTL代码,有驱动程序中指定。
ibuf:是电脑向设备输入的缓冲区。
比如ibuf={0x11,0x36,0,0,0}
0x11:为NoDoRS232Send
0x36,0,0,0 是NoDoRS232Send 可以调用的参数:InputBufferBegin+4到InputBufferBegin+7
如果函数执行成功,则0X36会从串口发送出去。
obuf:是设备输出到电脑的缓冲区。
3,关闭句柄。
以AVR309为例:
1,创建设备句柄:
DrvHnd:=CreateFile(PChar(Drvfile),GENERIC_WRITE or GENERIC_READ, FILE_SHARE_WRITE or FILE_SHARE_READ,
nil,OPEN_EXISTING,0,0);
Drvfile:为USB设备驱动建立的句柄名称(比如AVR309是:Drvfile:PChar='\\.\AVR309usb_0');
2, 控制设备:
Result:=DeviceIoControl(DrvHnd,$800+8,@ibuf,5,@obuf,512,cardinal(OutLength),nil);
DeviceIoControl 是向设备发送或接收数据。
$800+8:是IOCTL代码,有驱动程序中指定。
ibuf:是电脑向设备输入的缓冲区。
比如ibuf={0x11,0x36,0,0,0}
0x11:为NoDoRS232Send
0x36,0,0,0 是NoDoRS232Send 可以调用的参数:InputBufferBegin+4到InputBufferBegin+7
如果函数执行成功,则0X36会从串口发送出去。
obuf:是设备输出到电脑的缓冲区。
3,关闭句柄。