AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi HID USB Gerät (am Bsp. von ELV-SI1) - keine Datenübertragung
Thema durchsuchen
Ansicht
Themen-Optionen

HID USB Gerät (am Bsp. von ELV-SI1) - keine Datenübertragung

Ein Thema von moelski · begonnen am 7. Jun 2009
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

HID USB Gerät (am Bsp. von ELV-SI1) - keine Datenübertragung

  Alt 7. Jun 2009, 12:16
Moin !

Ich versuche gerade auf ein USB HID Device zuzugreifen. Es geht um dieses Gerät:
http://www.elv.de/USB-Schaltinterfac.../detail2_24914

Und die Protokoll Beschreibung findet man hier:
http://www.elv-downloads.de/service/...tenrahmens.pdf

Nun nutze ich folgenden Code:
Delphi-Quellcode:
type _lIn = record
    bFunction : Byte;
    bValue1 : Byte;
    bValue2 : Byte;
    bValue3 : Byte;
    bValue4 : Byte;
end;

type _lOut = record
    bAck : Byte;
    bValue1 : Byte;
    bValue2 : Byte;
    bValue3 : Byte;
    bValue4 : Byte;
end;

procedure TForm1.TalkUSB;
var lIn : _lIn;
    lOut : _lOut;
    DeviceHandle : THandle;
    TemplateHandle : THandle;
    nBytes : DWord;
    bresult : Boolean;
begin // USB\Vid_1b1f&Pid_c00a&Rev_0000
  DeviceHandle := CreateFile ('\\?\hid#vid_1b1f&pid_c00a#6&4c197d7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}',
                              Generic_write,
                              File_Share_write,
                              nil,
                              open_existing,
                              0,
                              0);
  if DeviceHandle = INVALID_HANDLE_VALUE then Beep;

  Memo1.Lines.Add('Handle : ' + IntToStr(DeviceHandle) + ' ' + IntToHex(DeviceHandle, 8));
  Memo1.Lines.Add('LastError : ' + IntToStr(GetLastError));

  lIn.bFunction := 01;
  bResult := DeviceIoControl(DeviceHandle,
                             $04,
                             @lIn,
                             sizeof(lIn),
                             @lOut,
                             sizeof (lOut),
                             nBytes,
                             nil);
  Memo1.Lines.Add(BoolToStr(bResult, True));
  Memo1.Lines.Add('LastError : ' + IntToStr(GetLastError));

  CloseHandle (DeviceHandle);
end;
Ich sags gleich ... Der Code funzt so noch nicht 100%, dessen bin ich mir bewusst. Ich hoffe das mir hier jemand ein bissel helfen kann um mit dem Gerät zu "sprechen".

Also, das Devicehandle bekomme ich. Sprich CreateFile funktioniert.
Wenn ich aber danach den LastError auswerte dann bekomme ich 5. Wenn ich diese Liste zugrunde lege:
http://msdn.microsoft.com/en-us/library/ms681382(VS.85).aspx

...ann bedeutet das:
Zitat:
ERROR_ACCESS_DENIED - 5 (0x5) Access is denied.
Es greift aber keine andere Anwendung derzeit auf das Gerät zu.

Ok weiter zu DeviceIoControl ...
Ich weiss das meine Records noch nicht wirklich zu dem passen was das Gerät an Input erwartet bzw. an Output liefert.
Dazu hätte ich dann 2 Fragen ...
1) Wenn ich die Struktur so verwende wie in dem Beispiel oben, müsste dann nicht zumindest eine Kommunikation in Richtung USB Gerät erfolgen? Ich habe hier einen USB Analyser am laufen um mir das Geschehen auf der Leitung anzusehen. Aber es passiert rein gonix. Ich würds ja verstehen wenn ich keinen Response bekomme, aber müsste nicht wenigstens was zum Gerät geschickt werden?
2) Kann mir jemand ein Beispiel zeigen wie ich (aufgrund des vorliegenden Protokolls) meine IN / OUT Records definieren und mit Werten befüllen muss? Mir ist z.B. noch nicht klar ob die Report ID eine Art Sonderrolle darstellt, oder ob man das einfach in dem Record als erstes Byte mit angibt.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz