關於在DELPHI 裏如何調用USB設備
關於在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,關閉句柄。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.