Forum: Mikrocontroller und Digitale Elektronik Serielle Verbindung und Tastenkombinationen


von Sven (Gast)


Lesenswert?

Hallo,

zu meinem baldigen Projekt muss noch eine Frage geklärt werden.
Projekt:
Über einen Mikrocontroller der seriell mit dem PC verbunden ist, soll 
zum beispiel der winamp gesteuert werden.
Wenn ich beim Winamp die Tastenkombination (z.b. Strg+Alt+N für 
"nächster Track") aktiviere, kann ich dann auf dem Mikrocontroller 
irgendwie die Tastenkombination senden, das Winamp das dann mitbekommt 
und auch reagiert?

Board: myAvr mit dem Atmega8
Verbindung: Über BTM-222 der eine serielle Schnittstelle über Com-Port 
vorgaukelt.

Hoffe ich hab mich verständlich ausgedrückt :)

Gruß

Sven

von Axel J. (axeljaeger)


Lesenswert?

Ich rate mal ins blaue, dass nicht ganz so einfach wird, da ja über die 
serielle Schnittstelle normalerweise keine Tastaturen angeschlossen 
werden und das Betriebssystem deshalb vermutlich das, was dort ankommt, 
nicht als Tastendrücke interpretieren wird.

von Sven (Gast)


Lesenswert?

Dachte ich mir auch, nur kann man ja über ascii werte auch stuerbefehle 
senden.
z.b. 0x01 für STRG+A
kommt man vlt. hier weiter?

von Axel J. (axeljaeger)


Lesenswert?

Dann musst du auf dem Computer ein Programm laufen lassen, was auf der 
Schnittstelle horcht und dann die Tastenkombinationen im Betriebssystem 
erzeugt. Das kann man schon machen.

von Sven (Gast)


Lesenswert?

Hättest du dafür ein Programm parat?

von Frederik K. (n0ll4k)


Lesenswert?

Ich meine mich zu erinnern da gabs früher (tm) mal was. Also Schaltplan 
und Software dafür. Hatte das auch mal kurz aufgebaut funktionierte 
prima aber bin dann auf Linux umgestiegen.

Grad mal kurz geschaut:

http://www.danielandrade.net/2005/11/17/howto-external-winamp-control/

von Karl H. (kbuchegg)


Lesenswert?

Du stellst momentan die falsche Frage.

Die richtige Frage muss zunächst lauten: Wie kommen deine Zeichen vom 
AVR über die serielle Schnittstelle ins WinAmp. Und zwar nicht einfach 
irgendwie, sondern so, dass sie WinAmp über seine ganz normalen 
Steuerschnittstellen auch akzeptiert.

Das kann im einfachsten Fall sein, dass man WinAmp die Zeichen in die 
Input-Queue stellt, so dass es für WinAmp keinen Unterschied mehr macht 
ob die Quelle jetzt tatsächlich eine Tastatur oder irgend ein anderes 
Gerät ist.
Ich meine mich aber auch zu erinnern, dass WinAmp ein paar 
Schnittstellen bereitstellt (Stichwort: COM-Objekte) über die man es 
fernsteuern kann.

Aber sei es wie es sei: Ohne ein zusätzliches Programm, welches auf dem 
PC die serielle SChnittstelle überwacht und das dort empfangene an 
WinAmp weiterleitet, wird das wohl nichts werden. Es sei denn natürlich, 
es gibt eine dokumentierte Schnittstelle von WinAmp selber, mit der man 
es auf eine serielle aufschalten kann. Bei der Verbreitung von WinAmp 
und der vielfältigen Anwendbarkeit würde mich das ehrlich gesagt noch 
nicht einmal wundern.

Also: Hausaufgaben machen und rauskriegen welche Möglichkeiten es 
prinzipiell gibt um WinAmp fernzusteuern. Welche dieser Möglichkeiten 
kann WinAmp ganz von alleine (durch Konfiguration/Plugins) erledigen und 
bei welchen muss man zusätzlich programmieren.

von Sven (Gast)


Lesenswert?

wow, klasse... Dickes Dankeschön. Sitz grad noch in einem Vortrag, werde 
es aber daheim in ruhe mal durchgehen...

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Es ist überhaupt nicht erforderlich, über eine Emulation der 
Standard-Tastatur zu gehen oder sich irgendwelche komischen Konstrukte 
zu überlegen.

Der TO hat doch ganz klar geschrieben, dass er Winamp verwenden möchte 
und nicht eine beliebige Software fernsteuern.

Winamp besitzt schon seit Urzeiten die Möglichkeit, einen COM-Port 
direkt anzusteuern/abzufragen, d.h. sowohl zur Darstellung von 
Titellisten als auch zur Annahme von Steuerkommandos. Das entsprechende 
Plugin findet man
hier:

