AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Wiimote to PC
Thema durchsuchen
Ansicht
Themen-Optionen

Wiimote to PC

Ein Thema von himitsu · begonnen am 11. Okt 2010 · letzter Beitrag vom 12. Nov 2010
Antwort Antwort
Benutzerbild von himitsu
himitsu
Registriert seit: 11. Okt 2003
Einige werden es bestimmt schon gehört haben.
Man kann die coolen Wii-Remote-Controler mit dem PC verbinden.

Nja, da ich auch ein paar der Teile besitze, wollte ich das auch gerne.

Nun hab ich mir dafür ein bissl was versucht zu schreiben, mit Hilfe einiger Quellen (was mir noch so bekannt ist) :
Johnny Lee und seine Wii-Remote-Hacks (einfach mal in YouTube nach "Wiimote" und Co. suchen)
http://msdn.microsoft.com/en-us/library/ff538865.aspx (HIDClass Support Routines)
http://wiibrew.org/wiki/Wiimote
http://wiibrew.org/wiki/Wii_Balance_Board
http://wiire.org/Main_Page
http://www.delphipraxis.net/125390-w...ll-delphi.html
http://www.delphipraxis.net/131808-wiimote2midi.html
DarwiinRemote
uWiimote.pas (TheUnknownOnes.net)
U_Wiimote.pas U_Wiimote_constantes.pas
WiinRemote_v2007.1.13

Es gibt auch eine wiimotelib.dll (siehe Link), aber diese ist nicht für native Win32-Anwendungen geeignet.
Auch wollte ich es gerne ohne DLL nutzen, welches ja auchmöglich ist.

Unter WinXP (bzw. alles bis Vista) braucht man einen passenden Bluetooth-Treiber.
Hierfür hat sich BlueSoleil bei vielen als brauchbar gezeigt.

Unter Windows 7 funktioniert es entweder ebenfalls über BlueSoleil
oder man verwendet einfach die windowseigenen Treiber über den Windows-Bluetooth-Stack.
Hier wird der WiiControler vom System grundsätzlich erstmal als Joystick oder Maus erkannt, wobei Windows selber aber direkt nichts mit diesem Controler anfangen kann.
Leider läuft unter Windows 7 noch nicht alles ... aber wir sind am Probieren ob/wie es dennoch geht. (Wir = noch einige andere DPler, siehe anderer Thread und ich)


