AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

WiimoteLib.dll in Delphi

Ein Thema von napsterxx · begonnen am 5. Dez 2008 · letzter Beitrag vom 11. Okt 2010
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.939 Beiträge
 
Delphi 12 Athens
 
#21

AW: WiimoteLib.dll in Delphi

  Alt 1. Okt 2010, 20:00
In Win7 konnte ich die Wiimote auch leicht verbinden (ohne BlueSoleil), aber keines der Anwendungen (gegal ob .net, c++ oder Delphi und egal ob via HID oder über sonstwie) hat diese Controler nutzen können.

Fast alle Anwendungen erkannten zwar den Controler, aber sie reragierten auf keinerlei Befehle.

Bisher hat also nur BlueSoleil funktioniert.
Wobei mir dieses auch in Win7 einmal einen Bluescreen verursachte.

Ich hab auch gesehn, daß jemand über die neue Windows 7 Windows Sensor and Location Platform einen unabhängigen Treiber erstellt hatte, allerdings hat dieser nur die G-Sensoren darüber angeschlossen, so daß es noch keine Lösung ist.
(hatte leider den Link nicht gespeichert und dann kam der blaue Bildshirm)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#22

AW: WiimoteLib.dll in Delphi

  Alt 2. Okt 2010, 08:06
Inzwischen bin ich so weit, das ich mit dem MS-Stack der Wiimote etwas senden kann. Nur leider klappt das Empfangen noch nicht.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.939 Beiträge
 
Delphi 12 Athens
 
#23

AW: WiimoteLib.dll in Delphi

  Alt 2. Okt 2010, 08:22
Was ich auch schade finde.
Überall wird vorwigend auf WiiLi.org verwiesen, welches allerdings down ist.

[edit] OK, dann isses wohl nicht so schlimm http://wiibrew.org/wiki/WiiLi/de
aber dennoch blöde, daß man, wenn man was via Google und Co. findet, daß man dann Links und vorallem Downlodlinks vorfindet, welche nicht mehr funktionieren.


hier noch der Link zum Treiber ... vielleicht kann damit wer was anfangen
http://www.codeproject.com/KB/system/wiisensor.aspx

PS: WiiLi = Wii+Linux ... aber wer braucht schon Linux, wenn man Windows hat
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 2. Okt 2010 um 08:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.939 Beiträge
 
Delphi 12 Athens
 
#24

AW: WiimoteLib.dll in Delphi

  Alt 11. Okt 2010, 13:19
So, ich muß (möchte) noch die WiiControl.pas aufräumen, bevor ich diese mal zeige.
Darin 'ne eigene kleine Klasse, welche die HID-Geräte verwaltet, ähnlich dem TJvHidDeviceController. (nur daß ich ohne die JEDI arbeite )
Etwas, welches die Grundklasse der HID-Geräte darstellt und die ersten Teile des Wii-Controlers und einiger Extender (Nunchuk und Co.),


Im Anhang 'ne Test-Anwendung mit nachfolgendem Code.
Diese macht das, was sich schon ansteuern läßt ... LEDs und der Vibrator.

Funktioniert unter WinXP + BlueSoleil, sowie nativ unter Win7 x86 (ohne BlueSoleil).

Vielleicht kann's ja schonmal wer ausprobieren, also ob der Teil auch wirklich schon richtig funktioniert.
> die LEDs sollten blinken und der Vibrator sollte an und aus gehn.
Delphi-Quellcode:
Program WiiControlP;

Uses Windows, SysUtils, Forms, Generics.Collections, WiiControl;

Procedure OnRecive(Sender: THIDDevice; Const Data; Len: Integer);
  Var S: String;
    i: Integer;

  Begin
    WriteLn('OnRecive');
    WriteLn(' Instance ', Sender.DeviceInfo.Instance);
    S := ' Data';
    For i := 0 to Len - 1 do Begin
      If i mod 20 = 0 Then Begin
        WriteLn(S);
        S := ' ';
      End Else If i mod 5 = 0 Then
        S := S + ' ';
      S := Format('%s %.2x', [S, PByte(@Data)[i]]);
    End;
    WriteLn(S);
    WriteLn;
  End;

Procedure OnError(Sender: TWiiRemoteController; ReportID, ErrorCode: Byte);
  Begin
    WriteLn('OnReceptError');
    WriteLn(' Instance ', Sender.DeviceInfo.Instance);
    WriteLn(' ReportID ', Format('$%.2x', [ReportID]));
    WriteLn(' ErrorCode ', ErrorCode);
    WriteLn;
  End;

Procedure DeviceChange(Controler: THIDControler);
  Begin
    WriteLn('DeviceChange');
    WriteLn;
  End;

Procedure DeviceArrival(Controler: THIDControler; Const DeviceInfo: THIDDeviceInfo);
  Var Device: THIDDevice;

  Begin
    WriteLn('DeviceArrival');
    WriteLn(' ClassGUID ', GUIDToString(DeviceInfo.ClassGUID));
    WriteLn(' Instance ', DeviceInfo.Instance);
    WriteLn(' Path ', DeviceInfo.Path);
    WriteLn(' Description ', DeviceInfo.Description);
    WriteLn(' PhysicalDeviceObject ', DeviceInfo.PhysicalDeviceObject);
    If Controler.CompareByID(DeviceInfo, WIIMOTE_VENDOR_ID, WIIMOTE_PRODUCT_ID) Then Begin
      Device := Controler.Arrival(DeviceInfo, TWiiRemoteController);
      Device.OnRecive := OnRecive;
      TWiiRemoteController(Device).OnReceptError := OnError;

      WriteLn(' Arrivaled');
      WriteLn(' VendorID ', Format('$%.4x', [Device.VendorID]));
      WriteLn(' ProductID ', Format('$%.4x', [Device.ProductID]));
      WriteLn(' ProductStr ', Device.ProductStr);
      WriteLn(' Version ', Device.Version);
      WriteLn(' Manufacturer ', Device.Manufacturer);
      WriteLn(' SerialNumber ', Device.SerialNumber);
      WriteLn(' Identifier ', Device.Identifier);
    End;
    WriteLn;
  End;

Procedure DeviceRemoval(Controler: THIDControler; Const DeviceInfo: THIDDeviceInfo; DeviceObject: THIDDevice);
  Begin
    WriteLn('DeviceRemoval');
    WriteLn(' ClassGUID ', GUIDToString(DeviceInfo.ClassGUID));
    WriteLn(' Instance ', DeviceInfo.Instance);
    WriteLn(' Path ', DeviceInfo.Path);
    WriteLn(' Description ', DeviceInfo.Description);
    WriteLn(' PhysicalDeviceObject ', DeviceInfo.PhysicalDeviceObject);
    If Assigned(DeviceObject) Then Begin
      WriteLn(' Arrivaled');
      WriteLn(' SerialNumber ', DeviceObject.SerialNumber);
      WriteLn(' Identifier ', DeviceObject.Identifier);
      DeviceObject.Free;
    End;
    WriteLn;
  End;

Var HIDControler: THIDControler;
  Report: TWiiReport;

Begin
  Try
    AllocConsole;
    Application.Initialize;
    HIDControler := GlobalHIDControler;
    HIDControler.RegisterDeviceChangeProc(DeviceChange);
    HIDControler.RegisterDeviceArrivalProc(DeviceArrival);
    HIDControler.RegisterDeviceRemovalProc(DeviceRemoval);
    Repeat
      Application.ProcessMessages;
      Sleep(10);
      TWiiRemoteController(HIDControler.ArrivaledDevice[0]).LEDs := [blRumble, blLED2];
      Sleep(200);
      TWiiRemoteController(HIDControler.ArrivaledDevice[0]).LEDs := [blLED1, blLED4];
      Sleep(1000);
      Report.Clear;
      Report.ReportID := WII_RID_MODE;
      Report.Continuous := True;
      Report.RequestReportID := WII_RECEPT_STATUS;
      HIDControler.ArrivaledDevice[0].Send(Report, WIIMOTE_BT_REPORT_LEN);
    Until Application.Terminated;
    While HIDControler.ArrivaledDeviceCount > 0 do
      HIDControler.ArrivaledDevice[0].Free;
    HIDControler.UnregisterDeviceChangeProc(DeviceChange);
    HIDControler.UnregisterDeviceArrivalProc(DeviceArrival);
    HIDControler.UnregisterDeviceRemovalProc(DeviceRemoval);
  Except
    On E: Exception do WriteLn(E.ClassName, ': ', E.Message);
  End;
End.
[add]
hab das Ganze mal als eigenständiges Projekt reingestellt
http://www.delphipraxis.net/155160-wiimote-pc.html
Angehängte Dateien
Dateityp: 7z WiiControlP.7z (297,8 KB, 29x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Okt 2010 um 16:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 05:03 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