http://www.winamp.com/plugin/com-port-winamp-control-v142/92855

von Remote O. (remote1)


Lesenswert?

Da du WinAmp über übliche Tastenkombinationen fernsteuern kannst, ist 
dein Vorhaben schon möglich. Du kannst unter 
"Systemsteuerung-->Eiingabehilfen-->Allgemein-->externe Eingabehilfen" 
die serielle Schnittstelle als Eingabe konfigurieren. Dann hast du die 
Möglichkeit über den AVR Tastencodes an WinAmp zu senden. Dazu muss 
WinAmp natürlich vorher gestartet und aktiv (handle) sein. Damit köntest 
du den "Umweg" über ein Zwischenprogramm dir ersparen - wobei das 
sicherlich die sauberere Lösung ist.

Such mal bei Microsoft MSDN, da findest alle Infos dazu

von Sven (Gast)


Lesenswert?

@Remote One
Das wäre dann auch nutzbar um zum beispiel VLC shortcuts zu nutzen?!
Wäre mir sogar lieber als über das Com-Port Plugin...
Bei mir jedoch ist dieses Feld ausgegraut und der Haken nicht setzbar, 
liegt warschienlich daran das im moment nichts über die 
Seriellenschnittstellen angeschlossen ist...
Vielen dank. Da arbeitet man solange schon mit Windows, kennt die 
FUnktion aber nicht :)

von Remote O. (remote1)


Lesenswert?

Ich hab jetzt auch den Microsoft-Artikel dazu wieder gefunden:
http://support.microsoft.com/default.aspx?kbid=260517

Wie das mir dem BTM-222 funktioniert, kann ich dir nicht sagen. Aber 
sobald eine virtuelle RS232 Schnittstelle im Gerätemanager ist, sollte 
das schon klappen.

von Vlad T. (vlad_tepesch)


Lesenswert?

ich denke, das schickste wäre die Referenzimplementierung einer 
HID-Tastatur von Obdev zu benutzen
http://www.obdev.at/products/vusb/hidkeys.html

dann schließt du dein AVR an die USB-schnittstelle und Windows erkennt 
ihn als normales Keayboard.
von nun an kannst du jede Tastenkombination senden, die du lustig bist.

von Remote O. (remote1)


Lesenswert?

Vlad Tepesch schrieb:
> ich denke, das schickste wäre die Referenzimplementierung einer
> HID-Tastatur von Obdev zu benutzen
> http://www.obdev.at/products/vusb/hidkeys.html
>
> dann schließt du dein AVR an die USB-schnittstelle und Windows erkennt
> ihn als normales Keayboard.
> von nun an kannst du jede Tastenkombination senden, die du lustig bist.

So hab ich das für meine PC Fernsteuerung gemacht. Einfach noch einen 
TSOP spendiert und damit Tastaturcodes zum fernsteuern des Rechners 
gesendet.

@Sven:
wenn du das so machen willst, dann kann ich dir da zumindest ein wenig 
Code beisteuern.

von Sven (Gast)


Lesenswert?

@Vlad und Remote

Brauch ich um HID zu nutzen noch irgendein Bauteil oder geht das alles 
über SW?

Ich glaub ich hab das mit dem HID noch nicht ganz verstanden ^^

Nutzbarkeit mit Windows ist klar, wie wenn ich dann ein normales 
Eingabegerät am Rechner anschließe. Kann ich dann auch normal Daten über 
die serielle Verbindung schicken oder nur noch Tastenkombinationen?

Zitat aus Wiki: "Beschränkt wird die Nutzbarkeit unter anderem durch 
eine geringere Anzahl an Endpunkten und geringe Datenübertragungsrate."

Zu meinem Projekt gehört ein Touchscreen, über den man gewünschtes 
auswählt und sendet. Für die Darstellung auf dem Display wird doch 
einiges an Daten gesendet und empfangen. (Schon allein die ständige 
Abfrage wo der Stift/Finger gerade ist).

Dazu kommt, das ich nicht per USB auf den Rechner gehe sondern per BTM 
das eine serielle COM Verbindung vorgaukelt.

Irgendwie blick ich da noch nicht ganz durch... kann mir das mal einer 
transparenter erklären bitte :)

von Remote O. (remote1)


Lesenswert?

Das mit dem HID über USB war ja nur ein Vorschlag. Bis dahin wusste ja 
noch keiner was du genau machen wolltest. Es hieß ja lediglich, dass du 
z.B. WinAmp über Tastenkürzel steuern möchtest.

