在Delphi中怎么读取USB接口中的数据? 在线等 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 根据GUID ->CreateFile->ReadFile 关注,还有如何进行GPIB通信? unit USB;(**********************************)(* usb.pas *)(* *)(* *)(* nach USB.C von *)(* Kai-Uwe Mrkor / c't *)(* Delphi-version v. A.Stiller *)(* (C) 2002 *)(* www.heise.de/ct *)(**********************************)interface Function USBOpenDriver:boolean; Function USBCloseDriver:boolean; Function USBWritePort(Port:Word; Value:Byte):boolean; Function USBReadPort(Port:Word; Var Value:Byte):boolean;implementationuses Windows;const COMPULAB_IOCTL= 4;(* alle Funktionen liefern im Fehlerfalle FALSE, bei Erfolg einen Wert ungleich 0 *)(* Handle auf Ger鋞eTreiber *)const hgDriver:Thandle = INVALID_HANDLE_VALUE;(**********************)(* USB-Treiber 鰂fnen *)(**********************)Function USBOpenDriver:boolean;begin // Ger鋞etreiber mit passenden Dateinamen 鰂fnen hgDriver:= CreateFile('\\.\CompuLABusb_0',GENERIC_WRITE or GENERIC_READ, FILE_SHARE_WRITE or FILE_SHARE_READ, NIL, OPEN_EXISTING, 0, 0); USBOpenDriver:= hgDriver <> INVALID_HANDLE_VALUEend;(*************************)(* USB-Treiber schlie遝n *)(*************************)Function USBCloseDriver:boolean;begin USBCloseDriver := CloseHandle(hgDriver); hgDriver := INVALID_HANDLE_VALUE;end;(****************************)(* Port setzen *)(* *)(* Port: Ausgabeport (0,1) *)(* Wert: auszugebender Wert *)(****************************)Function USBWritePort(Port:Word; Value:Byte):boolean;var command, inDummy, count:longword;begin (* Befehl f黵 Treiber berechnen: *) (* 21: Port setzen *) command := (Longword(Value) shl 16) + Port * 256 + 21; inDummy := 0; (* Ausgabe *) USBWritePort := DeviceIoControl(hgDriver, COMPULAB_IOCTL, @command, sizeof(command), @inDummy, sizeof(inDummy), count, NIL);end;(****************************)(* Port auslesen *)(* *)(* Port: Einleseport (0,1) *)(* Wert: eingelesener Wert *)(****************************)Function USBReadPort(Port:Word; Var Value:Byte):boolean;var command, count:longword;var inBytes:word;begin (* Befehl f黵 den Treiber berechnen *) (* 20: Port auslesen *) command := 20 + Port*256; USBReadPort := DeviceIoControl(hgDriver, COMPULAB_IOCTL, @command, sizeof(command), @inBytes, sizeof(inBytes), count, NIL); Value:= hi(inBytes);end;end. 如果药家鑫这样说,他会无罪吗? 探讨下利用idhttp.get提交请求并返回的速度问题 quick report和query的使用? 软件快作完了,准备做共享。大家来评评,先发个demo 进销存软件的库建立??急用呀?? DBGrid??? 怎么把dbgrid中某个字段对应的数据逐条取出,然后赋给一个一维数组 Delphi 包调试 我想编一个浏览器,不止如何下手(讨论一下) 菜鸟的问题!! 有一个这样问题,该如何实现?最好能有一些代码,谢谢 求逆算法
(**********************************)
(* usb.pas *)
(* *)
(* *)
(* nach USB.C von *)
(* Kai-Uwe Mrkor / c't *)
(* Delphi-version v. A.Stiller *)
(* (C) 2002 *)
(* www.heise.de/ct *)
(**********************************)
interface
Function USBOpenDriver:boolean;
Function USBCloseDriver:boolean;
Function USBWritePort(Port:Word; Value:Byte):boolean;
Function USBReadPort(Port:Word; Var Value:Byte):boolean;implementation
uses Windows;const COMPULAB_IOCTL= 4;
(* alle Funktionen liefern im Fehlerfalle FALSE, bei Erfolg einen Wert ungleich 0 *)(* Handle auf Ger鋞eTreiber *)
const hgDriver:Thandle = INVALID_HANDLE_VALUE;
(**********************)
(* USB-Treiber 鰂fnen *)
(**********************)
Function USBOpenDriver:boolean;
begin
// Ger鋞etreiber mit passenden Dateinamen 鰂fnen
hgDriver:= CreateFile('\\.\CompuLABusb_0',GENERIC_WRITE or GENERIC_READ,
FILE_SHARE_WRITE or FILE_SHARE_READ, NIL, OPEN_EXISTING, 0, 0);
USBOpenDriver:= hgDriver <> INVALID_HANDLE_VALUE
end;(*************************)
(* USB-Treiber schlie遝n *)
(*************************)Function USBCloseDriver:boolean;
begin
USBCloseDriver := CloseHandle(hgDriver);
hgDriver := INVALID_HANDLE_VALUE;
end;(****************************)
(* Port setzen *)
(* *)
(* Port: Ausgabeport (0,1) *)
(* Wert: auszugebender Wert *)
(****************************)Function USBWritePort(Port:Word; Value:Byte):boolean;var command, inDummy, count:longword;begin
(* Befehl f黵 Treiber berechnen: *)
(* 21: Port setzen *)
command := (Longword(Value) shl 16) + Port * 256 + 21;
inDummy := 0; (* Ausgabe *)
USBWritePort := DeviceIoControl(hgDriver,
COMPULAB_IOCTL,
@command,
sizeof(command),
@inDummy,
sizeof(inDummy),
count,
NIL);end;
(****************************)
(* Port auslesen *)
(* *)
(* Port: Einleseport (0,1) *)
(* Wert: eingelesener Wert *)
(****************************)
Function USBReadPort(Port:Word; Var Value:Byte):boolean;
var command, count:longword;
var inBytes:word;
begin
(* Befehl f黵 den Treiber berechnen *)
(* 20: Port auslesen *)
command := 20 + Port*256; USBReadPort := DeviceIoControl(hgDriver,
COMPULAB_IOCTL,
@command,
sizeof(command),
@inBytes,
sizeof(inBytes),
count,
NIL);
Value:= hi(inBytes);end;end.