用Delphi的同学可以用JvHidController控件可以开发,相对比较简单
- procedure TForm1.HIDctrl1DeviceData(HidDev: TJvHidDevice; ReportID: Byte;
- const Data: Pointer; Size: Word);
- var
- rcv_data :array of Byte;
- rcv_str:string;
- begin
- SetLength(rcv_data,Size+2);
- SetLength(rcv_str,Size+2);
- if (HidDev.Attributes.VendorID = USB_VID) and (HidDev.Attributes.ProductID = USB_PID) then
- begin
- mmo1.Lines.Add(Format('收到数据.【%s ; %s】', [HidDev.ProductName, HidDev.SerialNumber]));
- move(Data^,pchar(@rcv_data[1])^,Size);
- move(Data^,pchar(@rcv_str[1])^,Size);
- mmo1.Lines.Add(StrToHexStr(rcv_str));
- end;
- end;
复制代码
- procedure TForm1.btn1Click(Sender: TObject);
- var
- I: Integer;
- Written: Cardinal;
- ToWrite: Cardinal;
- Str: string;
- Err: DWORD;
- Send:TReport;
- begin
- if Assigned(a) then
- begin
- Send.ReportID := $00;
- Send.Data[0]:= $00;
- Send.Data[1]:= $CC;
- ToWrite := a.Caps.OutputReportByteLength;
- if not a.WriteFile(Send, ToWrite, ToWrite) then
- begin
- mmo1.Lines.Add('发送失败');
- end
- end;
- end;
复制代码
- procedure TForm1.HIDctrl1Arrival(HidDev: TJvHidDevice);
- begin
- if HidDev.ProductName='STC USB Device' then
- begin
- mmo1.Lines.Add(Format('设备连接成功.【%s ; %s】', [HidDev.ProductName, HidDev.SerialNumber]));
- mmo1.Lines.Add(Format('VID:%.4x/PID:%.4x', [HidDev.Attributes.VendorID,HidDev.Attributes.ProductID]));
- USB_VID:=HidDev.Attributes.VendorID;
- USB_PID:=HidDev.Attributes.ProductID;
- a := HidDev;
- end;
- end;
复制代码
- procedure TForm1.HIDctrl1Removal(HidDev: TJvHidDevice);
- begin
- if (HidDev.Attributes.VendorID = USB_VID) and (HidDev.Attributes.ProductID = USB_PID) then
- begin
- if (Assigned(a)) and (not a.IsPluggedIn) then
- begin
- HIDctrl1.CheckIn(a);
- end;
- a := nil;
- //DeviceEnabled;
- mmo1.Lines.Add('设备已移除');
- end;
- end;
复制代码
|