Wenn du das BTM-222 Modul hast, dann vergiss das mit dem USB einfach 
wieder. Da ist es für dich sicherlich wesentlich einfacher, die serielle 
Schnittstelle in betrieb zu nehmen. Der Vorteil bei der USB Variante 
wäre lediglich, dass es an jedem beliebigen Rechner funktionieren würde 
ohne vorher die "externe Eingabehilfe" zu aktivieren. Nachteil ist 
natürlich der erhöhte Aufwand und das es kabelgebunden ist.

Sven schrieb:
> Brauch ich um HID zu nutzen noch irgendein Bauteil oder geht das alles
> über SW?

Na ja, mal von dem USB Stecker und ein wenig Kleinkram abgesehen, 
brauchst du da nichts weiter - das wird alles in Software gemacht

Sven schrieb:
> Nutzbarkeit mit Windows ist klar, wie wenn ich dann ein normales
> Eingabegerät am Rechner anschließe. Kann ich dann auch normal Daten über
> die serielle Verbindung schicken oder nur noch Tastenkombinationen?

Also, wenn du dich als HID Tastatur bei Windows anmeldest, dann kannst 
du auch nur Taten/Tastenkombinationen schicken. Wie du die 
interpretierst, ist ja dann deine Sache. Dir stehen ja schließlich auch 
alle numerischen und alphanumerischen Tasten zur Verfügung.
Mit der seriellen Verbindung versteh ich deine Frage nicht ganz. Wenn du 
fragst, ob du neben dem HID noch die RS232 nutzen kannst, dann kann ich 
das mit ja beantworten.

Sven schrieb:
> Zu meinem Projekt gehört ein Touchscreen, über den man gewünschtes
> auswählt und sendet. Für die Darstellung auf dem Display wird doch
> einiges an Daten gesendet und empfangen. (Schon allein die ständige
> Abfrage wo der Stift/Finger gerade ist).

Die Daten, welche gesendet/empfangen werden, gehen doch aber nicht 
direkt zum Rechner. Vielmehr wird es doch so sein, dass der µC die 
Darstellung und Auswertung des Displays übernimmt. Wenn dann z.B. etwas 
bestimmtes auf dem Display aktiviert wird, dann wird eben ein spezielles 
Tastenkürzel an den PC weitergeleitet. Das ist also keine direkte 
Kommunikation zwischen PC und Display. Da sitzt immer noch der µC 
dazwischen als Umsetzer

Sven schrieb:
> Dazu kommt, das ich nicht per USB auf den Rechner gehe sondern per BTM
> das eine serielle COM Verbindung vorgaukelt.

Das ist wie gesagt die einfache Variante und zudem nicht kabelgebunden. 
Aber zur Steuerung des Rechners musst du jedes mal die externe 
Eingabehilfe aktivieren. Keine Ahnung wie das ausschaut, wenn du keine 
Admin Rechte hast. Kann sein, dass du das dann nicht aktivieren kannst.
Zum anschließen eines HID brauchst du keine Admin Rechte und die Treiber 
sind bei Windows auch dabei.

von Albert D. (albert32)


Lesenswert?

Hallo!

Zur Info, im Elektor gibt es dies...

 http://www.elektor.de/jahrgang/2010/januar/winamp-control.1188077.lynkx

mfg

albert

von Sven (Gast)


Lesenswert?

Remote One schrieb:
> Sven schrieb:
>> Zu meinem Projekt gehört ein Touchscreen, über den man gewünschtes
>> auswählt und sendet. Für die Darstellung auf dem Display wird doch
>> einiges an Daten gesendet und empfangen. (Schon allein die ständige
>> Abfrage wo der Stift/Finger gerade ist).
>
> Die Daten, welche gesendet/empfangen werden, gehen doch aber nicht
> direkt zum Rechner. Vielmehr wird es doch so sein, dass der µC die
> Darstellung und Auswertung des Displays übernimmt. Wenn dann z.B. etwas
> bestimmtes auf dem Display aktiviert wird, dann wird eben ein spezielles
> Tastenkürzel an den PC weitergeleitet. Das ist also keine direkte
> Kommunikation zwischen PC und Display. Da sitzt immer noch der µC
> dazwischen als Umsetzer

Jo, war nen Denkfehler von mir ^^
Jetzt hab ich das aber auch verstanden.

Meine Liste der Bauteile hab ich jetzt auch zusammen, n8un aber erstmal 
hinten anstellen. Andere Arbeiten warten auch noch.
Einen Maschinenbauer, der mir die Hülle aus legiertem Alu macht, hab ich 
auch schon :)

von Tishima (Gast)


Lesenswert?

Hallo!

Falls es sich um das Betriebssystem Windows handelt sollte sich das 
Programm Eventghost (freie Software) mit dem Serial Plugin eignen.
Damit kannst Du einfach Serielle Kommandos in entsprechende Events 
umwandeln ein plugin für Winamp Steuerung existiert ebenfalls und 
ettliche andre Programme.

gruß,
Bjoern

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.