Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Neues Programm für NB-5100p (https://www.delphipraxis.net/96783-neues-programm-fuer-nb-5100p.html)

ebber 30. Jul 2007 23:26


Neues Programm für NB-5100p
 
Hallo

ich habe diese Fernbedienung von Trust
http://www.trust.com/products/defaul...OTE&item=14272
dazu das Programm mit der Beschreibung : Windows XP - 1.0 - application no driver needed

Das Programm oder der Treiber besteht nur aus einer .exe.
Das ist aber sehr schlecht. Man kann eigentlich nur Tasten auf die Fernbedienungsknöpfe legen.

Wäre es nun eifach sich da ein neues Programm zu machen ? Also in die Richtung den IR Receiver zu finden und Daten von ihm zu bekommen ? Oder ist das ehr höhere Programmiererei ?
Wie würde das ungefähr gehen ?

MfG

Robert Marquardt 31. Jul 2007 05:09

Re: Neues Programm für NB-5100p
 
Das duerfte ein USB-Geraet aus der Unterklasse der HID-Geraete sein. Besorg dir mal die HID-Komponente von http://www.soft-gems.net/supplement/download.php?ID=37
Falls du schon die JVCL hast, dann nicht installieren, da die Komponente schon bei der JVCL dabei ist. Die Beispielprogamme, die beim Soft-Gems-Download dabei sind, uebersetzen (per Batch-Datei).
Den Output von CollectionDemo und UsagesDemo an mich schicken oder hier posten. Danach kann ich sagen was genau die Fernbedienung kann.

Mit der HID-Komponwente kann man dann ein Programm schreiben das die Fernbedienung auslesen kann. Welche Aktionen man dann implementiert ist dann dem Programmierer ueberlassen. Tastendruecke zu generieren ist allerdings schwerer als es aussieht. Was eine Tastatur ist, ist historisch gewachsen und ziemlich verwinkelt.

ebber 31. Jul 2007 10:38

Re: Neues Programm für NB-5100p
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo

also liegt das im Bereich des machbaren für einen unwissenden programmierer ?

Hier das 1.

Delphi-Quellcode:

"Formosa21" "IR507 USB IR Receiver" VID=$147A PID=$E019
Input Report Size=4
Output Report Size=0
Feature Report Size=0

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

0)
UsagePage:        Consumer ($000C)
ReportID:         0
IsAlias:          False
BitField:         6
LinkCollection:   0
LinkUsage:        Consumer Control ($0001)
LinkUsagePage:    Consumer ($000C)
IsRange:          False
IsStringRange:    False
IsDesignatorRange: False
IsAbsolute:       False
HasNull:          False
BitSize:          8
ReportCount:      4
UnitsExp:         0
Units:            0
LogicalMin:       0
LogicalMax:       255
PhysicalMin:      0
PhysicalMax:      0
Usage:            Consumer Control ($0001)
StringIndex:      0
DesignatorIndex:  0
DataIndex:        0
Ich hoffe das ist das richtige.
Das andere habe ich angehängt.

Ich will weniger Tastendrücke simulieren (habe ich aber scho ein wenig gemacht). Mehr so SendMessage an Winamp.

MfG

Robert Marquardt 31. Jul 2007 13:53

Re: Neues Programm für NB-5100p
 
Genau richtig.
Du hast da aber einen netten Haufen Hardware :-) Seh ich das richtig? Zwei Tastaturen davon eine ein einfaches Billigbrett und die andere eine kabellose Multimediatastatur mit allem Schnickschnack den es gibt? Dazu einen "SideWinder Force Feedback 2 Joystick". Nette Ausruestung.

Der IR-Receiver ist besonders einfach gestrickt. Man kann nur Daten von ihm lesen (Output Report Size=0 und Feature Report Size=0). Die Daten sind als 4 Bytes deklariert (BitSize: 8 x ReportCount: 4). Leider gibt es daher keine Information was die Daten denn genau bedeuten. Im Gegensatz dazu sieh wie ausfuehrlich der FF Joystick seine Daten beschreibt.
Setz mal SimpleHIDWrite auf die Fernbedienung an und drueck die Buttons. Bei Fernbedienungen ist es ungewohnlich wenn zwei oder mehr Tastendruecke gleichzeitig behandelt werden, aber ausprobieren schadet nicht. Poste die Daten hier. Such mal im Internet nach dem RC5-Format, denn es ist zu erwarten das die Prinzipien dieses Formats auftauchen.

ebber 31. Jul 2007 14:08

Re: Neues Programm für NB-5100p
 
Hallo

ich habe mal jede Taste gedrückt. Wenn man 2 drückt passiert nichts oder es wird nur eine davon erkannt.

Delphi-Quellcode:

