AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi HID - PS2-Buzzer an PC anschließen
Thema durchsuchen
Ansicht
Themen-Optionen

HID - PS2-Buzzer an PC anschließen

Ein Thema von magicsnail · begonnen am 9. Mai 2007 · letzter Beitrag vom 23. Mai 2007
Antwort Antwort
magicsnail

Registriert seit: 9. Mai 2007
Ort: Bremen
17 Beiträge
 
Delphi 7 Professional
 
#1

HID - PS2-Buzzer an PC anschließen

  Alt 9. Mai 2007, 14:03
Moin!
Ich habe Buzzer der Playstation 2 an meinem PC angeschlossen
um damit ein kleines Musikquiz-Programm zu unterstützen.
Das funktioniert soweit auch super, insbesondere dank der
HID-Komponente von Robert Marquardt.

Nun haben die Buzzer aber auch die Möglichkeit zu leuchten.
Und ich bekomme nicht heraus, was ich an die Dinger senden
muss, damit das Licht der verschiedenen Buzzer an bzw. aus
geht. Ich hab schon mit einer Schleife jeden Wert zwischen
$00 und $FF rüber gejagt, aber es herrscht das Schweigen im
Walde. Wie man in so ein HID-Device schreibt hab ich aus
einem anderen Thema ebenfalls von Rober Marquardt abgekupfert:
Delphi-Quellcode:
      for ch := $00 to $FF do
      begin
        FillChar(Report, SizeOf(Report), 0);
        // das ist ziemlich aufwaendig dafuer das wir nur eine Usage im Report setzen wollen
        Report.ReportID := 0;
        // wir wollen in einen Output-Report schreiben
        Buzzer.ReportTypeParam := HidP_Output;
        // das benennt die spezifische Usage die gesetzt werden soll
        Buzzer.UsagePageParam := HID_USAGE_PAGE_CONSUMER;
        Buzzer.LinkCollectionParam := $01; // CollectionType=Application
        Buzzer.UsageParam := HID_USAGE_CONSUMER_CONSUMER_CONTROL;
        // den Wert setzen (LED Maximum)
        Buzzer.SetUsageValue(ch, Report, Buzzer.Caps.OutputReportByteLength);
        // ab damit ans Geraet
        Buzzer.WriteFile(Report, Buzzer.Caps.OutputReportByteLength, Written);
        ShowMessage('Gesendet: '+IntToStr(ord(ch)));
      end;
Kann mir jemand helfen, damit mir ein Licht aufgeht?

[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]
"Ich hab nix gemacht!"
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: HID - PS2-Buzzer an PC anschließen

  Alt 9. Mai 2007, 14:14
Schick mir doch mal direkt (robert_marquardt at gmx dot de) den Output der Programme UsagesDemo und CollectionDemo fuer dieses Geraet.
Das sind Demos die bei der standalone HID-Komponente dabei sind (http://www.soft-gems.net/). Die JVCL hat die Beispiele nicht dabei.
  Mit Zitat antworten Zitat
magicsnail

Registriert seit: 9. Mai 2007
Ort: Bremen
17 Beiträge
 
Delphi 7 Professional
 
#3

Re: HID - PS2-Buzzer an PC anschließen

  Alt 11. Mai 2007, 12:54
Hier der Output von UsagesDemo:

Delphi-Quellcode:
"Logitech" "Logitech Buzz(tm) Controller V1" VID=$054C PID=$0002
Input Report Size=5
Output Report Size=7
Feature Report Size=0

Button Input
============

0)
UsagePage: Button ($0009)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 1
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: True
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
UsageMin: 1 UsageMax: 20
StringMin: 0 StringMax: 0
DesignatorMin: 0 DesignatorMax: 0
DataIndexMin: 2 DataIndexMax: 21

1)
UsagePage: FF00 ($FF00)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 1
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
Usage: 1 ($0001)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 22

Value Input
===========

0)
UsagePage: Generic Desktop ($0001)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 1
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
HasNull: False
BitSize: 8
ReportCount: 1
UnitsExp: 0
Units: 0
LogicalMin: 0
LogicalMax: 255
PhysicalMin: 0
PhysicalMax: 255
Usage: Y Axis ($0031)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 0

1)
UsagePage: Generic Desktop ($0001)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 1
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
HasNull: False
BitSize: 8
ReportCount: 1
UnitsExp: 0
Units: 0
LogicalMin: 0
LogicalMax: 255
PhysicalMin: 0
PhysicalMax: 255
Usage: X Axis ($0030)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 1

Value Output
============

