Jump to content

Bluetooth Remote Control


Recommended Posts

Hallo,

 

ich habe in letzter Zeit an einer Software gearbeitet, mit der man den PC mit einem Bluetooth-fähigen mobilen Gerät (Mobiltelefon, PDA oder was auch immer) steuern kann.

 

Mindestvoraussetzungen:

-> Java-fähiges Mobiltelefon (mind. MIDP 2.0/CLDC 1.1 + BT/JSR82-API Implementierung)

 

Was Mobiltelefone so können, kann auf J2ME Polish validiert werden.

 

-> Installierter Bluetooth-Dongle am PC

-> PC-seitig wird die Java Runtime Edition (>= 1.5) vorausgesetzt.

 

Im Moment liegt der PC-Anwendung der BlueCove JSR82-Implementierung bei. Dieser funktioniert nur mit dem XP SP2 Bluetooth-Treiber/Stack (zu finden unter C:\WINDOWS\inf\bth.inf). Der ID-String meines Belkin Bluetooth Dongles (BthUsb, USB\Vid_050d&Pid_0012) war im INF-File nicht eingetragen. Nachdem ich das gemacht habe, installierte sich der Treiber wunderbar.

 

 

Ablauf:

 

-> PC-Anwendung wird über die run.bat gestartet

-> Plugin muss gewählt werden

 

 

 

Die PC-Anwendung mappt eingehende Bluetooth-Kommandos auf reale Aktionen (wie Girder). Dieses Mapping wurde auf Plugins ausgelagert. Fragt mich nicht wieso ;) . Wollte nur mal eine Plugin-Architektur implementieren... 3 Plugins habe ich realisiert (Mapping auf Tastaturshortcuts, CLI und Win32 SendMessage).

Jedes Plugin verwaltet seine Kommandos selber, z.B. config_shortcut.xml im Plugin-Ordner:

 

<?xml version="1.0" encoding="UTF-8"?>
<app name="">
<cmd name="vol+" mapping="RIGHT"/>
<cmd name="vol-" mapping="LEFT"/>
<cmd name="ch+" mapping="UP"/>
<cmd name="ch-" mapping="DOWN"/>
<cmd name="ok" mapping="ENTER"/>
<cmd name="0" mapping="0"/>
<cmd name="1" mapping="1"/>
<cmd name="2" mapping="2"/>
<cmd name="3" mapping="3"/>
<cmd name="4" mapping="4"/>
<cmd name="5" mapping="5"/>
<cmd name="6" mapping="6"/>
<cmd name="7" mapping="7"/>
<cmd name="8" mapping="8"/>
<cmd name="9" mapping="9"/>
</app>

 

Bei Tastenkombinationen muss ein + dazwischen (z.B. "STRG+ALT+A").

 

-> Auf dem Mobiltelefon wird nun die J2ME-Anwendung gestartet (wie man dieses aufs Mobiltelefon bekommt müsst ihr wohl selber herausfinden, da es auf die mitgelieferte Software an kommt, mit Nokia Mobiltelefonen und dem Nokia PC Suite ist es jedenfalls sehr einfach):

 

 

 

Mit 'Establish Connection' wird eine Suche initiert. Anschließend werden alle gefundenen Bluetooth-Geräte angezeigt. Man wählt nun das aus, auf dem die PC-Anwendung läuft. Die Verbindung sollte nun stehen. Die PC-Anwendung schickt nun alle unterstützten Kommandos (werden beim Plugin angefragt) an das Mobiltelefon.

 

Es gibt 2 Wege des Controllings...

 

Control :: Display: Alle von der PC-Anwendung geschickten Aktionen werden hier angezeigt:

 

 

 

Control :: Shortcuts: Hier werden die üblichen Aktionen (ch+/ch-/vol+/vol-/ok/0..9) auf die Tastatur gelegt. Somit kann man auf dem Mobiltelefon direkt die Tasten 0..9 und das Navigationskreuz für die entsprechenden Aktionen verwenden.

 

 

Es ist auch möglich Kommandos anzulernen. Der Lernvorgang wird vom Mobiletelefon initiiert (Learn Custom Command). Daraufhin muss man am Mobiltelefon einen Namen für das Kommando eingeben (wie SMS, das macht Spaß;) ). Dann wird es auf die Reise an die PC-Anwendung geschickt, welche dann weiter an das Plugin delegiert. Je nach Plugin öffnet sich nun ein Fenster, wo man entsprechend einfüllen muss.

 

Shortcut-Plugin:

 

 

Dem Shortcut-Plugin liegt ein sehr minimales Mapping für den DVBViewer bei. Hier die Tastaturevents, die im Mapping XML-File unterstützt werden:

 

ALT
CTRL (=STRG)
ENTER
UP
DOWN
LEFT
RIGHT
A..Z
0..9
F1..F12

 

CLI-Plugin:

 

 

SendMessage-Plugin:

 

 

Dem SendMessage-Plugin liegt ein Mapping für Winamp bei.

 

