CiNcH Posted July 17, 2007 Share Posted July 17, 2007 (edited) 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 July 17, 2007 by CiNcH Quote Link to comment
CiNcH Posted July 28, 2007 Author Share Posted July 28, 2007 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... Quote Link to comment
mib Posted July 31, 2007 Share Posted July 31, 2007 (edited) 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 July 31, 2007 by mib Quote Link to comment
CiNcH Posted July 31, 2007 Author Share Posted July 31, 2007 (edited) 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 July 31, 2007 by CiNcH Quote Link to comment
Rayman Posted August 6, 2007 Share Posted August 6, 2007 (edited) 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 August 6, 2007 by Rayman Quote Link to comment
ElDiablo Posted August 13, 2007 Share Posted August 13, 2007 Das scheint ja ein nettes Tool zu sein. Ich habe Java drauf aver das Plugin Selection Fenster ist bei mir leer. Könnte mir einer sagen wo da der Fehler ist ? Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.