0)
UsagePage: FF00 ($FF00)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 2
LinkUsage: 0 ($0000)
LinkUsagePage: FF00 ($FF00)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
HasNull: False
BitSize: 8
ReportCount: 7
UnitsExp: 0
Units: 0
LogicalMin: 0
LogicalMax: 255
PhysicalMin: 0
PhysicalMax: 255
Usage: 2 ($0002)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 0
****************************************

Und hier CollectionDemo

Delphi-Quellcode:
HID-Devices
   "Logitech Buzz(tm) Controller V1" VID=$054C PID=$0002
      UsagePage=Generic Desktop ($0001) Usage=Joystick ($0004) CollectionType=Application ($01)
         UsagePage=FF00 ($FF00) Usage=0 ($0000) CollectionType=Logical ($02)
            Value Output: UsagePage=FF00 ($FF00) Usage=2 ($0002)
         UsagePage=Generic Desktop ($0001) Usage=Undefined ($0000) CollectionType=Logical ($02)
            Button Input Range: UsagePage=Button ($0009) 1..20
            Button Input: UsagePage=FF00 ($FF00) Usage=1 ($0001)
            Value Input: UsagePage=Generic Desktop ($0001) Usage=Y Axis ($0031)
            Value Input: UsagePage=Generic Desktop ($0001) Usage=X Axis ($0030)
"Ich hab nix gemacht!"
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: HID - PS2-Buzzer an PC anschließen

  Alt 11. Mai 2007, 13:23
Mach mal code Tags um die Ausgabe von CollectionDemo, damit die Einrueckung erhalten bleibt.
Taucht das Ding auch bei den Joysticks auf (siehe zugehoeriges Joystick Control Panel)?

Der Value Output ist der interessante Teil. leider deklariert er einfach ein array von 7 Bytes die man schreiben kann, nicht was darin enthalten sein muss. Der Input-Teil beschreibt einen einfachen Joystick mit 20 Buttons.

Schreibe 8 Bytes mit WriteFile. Das erste Byte muss 0 sein. Die anderen musst du ausprobieren. Mit 0 anfangen und dann nacheinander $FF in die restlichen Bytes duerfte der sinnvollste Ansatz sein.
  Mit Zitat antworten Zitat
magicsnail

Registriert seit: 9. Mai 2007
Ort: Bremen
17 Beiträge
 
Delphi 7 Professional
 
#5

Re: HID - PS2-Buzzer an PC anschließen

  Alt 11. Mai 2007, 13:39
Ich finde leider kein zugehoeriges Joystick Control Panel...

7 Bytes also, die ich dann also tatsächlich systematisch durchprobieren müsste in einer Schleife ähnlich der obigen?
Gibt es da generelle Ausschlußkriterien? Eigentlich braucht das Teil ja nur 8 Befehle: Ein/Aus für 4 verschiedene Lampen...
"Ich hab nix gemacht!"
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#6

Re: HID - PS2-Buzzer an PC anschließen

  Alt 11. Mai 2007, 13:46
Probier doch mal SimpleHIDWrite aus. Da kann man die Bytes per Hand eingeben. Die ReportID muss 00 sein.
Da es 7 Bytes sind, vermute ich das man da noch ein paar andere Sachen einstellen kann. Du wirst ja sehen wann die Lampen angehen.
Probier nach jedem Schreiben mal die Buttons und die Achsen aus. Vielleicht kann man dann sehen ob es noch andere Einstellungen gibt. Irgendwie sollte sich das Verhalten dann aendern.

Ich meinte das normale GameController Control Panel von Windows.
  Mit Zitat antworten Zitat
magicsnail

Registriert seit: 9. Mai 2007
Ort: Bremen
17 Beiträge
 
Delphi 7 Professional
 
#7

Re: HID - PS2-Buzzer an PC anschließen

  Alt 11. Mai 2007, 13:59
Aaaah!

Die Erleuchtung! Im wahrsten Sinne des Wortes.

Es stimmt. Jeweils FF im zweiten bis fünften Kästchen bringt's zum Leuchten,
die 00 schaltet es wieder aus. Super! Und nochmals vielen Dank!
"Ich hab nix gemacht!"
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#8

Re: HID - PS2-Buzzer an PC anschließen

  Alt 11. Mai 2007, 14:03
Na dann probier noch andere Werte aus, vielleicht kann man ja die Helligkeit steuern.
  Mit Zitat antworten Zitat
magicsnail

Registriert seit: 9. Mai 2007
Ort: Bremen
17 Beiträge
 
Delphi 7 Professional
 
#9

Re: HID - PS2-Buzzer an PC anschließen

  Alt 23. Mai 2007, 09:42
So, ich hab's jetzt soweit eingebaut und fertig.
Wen es interessiert: kostenloser Download vom Musikquiz gibt es hier: Musikquiz-Download
"Ich hab nix gemacht!"
  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 12:30 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