RD 00  00 F7 00 FF
RD 00  00 F7 01 FE
RD 00  00 F7 02 FD
RD 00  00 F7 03 FC
RD 00  00 F7 04 FB
RD 00  00 F7 05 FA
RD 00  00 F7 06 F9 
RD 00  00 F7 07 F8 
RD 00  00 F7 08 F7 
RD 00  00 F7 09 F6 
RD 00  00 F7 0A F5 
RD 00  00 F7 0B F4 
RD 00  00 F7 0C F3 
RD 00  00 F7 0D F2
MfG

Robert Marquardt 31. Jul 2007 14:35

Re: Neues Programm für NB-5100p
 
Das fuenfte Byte am Anfang nennt sich ReportID und kann hier ignoriert werden, da es fuer dieses Geraet immer 0 ist.
Na da kann man direkt sehen das die ersten beiden Bytes recht unwichtig sind. Schwer zu sagen was sie bedeuten, da sie sich nicht aendern. Bietet da das Originalprogramm irgendwelche Infos an? Batteriestand, Empfangsqualitaet oder sonst irgendwas was angezeigt wird?
Die beiden anderen Bytes sind natuerlich leicht zu dekodieren. Eine Tastennummer und $FF - Tastennummer.

Mit diesen Infos kann ich dir schnell ein Skelettprogramm schnitzen. Heute aber nicht mehr.

ebber 31. Jul 2007 15:01

Re: Neues Programm für NB-5100p
 
Hallo

das Programm kann überhaupt nix außer den Tasten auf der Fernbedienung Tasten vom PC zuzuweisen. Und das Funktionier komischerweise auch nicht immer richig.
Wenn du mir so ein kleines Skelettprogramm schnitzen könntest wäre ich dir sehr dankbar. Es muss eigentlich nur die Fernbedienung auswählen und mir die Tasten herausgeben, den Rest würde ich alleine schaffen.

MfG

Robert Marquardt 31. Jul 2007 15:20

Re: Neues Programm für NB-5100p
 
Genau an so ein Skelettprogramm dachte ich. Es ist keine Auswahl noetig. Das Geraet laesst sich ueber VID und PID eindeutig erkennen und man verwendet einfach das erste gefundene Geraet. Es ist doch unwahrscheinlich das mehr als eine Fernbedienung verwendet wird.
Besorg dir mal eine Komponente um ein Trayprogramm zu erstellen. Ich bevorzuge CoolTrayIcon. Das Programm sollte im Tray residieren, denn es darf ja nicht den Fokus haben wenn es Tasten simuliert.

Robert Marquardt 3. Aug 2007 07:20

Re: Neues Programm für NB-5100p
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ein sehr simples Programm, aber es sollte die Daten empfangen und anzeigen. Die Geraeteseite sollte damit erschlagen sein. Der Anhang ist das komplette D6 Projekt.
Delphi-Quellcode:
unit NB5100PMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, JvHidControllerClass, StdCtrls;

type
  TForm1 = class(TForm)
    HidCtl: TJvHidDeviceController;
    Label1: TLabel;
    ListBox1: TListBox;
    procedure HidCtlDeviceChange(Sender: TObject);
    procedure HidCtlDeviceData(HidDev: TJvHidDevice; ReportID: Byte;
      const Data: Pointer; Size: Word);
  public
    Dev: TJvHidDevice;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.HidCtlDeviceChange(Sender: TObject);
begin
  // pruefen ob das bereits benutzte Geraet ausgesteckt wurde
  if Assigned(Dev) and not Dev.IsPluggedIn then
  begin
    // das Geraet zurueckgeben
    HidCtl.CheckIn(Dev);
    Label1.Caption := 'No device';
  end;
  // noch kein Geraet in Benutzung
  if not Assigned(Dev) then
    // pruefen ob die Fernbedienung angesteckt wurde, wenn ja in Benutzung nehmen
    if HidCtl.CheckOutByID(Dev, $147A, $E019) then
    begin
      Label1.Caption := 'Device connected';
      Listbox1.Items.Clear;
    end;
end;

procedure TForm1.HidCtlDeviceData(HidDev: TJvHidDevice; ReportID: Byte;
  const Data: Pointer; Size: Word);
var
  I: Word;
  P: PChar;
  S: string;
begin
  P := Data;
  S := '';
  for I := 0 to Size - 1 do
    S := S + Format('%.2x ', [Cardinal(P[I])]);
  ListBox1.Items.Add(S);
end;

end.
Doof bleibt doof. Copy & Paste Error beseitigt.

ebber 3. Aug 2007 11:07

Re: Neues Programm für NB-5100p
 
Hallo

Danke.
Genau sowas habe ich gesucht und es funktioniert Perfekt. Danke. :thumb:

MfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 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