Soooo, ich weiß daß mein Code noch lange nicht fertig ist und daß ich noch so Einiges ändern/einbauen muß.
Aber da es für eine zugehörige Frage ( http://www.delphipraxis.net/155143-e...-erkennen.html ) wohl besser ist den Code zu zeigen, mach ich es jetzt doch schonmal.

Aktuell lassen sich schonmal (mehr ist noch nicht getestet oder integriert) die LEDs und der Vibrator steuern.

Im Anhang sind die nötigen Units (es wird aktuell mindestens Delphi 2009 benötigt, um diese zu verwenden) und eine Test-Anwendung
  • WiiHID.pas
    die Klassen zur HID-Verwaltung (Human Interface Device)
  • WiiAPI.pas
    die grundsätzlichen Typen und Schnittstellen der Wii-Controler
  • WiiControl.pas
    Klassen zur Steuerung der/des Wii-Controler
  • Wii_Test.dpr / Wii_Test.exe
    'ne Testanwendung
  • Wii_Test__.exe
    nocheine Testanwendung - selber Code, aber HidD_GetIndexedString und HidD_GetInputReport werden nicht verwendet.
    Stattdessen wird immer versucht über ReadFile/WriteFile zu arbeiten
  • HID.dpr / HID.exe (HIDForm.pas HIDFrame.pas)
    noch'ne Testanwendung zur HID-Klasse


Ach ja, angefangen hatte es mal mit Jonny Lee (hatte glaub ich mal wer in der SB eines seiner Videos gepostet) und dann ging es über http://www.delphipraxis.net/125390-w...ll-delphi.html hin zu einer eigenen Lib, da es für Delphi leider noch nicht wirklich was "ausgereiftes" gibt (die Programme, welche man z.B. in der DP findet, haben z.B. noch zuviel Wii-Steuercode fast undokumentiert mitten in den Test/Demo-Programmen versteckt, anstatt sie ordentlich in einer Lib zu kapseln).


- Geplant ist erstmal diese Lib zum Laufen zu bekommen.
- Dann wollte ich daraus einen Service machen, über welchen man Global die Maus und Tastatur steuern kann, um z.B. einige Mediaplayer bediehnen zu können.
Auch soll es eine Schnittstelle geben, so daß ein Programm (bei mehreren bevorzugt das mit dem Eingabefous) die Kontrolle übernehmen und auch erweiterte Features nutzen könnte.
Ich möchte also die Controler Maus/Tastatur global nutzen können, ohne daß sie fest an ein Programm gebunden sind.
(derzeit nutzen alle Libs, bzw. damit erstellte Programme diese Controler ja quasi exclusiv nur für sich)
- Und eine Verbindung mit den neuen Touch-Funktionalitäten, welche Windows 7 & Delphi 2010 bieten.


Eventuell zeigt ja chaosben auch irgendwann mal was er so hat
und wir können uns etwas austauschen/helfen.
Angehängte Dateien
Dateityp: 7z WiiHID 25.10.2010.7z (540,3 KB, 81x aufgerufen)
$2B or not $2B

Geändert von himitsu (25. Okt 2010 um 18:41 Uhr)
 
Benutzerbild von Sir Rufo
Sir Rufo

 
Delphi 10 Seattle Enterprise
 
#2
  Alt 11. Okt 2010, 17:41
Zitat von himitsu:
Aktuell lassen sich schonmal (mehr ist noch nicht getestet oder integriert) die LEDs und der Vibrator steuern.
Na wenn das so ist, dann werden sich hier im Forum wohl bald wesentlich mehr Damen tümmeln
  Mit Zitat antworten Zitat
Medium

 
Delphi 2007 Enterprise
 
#3
  Alt 11. Okt 2010, 18:13
Die Damenwelt steht ja immerhin auf so Blinkenlichter gedöns!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

 
Delphi 10 Seattle Enterprise
 
#4
  Alt 11. Okt 2010, 18:17
Nun ja, diese visuelle Sache hatte ich nicht so im Kopf
  Mit Zitat antworten Zitat
aurikel_Max
 
#5
  Alt 11. Okt 2010, 21:07
Zitat von himitsu:
Aktuell lassen sich schonmal (mehr ist noch nicht getestet oder integriert) die LEDs und der Vibrator steuern.
Na wenn das so ist, dann werden sich hier im Forum wohl bald wesentlich mehr Damen tümmeln
Du Ferkel
Max
  Mit Zitat antworten Zitat
grizzly

 
Delphi XE4 Professional
 
#6
  Alt 11. Okt 2010, 22:46
EeePC, Windows 7 Starter, Belkin Bluetooth Stick, und die Wii Fernbedienung blinkt und brummt. Aber nur mit Wii_Test.exe, nicht mit Wii_Test__.exe.
Gute Arbeit

Gruß
Michael
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#7
  Alt 17. Okt 2010, 19:49
Bin zwar noch mitten im Auf-/Umräumen, aber wegen einem anderem Problemchen lad ich das Aktuelle dennoch schonmal hoch

- die WiiAPI und die HID-Klassen wurden noch etwas ausgebaut
- das Daten senden und Empfangen ist aber noch nicht fertig

Geändert von himitsu (17. Okt 2010 um 19:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#8
  Alt 23. Okt 2010, 23:39
Soo, ich hab zwar immernoch Probleme mit dem Senden/Empfangen ... vorallem leider beim Empfangen, so daß ich viele erweiterte Funktionen noch nicht testen/einbauen konnte.
Dazu gehört auch das Problemchen http://www.delphipraxis.net/155143-e...-erkennen.html .

Aber dafür scheint jetzt die Wii-API soweit zu stimmen
und die HID-Verwaltung dürfte (abgesehn vom Senden/Empfangen) auch soweit komplett zu sein.
Die HID-Test-Anwendung ist nun auch überarbeitet/hübscher.


Das Problem http://www.delphipraxis.net/155360-b...xedstring.html konnte ich leider nicht beseitigen,
aber dafür kann man diese Funktion nun einfach ausschalten, so daß dieses nicht genutzt/eingelesen wird.



Wer 'nen Wii-Controler hat, der kann ja gerne mal in der HID.exe unter In-/Output die ReportID $11 probieren.
ComboBox = $11 (17)
1. Edit = beliebiger Wert

Das steuert die "sichtbaren" Ausgänge dieses Controlers und entspricht dem WII_RID_LED aus der WiiAPI.
(dieser Report kennt nur 1 Datenbyte ... also mehr lohnt sich nicht, da rumzuprobieren )

PS: Die Cursortasten und [Strg] kann man bei diesen Edits nutzen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#9
  Alt 25. Okt 2010, 18:50
Ich komm langsam voran

siehe HIDText.exe

- unter In-/Output $12 $04 $30 einstellen und versenden

$12 Statusreport anfordern
$04 kontinuierlich
$30 angeforderter Report

der nun eingehende Report $30 enthält die Tasten der Wiimote

- über $11 $xx kann man die Ausgänge (LED+Vibrator) steuern
(die Cursortasten und Enter kann man gern nutzen)

$11 Ausgänge steuern
$xy x=$0..$F für die LEDs und y=$0 oder y=$1 für den Vibrator


Die Funktion der Datenübertragung hat sich zumindestens stark verbessert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#10
  Alt 12. Nov 2010, 17:08
So, dann will ich nur mal etwas rumfluchen.

Also, meine HID-Komponenten laufen wieder.
- der Unicode-Support läßt sich erfolgreich abschalten

- die Generics .... nja, das wird schon (falls ich nicht doch noch aufgebe)
Zitat von Shoutbox: himitsu:
für eine Abwärtskompatibilität, versuchte ich grad die generischen TList und TObjectList aus einem Code rauszubekommen ... dabei viel mir was auf "Wie konnte man früher nur ohne diese Leben?"
- Hatte ja die Eingabe auf RawInputDevices (WM_INPUT) umgestellt, anstatt selber am Eingang rumzupollen.

- Die Interfaces wurden nun etwas aufgeräumt.
(hier gab's jaein Problemchen mit diesen blöden "reference to procedure")

- Bin noch dabei eine Querverbindung zwischen HID und Bluetooth einzibauen.

- Die Verbindung zwischen HID und RawInput schein ich nun hinzubekommen.
[gemecker]
RawInput kam zwar ein, aber irgendwie wollte es sich nicht einem HIDevice zuordnen zu lassen.

Fällt einem auf, was hier alles nicht stimmt?
Eine Kleinigkeit hatte ich leider übersehn
Code:
HID:
\\?\hid#vid_057e&pid_0306#2&32f7afb6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}

RawInput:
\??\HID#VID_057e&PID_0306#2&32f7afb6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
[/gemecker]

So, dann werd' ich mal weiterbasteln, denn noch läuft ja noch nicht alles.

[add]
erweitere Version mit BT-Test
Angehängte Dateien
Dateityp: 7z HIDCtrl 12.11.2010.7z (49,7 KB, 27x aufgerufen)
Dateityp: 7z HIDCtrl 13.11.2010.7z (479,3 KB, 53x aufgerufen)

Geändert von himitsu (13. Nov 2010 um 15:55 Uhr)
  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 14:10 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