Seriellen-Port über Skript abfragen

  • Ich möchte ein Skript schreiben um den Gutwenger B&O Empfänger unter Linux abzufragen.
    Die Schaltung hängt am Seriellen-Port und sendet für jeden Tastendruck der FB drei bytes.
    Leider habe ich keine Idee wie man den Seriellen-Port abfragt und würde mich daher über jeden Hilf, Tipps oder Links freuen.


    Danke,
    DVB-t

  • Zitat

    Original von VDR-T
    Ich möchte ein Skript schreiben um den Gutwenger B&O Empfänger unter Linux abzufragen.
    Die Schaltung hängt am Seriellen-Port und sendet für jeden Tastendruck der FB drei bytes.
    Leider habe ich keine Idee wie man den Seriellen-Port abfragt und würde mich daher über jeden Hilf, Tipps oder Links freuen.


    Danke,
    DVB-t


    Kannst du näher spezifizieren,


    a) Was soll das Skript genau machen? Soll der Empfänger in VDR integriert werden?


    b) In was für Sprachen hast du Erfahrung?


    arghgra

  • Zu a)
    Ich will die Tasten Codes des Empfängers in der Form xx xx xx
    1. byte: format (z.bsp. "link")
    2. byte: empfänger (z.bsp. fernseher=00, audioanlage=01, light=1B)
    3. byte: funktionen (z.bsp. "1"=01, "2"=02, "stop"=36)


    00 00 80 tv ein
    00 00 0C tv aus
    00 00 01 tv 1
    00 01 81 radio ein
    00 05 30 v.tape2
    auslesen, auswerten und dann mit svdrpsend.pl die entsprechende Funktion im VDR auslösen.


    Zu b)
    Ich habe mal etwas mit VB programmiert. Ich wollte mich eigentlich von dem Bluetooth-Skript btcontrol aus diesem Treader inspirieren lassen.


  • Ein Vorschlag (nicht hauen! ;) :( Mach lieber ein Plugin draus ... dann hast du den SVDR-Port noch für was anderes frei ... als Grundlage könnte das Plugin für das Tastermodul an der ser. Schnittstelle dienen. Statt die einzelnen Control-Lines auszulesen, müsstest du nur vom seriellen Port lesen.


    BTW: Dieser ominöse IR-Empfänger von B&O für 70 EUR - was ist da dran?


    arghgra


  • Hab gerade mal geschaut ... ist machbar ;)


    Das Plugin findest du hier:
    http://www.lf-klueber.de/vdr.htm


    Du müsstest in der Datei serial.c:


    1) Den Bereich cSerialStatus rausschmeissen
    2) Die Setup-Option "Flashrate" entfernen
    3) Die Open/Close-Funktionen der ser. Schnittstelle im Konstr./Destr. der Klasse cSerialRemote anpassen
    und 4) in der Methode cSerialRemote::Action die Schnittstelle auslesen und je nach empfangenen Daten ein Put("Meine Taste") aufrufen. Ob du die Tasten hier fest kodierst oder von aussen per Conf-Datei anpassbar, bleibt dir überlassen.


    arghgra

  • Jetzt hast Du mich aber erwischt, ich bin mir nicht sicher ob meine Fähigkeiten für ein Plugin reichen. Ich wollte doch nur ein kleines Skript basteln ;)
    Danke das Du Dir schon so viel Mühe gemacht hast. Werde mal sehen ob ich das hinbekomme.


    Dieser ominöse IR-Empfänger von B&O ist eigentlich nur interessant wenn man einen Fernseher oder eine Stereoanlage von B&O hat und dann über das Linksystem von B&O einen anderen Raum mit Ton vom Hauptgerät versorgen will. Dann hängst du einfach so einen IR-Empfänger und ein paar Boxen in den Raum und kannst alles über deine FB steuern.
    Meine Eltern haben so einen Fernseher von B&O und ich habe ihnen einen VDR gebaut der nur über ein Scartkabel mit dem TV verbunden ist und dann direkt über PIN8 der Skartbuchse das B&O Signal der FB vom TV bekommt. Im Moment lasse ich das noch alles über Lirc im RAW-Modus laufen, ist aber noch nicht so wirklich optimal.

  • VDR-T,
    wenn ich mich nicht täusche, dann sollte es so gehen:


    Parameter der Schnittstelle einstellen:
    > setserial ......(-> man setserial)


    dann kannst Du /dev/ttySx (oder wie das Dings da heißt) direkt auslesen bzw. beschreiben.


    Gruß
    beagle

    Asus TUSL2-C, 128MB, 1xTT FF 2300 mod. 2xTT Budget DVB-S 1.5, SP1614, ND3550A, 2.6.20.3, Debian etch, Tobi experimental etch(1.4.7-1ctvdr1), ACPI wakeup, Psone Display.

  • Zitat

    Original von VDR-T
    Ich wollte doch nur ein kleines Skript basteln ;)


    Hallo,


    hatte erst letztens ein Skript gebraucht, welches einzelne Bytes über die serielle Schnittstelle einliest. Geht eigentlich recht einfach. Hier mal ein Vorschlag wie das evtl. bei dir aussehen könnte, ohne das aber jetzt getestet zu haben:



    Die Werte (Baudrate, Parität, ...) müssten natürlich angepasst werden.


    Thomas

  • Servus,


    der Weg über svdrpsend.pl ist zwar machbar, aber die Reaktionszeit zum scrollen durch das Menu ist grausam! ca 1 sec pro Zeichen. Habe es mal ausprobiert mit einem shellscript:


    Code
    svdrpsend.pl HITK down
    svdrpsend.pl HITK down
    svdrpsend.pl HITK down
    svdrpsend.pl HITK down
    svdrpsend.pl HITK down
    svdrpsend.pl HITK down


    hat fast 6 sec. gedauert.


    Dürfte also nicht das wahre sein.


    Das eigentliche Problem ist doch dem VDR die entsprechenden 'Tastendrücke' zu senden.
    Wie kann man an TTY10 (der VDR Konsole unter LinVDR) Zeichen senden, damit der VDR es als Eingabe sendet?
    Das empfangen der ASCII Zeichen von der Gutwenger.com Schaltung über die serielle Schnittstelle ist dann das wenigste, denke ich mal. Auch die Auswertung der Zeichen unter Übersetzung in die passenden VDR Codes ist machbar.


    Gruß OS/2

    Hardware: Asus Pundit, Celeron 2,4GHz, 1 x TT 1.5, 1 x Skystar2 2.6c, B&O Beolink 5000 an LIRC
    Software: verpanschtes LinVDR 0.7 mit mt20050414 Edition

  • Hallo OS/2,


    Zitat

    Original von OS/2
    ... der Weg über svdrpsend.pl ist zwar machbar, aber die Reaktionszeit zum scrollen durch das Menu ist grausam! ca 1 sec pro Zeichen.


    so ist der VDR programmiert ...
    ... SVDRP-Schnittstelle wird im Normalbetrieb nur aller einer Sekunde abgefragt.


    Schneller geht es nur, wenn die Verbindung nicht unterbrochen wird. Also:


    - connect
    - HITK down
    - HITK down
    ...


    - QUIT



    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

  • Servus,


    Tombo:
    Danke für die Erklärung, jetzt weiß ich wenigstens warum, aber leider hilft das nicht viel weiter, denn das Programm weiß ja nie ob noch eine Taste gedrückt wird oder nichtm also muß es jedesmal einmal die Verbindung aufbauen, ein Zeichen senden, und dann wieder beenden.


    Ich komme wieder auf meine Frage zurück: wie kann ein Programm z.B. in TTY2 laufend, ein Zeichen in den Eingabepuffer von TTY10 schicken? Denn das würde imho das ganze Problem größtenteils lösen.


    Gruß OS/2

    Hardware: Asus Pundit, Celeron 2,4GHz, 1 x TT 1.5, 1 x Skystar2 2.6c, B&O Beolink 5000 an LIRC
    Software: verpanschtes LinVDR 0.7 mit mt20050414 Edition


  • Check mal irpty aus dem tty-Package ....


    Wie oben schon gesagt ist es sinnvoller, das in ein Plugin zu packen ....


    arghgra

  • Servus,


    @arghra:


    Habe mal nach dem irpty gesucht, aber das ist von Lirc, hört sich nicht schlecht an, aber irpty bekommt als Parameter dann VDR mit seinem Parameter Sammelsurium mit. Und ob das dann so funktioniert, da habe ich so meine Bedenken.
    Ausserdem ist der übertragene Kode aus Lirc, wobei die Dekodierung des IR Datenstroms schon durch den Prozessor des gutwenger.com erfolgt. Die Ausgabe erfolgt im Klartext des Datalink Protokolls von Bang & Olufsen.



    @all:


    Ich denke immer noch, das es am einfachsten wäre die Daten als 'Tastatur' zu übermitteln.


    Habe mich mal ein bischen schlau gemacht zum Thema µC übermittelt Daten an PC über PS/2. War gar nicht so einfach, die meisten Seiten übermitteln halt seriell, USB oder parallel. Habe dann aber doch noch was gefunden für meinen Lieblings µC, den 8051. Das ganze läßt sich in einem 20 poligen Chip realisieren, der seinen Programm Speicher auch gleich 'onBoard' hat, so ähnlich wie der µC bei gutwenger.com.


    Werde jetzt erstmal sehen, ob ich das Programm erstmal dazu bringe, ein paar Zeichen an den VDR zu senden. Wenn das dann geht, kann man eine passende Umsetzung der 3 ASCII Zeichen von gutwenger.com dazu stricken. Das ganze dürfte dann ungefähr aus 2 µC's, 2 Quarzen, und ein bischen Kleinkram drumrum bestehen


    Dann komme ich auch um die Entwicklung eines Plugins rum, das dann immer neu angepasst werden müßte an neue VDR Versionen.



    Gruß
    OS/2

    Hardware: Asus Pundit, Celeron 2,4GHz, 1 x TT 1.5, 1 x Skystar2 2.6c, B&O Beolink 5000 an LIRC
    Software: verpanschtes LinVDR 0.7 mit mt20050414 Edition

    Einmal editiert, zuletzt von OS/2 ()

  • Zitat

    Original von OS/2
    Servus,


    @arghra:


    Habe mal nach dem irpty gesucht, aber das ist von Lirc, hört sich nicht schlecht an, aber irpty bekommt als Parameter dann VDR mit seinem Parameter Sammelsurium mit.


    Bittäh? ;) Wo sein Problem?


    Welches Device willst du denn ansteuern? Auch so einen B&O-Empfänger?


    Da ich schon länger über ein Plugin für einen UIRT nachdenke, könnte man das dann auch gleich mit dazupacken ... dann backen wir halt alle seriellen Empfänger auf einmal ab ;)


    arghgra

  • Servus,


    so wie ich die Doku von irpty verstanden habe, startet der Aufruf von irpty das Programm, das als zweiter Parameter mitgegeben wird.


    Zusätzlich wird über die Fernbedienung übermittelt, welches Gerät gemeint ist, ob TV oder VCR oder Radio, DoorCam, Licht oder oder oder. Das müßte dann von Deinem Plugin mit abgefangen werden und entsprechend reagieren, wobei der VDR eigentlich vier Geräte (TV, VCR, DVD, CD eventuell auch noch Net-Radio) im B&O System ist.


    Ansteuern will ich eigentlich gar nichts, denn gesteuert soll der VDR werden durch das B&O Hauptsystem :)


    Gruß
    OS/2

    Hardware: Asus Pundit, Celeron 2,4GHz, 1 x TT 1.5, 1 x Skystar2 2.6c, B&O Beolink 5000 an LIRC
    Software: verpanschtes LinVDR 0.7 mit mt20050414 Edition

    Einmal editiert, zuletzt von OS/2 ()

  • Zitat

    Original von OS/2
    Servus,


    so wie ich die Doku von irpty verstanden habe, startet der Aufruf von irpty das Programm, das als zweiter Parameter mitgegeben wird.


    Japp ...


    Zitat


    Zusätzlich wird über die Fernbedienung übermittelt, welches Gerät gemeint ist, ob TV oder VCR oder Radio, DoorCam, Licht oder oder oder. Das müßte dann von Deinem Plugin mit abgefangen werden und entsprechend reagieren, wobei der VDR eigentlich vier Geräte (TV, VCR, DVD, CD eventuell auch noch Net-Radio) im B&O System ist.


    Ansteuern will ich eigentlich gar nichts, denn gesteuert soll der VDR werden durch das B&O Hauptsystem :)


    Gruß
    OS/2


    Nochmal für nich B&Oler ;) - du hast auch so einen Gutwenger-Empfänger? Du willst die FB-Signale empfangen? Du willst, dass der VDR nur auf bestimmte Signale reagiert?


    Korrekt?


    arghgra

  • yep! yep! yep!


    dreimal ultrakoreggd! :)


    Allerdings bin ich LinVDR Anhänger und habe leider auch kein Entwicklersystem zur Verfügung, um selbst was kompilieren zu können.


    OS/2

    Hardware: Asus Pundit, Celeron 2,4GHz, 1 x TT 1.5, 1 x Skystar2 2.6c, B&O Beolink 5000 an LIRC
    Software: verpanschtes LinVDR 0.7 mit mt20050414 Edition

    Einmal editiert, zuletzt von OS/2 ()


  • Für den Anfang hab ich noch eine Frage: Dieser Empfänger arbeitet soweit ich das gesehen hab mit 9600 baud 8N1 - richtig?
    Braucht der noch eine Init-Sequenz?
    Jedes Kommando kommt als 3Byte-Sequenz?


    arghgra

  • Servus,


    der Empfänger sendet immer drei Bytes in 9600,n,8,1 und braucht keinerlei Init.
    Sobald er was empfängt, was gültig ist, sendet er es über die serielle Schnittstelle aus.


    OS/2

    Hardware: Asus Pundit, Celeron 2,4GHz, 1 x TT 1.5, 1 x Skystar2 2.6c, B&O Beolink 5000 an LIRC
    Software: verpanschtes LinVDR 0.7 mit mt20050414 Edition

  • Zitat

    Original von OS/2
    Servus,


    der Empfänger sendet immer drei Bytes in 9600,n,8,1 und braucht keinerlei Init.
    Sobald er was empfängt, was gültig ist, sendet er es über die serielle Schnittstelle aus.


    OS/2


    Jut ... dann kann ich das SerialRemote Plugin angehen ;)


    arghgra

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!