![]() |
Mit Delphi 6.0 auf USB zugreifen
[df][dp]
Hi, ich habe einen Digital-Multimeter mit Usb.Ich möchte die Werte vom Gerät lesen. So habe ich versucht wert:= Rdport(0) und Rdport(1):
Delphi-Quellcode:
Es funktioniert nicht. kann mir jemand ein Tip geben.function RdPort(PortNr: Byte): Byte; var lIn: _lIn; lOut: _lOut; DeviceHandle: THandle; TemplateHandle: THandle; nBytes: DWord; bresult: Boolean; begin lIn.bFunction := 20; lIn.bValue1 := PortNr; DeviceHandle := CreateFile ('\\.\CompuLABusb_0',Generic_write,File_Share_write,nil,open_existing,0,TemplateHandle); bResult := DeviceIoControl(DeviceHandle,$04,@lIn,sizeof(lIn),@lOut,sizeof (lOut),nBytes,nil); CloseHandle (DeviceHandle); Result := lOut.bValue1; end; MFG Niek [edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit] |
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Freeware" nach "Sonstige Fragen zu Delphi" verschoben.
Die Sparte "Freeware" ist zum vorstellen von eigenen Programmen ;-) |
Re: Mit Delphi 6.0 auf USB zugreifen
hi niek,
herzlich willkommen in der dp, suche mal nach der HID komponente auf den seiten von mike lischke. raik und delphi tags setzen- sharky war schneller :mrgreen: |
Re: Mit Delphi 6.0 auf USB zugreifen
Kann sein das meine HID Komponente nicht hilft.
'\\.\CompuLABusb_0' sieht mehr nach einem vom Treiber exportierten Namen zum Zugriff aus. Du bist auf dem richtigen Weg mit deinem Code. Ich glaube eher das du die Parameter von Createfile ueberreizt. Versuch es mal ohne TemplateHandle und oeffne zum lesen und schreiben. Sollte das DeviceIoControl fehlschlagen, so musst du ein bischen mehr Info geben. Das kann ich sonst nicht beurteilen ob es gut ist. |
Re: Mit Delphi 6.0 auf USB zugreifen
Wie Robert schon bemerkt hat, wird der Aufruf von CreateFile nicht funktionieren (wird bei Dir auch nicht überprüft)
Delphi-Quellcode:
function RdPort(PortNr: Byte; out Value: Byte): Boolean;
var InBuffer: _lIn; // TInBuffer? OutBuffer: _lOut; // TOutBuffer? DeviceHandle: THandle; BytesReturned: DWORD; begin Result := False; DeviceHandle := CreateFile('\\.\CompuLABusb_0', 0, // bzw. GENERIC_READ/WRITE FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); if (DeviceHandle <> INVALID_HANDLE_VALUE) then try InBuffer.bFunction := 20; InBuffer.bValue1 := PortNr; if DeviceIoControl(DeviceHandle, $04, @InBuffer, SizeOf(InBuffer), @OutBuffer, SizeOf(OutBuffer), BytesReturned, nil) then begin Value := OutBuffer.bValue1; Result := True; end; finally CloseHandle (DeviceHandle); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz