2022年如何使用DELPHI与USB设备进行通讯 .pdf





《2022年如何使用DELPHI与USB设备进行通讯 .pdf》由会员分享,可在线阅读,更多相关《2022年如何使用DELPHI与USB设备进行通讯 .pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下面是访问USB 设备的类单元文件:Usb 通讯操作助手Date:2008-7-10Version: 1.0Author:zlz ()unit TUsbUtil_U;interfaceusesWindows, Messages,SysUtils, Variants, Classes,StdCtrls,Dialogs,SetupApi;constMAX_PATH= 260;/文件名最大长度MAX_DATA_BUFFER= 1024;/缓冲区大小Type/数据缓存TDataBuffer = recordDataBuffer:array0.MAX_DATA_BUFFERof byte;/缓存数据Da
2、taSize :Integer;/缓存数据长度end;/串口操作助手TUsbUtil= class(TObject)publicfunction Open(usbguid:String) :boolean;/打开 USB 设备procedure Close();/关闭 USB 设备procedure WriteBytes(bs:TDataBuffer);/向 USB 设备发送字节数组function ReadBytes():TDataBuffer;/从 USB 设备读取数据privatehUsbHandle :THandle;/打开一个设备functionOpenOneDevice(hDvcI
3、nfo:HDEVINFO;DvcInfoData:PSPDeviceInterfaceData;sDevNameBuf:pchar) :THandle;/打开指定的USB 设备function OpenUsbDevice(pGuid :TGUID; sDevNameBuf :pchar):THandle;end;implementation TUsbUtil 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - procedure T
4、UsbUtil.Close;beginCloseHandle(hUsbHandle);end;function TUsbUtil.Open(usbguid:String): boolean;varDeviceName: array0.MAX_PATHof char;USB_GUID: TGUID;beginResult := false;USB_GUID := StringToGuid( + usbguid + );hUsbHandle := OpenUsbDevice(USB_GUID,DeviceName);if (hUsbHandle = INVALID_HANDLE_VALUE)the
5、nbeginraise Exception.Create(无法打开指定的USB 设备 );end;Result := True;end;function TUsbUtil.OpenOneDevice(hDvcInfo:HDEVINFO;DvcInfoData: PSPDeviceInterfaceData; sDevNameBuf: pchar): THandle;variReqLen :pdword;iDevDataLen : DWord;pDevData : PSPDeviceInterfaceDetailDataA ;hOut: THandle;beginhOut := INVALID_
6、HANDLE_VALUE;iReqLen := pdword(integer(0);SetupDiGetDeviceInterfaceDetail(hDvcInfo,DvcInfoData,nil, 0, iReqLen, nil);iDevDataLen := DWORD(integer(iReqLen);GetMem(pDevData, iDevDataLen);pDevData.cbSize := sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_A);if(SetupDiGetInterfaceDeviceDetail(hDvcInfo,DvcInfoDat
7、a,pDevData,iDevDataLen,iReqLen, nil) thenbeginstrcopy(sDevNameBuf, pDevData.DevicePath);hOut:=CreateFile(pDevData.DevicePath,GENERIC_WRITEorGENERIC_READ,FILE_SHARE_WRITEor FILE_SHARE_READ,nil,OPEN_EXISTING,0,0);end;FreeMem(pDevData);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
8、 - - - - - 第 2 页,共 5 页 - - - - - - - - - Result := hOut;end;function TUsbUtil.OpenUsbDevice(pGuid:TGUID; sDevNameBuf: pchar): THandle;varhDevInfo1 : HDEVINFO;deviceInfoData : TSPDeviceInterfaceData ;nGuessCount : Dword;iDevIndex :DWord;hOut: THandle;beginhDevInfo1:=SetupDiGetClassDevs(pGuid,nil,0,DI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年如何使用DELPHI与USB设备进行通讯 2022 如何 使用 DELPHI USB 设备 进行 通讯

限制150内