Nach der Bestätigung (Commit) wird das neue Mapping in die XML-Datei geschreiben.

 

 

PC-Anwendung

J2ME-Anwendung

 

Wen das interessiert, kann das ja probieren oder verwenden. Hab das nur aus Spaß an der Freude gemacht... Bin also auch nicht böse, wenn kein Feedback kommt :) .

Edited by CiNcH
Link to comment
  • 2 weeks later...

Hab noch etwas dran gebastelt und das ganze funktioniert nun aufsetzend auf L2CAP und RFCOMM (siehe Bluetooth-Stack). Somit sollte nun so gut wie jeder Bluetooth-Dongle (bzw. Treiber) funktionieren.

 

Erfolgreich getestet mit:

 

-> WIDCOMM-Stack, der von den meisten Dongle-Treibern verwendet wird

-> Microsoft-Stack

-> Linux-Stack

 

(mit Belkin und Anycom Bluetooth-Dongles getestet)

 

Unter Windows kommt die BlueCove (>= v2.0 unterstützt nun auch WIDCOMM) und unter Linux die Avetana JSR82-Implementierung (Java Bluetooth-API) zum Einsatz.

 

Bei Interesse einfach PM an mich...

Link to comment

habe das Shortcut Plugin mit meinem Microsoft Bluetooth Tranceiver getestet -> funktioniert einwandfrei,thx

 

neue shortcuts werden bei mir am handy allerdings erst nach einem neustart des selbigen übernommen

 

Edit: hab die handy software auch schon zum absturz gebracht, aber noch nicht reproduzierbar

Edited by mib
Link to comment
neue shortcuts werden bei mir am handy allerdings erst nach einem neustart des selbigen übernommen

Das stimmt ja, wird noch nicht in der J2ME-Anwendung gespeichert und erst bei einem Neustart rüber geladen. Werde allerdings auch noch weiter daran arbeiten. Will auch noch zwischen verschiedenen Applikationen differenzieren können (z.B. Kommandos für DVBViewer und WinAmp, d.h. Auswahl, was nun bedient wird). Ein weiteres Feature, das ich unbedingt noch realisieren will ist, dass man die Tasten auf dem Keyboard des mobilen Gerätes selber belegen kann.

 

Die Lernfunktion ist sowieso nicht so sinnvoll für den PC. Man kann die Mappings direkt manuell im XML-File vornehmen, wenn man die Struktur und möglichen Werte kennt.

 

Das Anlernen ist eine Funktion, die für meine selber gebaute Hardware bzw. das Betriebssystem (Firmware, oder wie auch immer man dazu sagen will), das ich dafür geschrieben habe, interessant ist. Diese Hardware besteht aus einem Mikrokontroller (Atmel) an dessen Ports ein Bluetooth Modul sowie IR Empfänger/Sender hängen. Damit kann man die Bluetooth-Kommandos auf IR-Signale mappen und somit IR-gesteuerte Geräte mit dem Mobiltelefon bedienen. Hier kann man eben die IR-Codes anlernen, bzw. muss, da die Hardware über keine Eingabemöglichkeiten verfügt, bzw. halt nur den IR-Empfänger. Die Mappings werden im EEPROM des Atmel MC's gespeichert und eben auch beim Verbindungsaufbau an das mobile Gerät geschickt. Das Protokoll ist dasselbe wie für die PC-Anwendung, deshalb ist die J2ME-Anwendung auch 100% interoperabel.

 

 

Edit: hab die handy software auch schon zum absturz gebracht, aber noch nicht reproduzierbar

Das passiert meistens, wenn der Bluetooth-Treiber aus dem Tritt kommt. Im Betrieb hatte ich da aber selten bis nie Probleme. Wenn dann war es meistens der Verbindungsaufbau, der schief lief. Mit L2CAP hatte ich da ein besseres Verhalten, wird aber vom MS-Treiber nicht unterstützt (bzw. ist nicht über API nach außen geführt). Da braucht man dann eben WIDCOMM.

Edited by CiNcH
Link to comment

Hallo,

 

die Idee, den DVBViewer / PC mit einem Bluetooth-Handy zu steuern, EPG-Infos aufm Display zu haben etc., hatte ich vor einigen Wochen auch. Ich habe dann gesehen, dass es schon einiges an Software im Netz gibt, die genau das implementieren (für Winamp, PowerPoint, andere MediaSoftware etc. - bzw. auch lernbar für beliebige Anwendungen).

 

Grundsätzlich ist die Idee super! Aus meiner Erfahrung mit der o.g. Software ist das Bluetooth-Handling mit dem Händi (für mich) zu viel Gefummel: Bluetooth einschalten, Anwendung auswählen + starten, Bluetooth Server verbinden, durch Menüs navigieren ... Dabei will man doch einfach nur TV schauen. In dieser Hinsicht ist die klassische Fernbedienung, die direkt einsatzbereit auf'm Tisch liegt, doch unschlagbar.

 

Gruß,

Stefan.

Edited by Rayman
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...