Seite 1 von 2 12 LetzteLetzte
Zeige Ergebnis 1 bis 10 von 17

YARD und Linux

Erstellt von Phaiax, 16.10.2008, 19:38 Uhr · 16 Antworten · 3.705 Aufrufe

  1. #1
    Benutzerbild von Phaiax

    Registriert seit
    31.01.2007
    Beiträge
    11

    YARD und Linux

    Einen wunderschönen guten Tag :-)

    Heute beginne ich, die YARD-Steuersoftware in Linux zu portieren. Ich stelle hier vorerst mein Konzept vor. Verbesserungsvorschläge sind gewünscht.

    0. Programmiersprache ist C++ (Behersche ich hoffentlich gut genug, und wenn nicht ist dieses Projekt genau richtig, um mir etwas mehr wissen in Bezug auf C++ anzueignen)
    1. Das Programm besteht aus 2 Teilen.
    1.1. Einer Konsolenanwendung, mit der man mittels Parametern "komfortabel" die YARD-Hardware ansteuern kann.
    1.2. Einem Userinterface, welches die Konsolenanwendung zum Arbeiten mit der YARD-Hardware benutzt
    1.a. Vorteile dieser Umsetzung: Sollte ich zwischendurch meine Muße verlieren, ist zumindest (hoffentlich) schonmal der Konsolenteil fertig, mit dem man dann schon ansatzweise YARD benutzen kann. (Zb um ein Kommando auf eine Taste zu legen)
    2. Vielleicht muss ich die YARD-Konsolenanwendung als Daemon auslegen, da ich bis jetzt noch nicht weiß, wie YARD events an den PC sendet.
    3. Die GUI soll weitgehend die Funktionen der Windows-Software nachbilden. Allerdings wird sie komplett anders aussehen (hoffentlich besser und intuitiver :-) ) (Tut mir leid, so muss das nunmal unter Linux sein :-) )
    4. das war erstmal das wichtigste glaub ich. Jetzt werde ich erstmal die Kommunikation studieren.
    5. Achso... veröffentlichen werde ich die Software im Quellcode und als Debian bzw Ubuntu (*.deb) -Paket. Code und Paket werden mit meinem (seit gestern existentem) gpg-Schlüssel signiert :-)

    Mit überaus freundlichen Grüßen
    Phaiax

  2.  
    Anzeige
  3. #2
    Benutzerbild von wittus

    Registriert seit
    12.04.2004
    Beiträge
    106

    Daumen hoch

    Moin Phaiax

    Darauf habe ich ja schon lange gewartet .
    Viel Spass beim Coden! Vielleicht kann ich mal etwas zu Deinem Vorhaben beitragen - C++ Programmierung war aber noch nie so meine Stärke und ist ausserdem schon ein paar Jahre her.

    Gruss, wittus

  4. #3
    Benutzerbild von Phaiax

    Registriert seit
    31.01.2007
    Beiträge
    11
    Hui, das war ein fixer Motivationsschub :-) vielen Dank.

    So...die Herausforderung hats mir echt angetan. Ich hab bis fast halb 4 programmiert. Das ist mir noch nie passiert :-) Hardware-Kommunikations-Protokoll-Zeug hab ich in dieser Zeit noch nicht gemacht. (Nur mit meinem Tiny2313, nicht mit der YARD-Hardware). Dafür aber folgendes:

    1. Mein Prozess, der mit der Hardware kommuniziert ist ein Daemon. (Ich habe jetzt beschlossen, den Code von Anfang an 'asyncron' auszulegen, da es sonst später ein ziemliches Gefrickel geben könnte). Dieser Daemon hat eine tolle Kommunikations-API, die aus einer MessageQueue und Interrupts mittels Signalen besteht.
    2. Das Projekt hat einen Namen: YARDix [ausgesprochen als djardix, mit einem überaus tiefen englischen rrrrr]
    3. Ich werde so von Zeit zu Zeit mal meinen Fortschritt posten
    4. Es ist sehr viel schwerer in C++ zu programmieren als ich dachte (ich bin php und C#-verwöhnt), aber mein C++-Hozizont erweitert sich im Zeitraffer (mittels sehr viel kuugel und try&error :-) )
    5. Grafikbibliothek: Ist Gtk+ ok?
    6. Lirc. Wenn jemand dafür unterstützung will, muss er mir Gründe liefern :-) (ps: ich weiß noch nichtmal was Lirc überhaupt ist)

    Eine aufregende Nacht an alle, die jetzt noch wach sind :-)^^

  5. #4
    fax
    Benutzerbild von fax

    Registriert seit
    29.04.2007
    Beiträge
    2.390
    Als Nicht-Y.A.R.D.-Besitzer (iMon, schäm) nur ein paar Einwürfe von der Zuschauertribüne:

    Zitat Zitat von Phaiax Beitrag anzeigen
    1. Mein Prozess, der mit der Hardware kommuniziert ist ein Daemon. (Ich habe jetzt beschlossen, den Code von Anfang an 'asyncron' auszulegen, da es sonst später ein ziemliches Gefrickel geben könnte). Dieser Daemon hat eine tolle Kommunikations-API, die aus einer MessageQueue und Interrupts mittels Signalen besteht.
    Evtl. könntest du dir viel Arbeit sparen, wenn du statt deinem Code den LIRC Daemon (lircd) benutzen würdest.

    Zitat Zitat von Phaiax Beitrag anzeigen
    2. Das Projekt hat einen Namen: YARDix [ausgesprochen als djardix, mit einem überaus tiefen englischen rrrrr]
    Netter Name, mit texanischem Akzent kommt der noch besser. ;-)

    Zitat Zitat von Phaiax Beitrag anzeigen
    4. Es ist sehr viel schwerer in C++ zu programmieren als ich dachte (ich bin php und C#-verwöhnt), aber mein C++-Hozizont erweitert sich im Zeitraffer (mittels sehr viel kuugel und try&error :-) )
    Das könnte allerdings die LIRC Integration etwas erschweren. LIRC ist m.W. in C programmiert.

    Zitat Zitat von Phaiax Beitrag anzeigen
    5. Grafikbibliothek: Ist Gtk+ ok?
    Ich kenne Y.A.R.D. praktisch nicht, daher ist mir nicht ganz klar, wozu eine grafische Oberfläche nutzen soll. Für LIRC kann man sich die sparen. Ansonsten, wenn du sowieso C++ benutzt, warum nicht gleich QT als Oberfläche verwenden?

    Zitat Zitat von Phaiax Beitrag anzeigen
    6. Lirc. Wenn jemand dafür unterstützung will, muss er mir Gründe liefern :-) (ps: ich weiß noch nichtmal was Lirc überhaupt ist)
    LIRC ist sozusagen die Middleware zwischen Infrarot (u.ä.) Empfänger und Anwendungsprogramm. Man baut einen Treiber in LIRC ein, damit der sich mit der vorhandenen IR Hardware unterhalten kann. Das müsstest du für Y.A.R.D. implementieren. Den Rest erledigt LIRC, d.h. es übersetzt die IR Codes, die es vom Treiber bekommt, in konfigurierbare Zeichencodes und reicht diese an die Anwendungsprogramme weiter. Das Anwendungsprogramm an sich muss gar nichts wissen, außer dass es ein LIRC Interface hat. Manche Programme wie VDR ermöglichen es auch relativ komfortabel, eine neue Fernbedienung über LIRC anzulernen. Kurz gesagt, eine separate GUI zur Konfiguration ist nicht notwendig bzw. in die jeweiligen Anwendungsprogramme eingebaut. Der entscheidende Vorteil von LIRC ist, dass alle Linuxprogramme, die eine LIRC Schnittstelle eingebaut haben, ohne Änderungen sofort mit Y.A.R.D. funktionieren, sobald der entsprechende Treiber in LIRC eingebaut ist.

    Benutzt du eigentlich Y.A.R.D. als Empfänger oder Transceiver? LIRC kann m.W. nur empfangen, ich kann mich aber täuschen.

  6. #5
    Benutzerbild von Phaiax

    Registriert seit
    31.01.2007
    Beiträge
    11
    Zitat Zitat von fax Beitrag anzeigen
    Evtl. könntest du dir viel Arbeit sparen, wenn du statt deinem Code den LIRC Daemon (lircd) benutzen würdest.
    [...]Ich kenne Y.A.R.D. praktisch nicht, daher ist mir nicht ganz klar, wozu eine grafische Oberfläche nutzen soll. Für LIRC kann man sich die sparen. Ansonsten, wenn du sowieso C++ benutzt, warum nicht gleich QT als Oberfläche verwenden?
    Ich hab mir mal LIRC angeschaut. Soweit ich das sehe, ist es ein nur sehr geringer Auffand, YARDix in LIRC einzubauen. Deshalb mache ich jetzt erstmal mein YARDix als eigenständigen Daemon fertig. Auch weil YARD noch andere Funktionen bietet, die über reine LIRC-Anbindung nicht programmiert werden könnten, wie z.B zeitgesteuertes Anschalten des PCs und LCD-Display-Ansteuerung.

    Zitat Zitat von fax Beitrag anzeigen
    Netter Name, mit texanischem Akzent kommt der noch besser.
    Wie klingt denn biddeschön texanisch?
    Zitat Zitat von fax Beitrag anzeigen
    [zu c++]Das könnte allerdings die LIRC Integration etwas erschweren. LIRC ist m.W. in C programmiert.
    Kp, mein code ist nicht wirklich Objektorientert, derzeit arbeite ich mit Singleton-Instanzen

    Zitat Zitat von fax Beitrag anzeigen
    Ansonsten, wenn du sowieso C++ benutzt, warum nicht gleich QT als Oberfläche verwenden?
    Hmm.. ich dachte Qt wäre nur für KDE? Ich informier mich darüber, wenns soweit ist!

    Zitat Zitat von fax Beitrag anzeigen
    Benutzt du eigentlich Y.A.R.D. als Empfänger oder Transceiver? LIRC kann m.W. nur empfangen, ich kann mich aber täuschen.
    Ich benutze die Sendefunktion, um vom PC aus meine Anlage fernzusteuern und die Empfangsfunktion um von meinem Bett aus mittels Fernbedienung Winamp (bzw bald Amarok) zu steuern. Und laut Infos auf der LIRC Homepage kann LIRC auch senden.

    PS: Ich fühl mich irgendwie bescheuert beim zitieren. Vor jedes Zitat die Quote-Tags kopieren ist doch bestimmt überflüssig, oder? Komischerweise kenne ich aber keine andere Lösung. Es klappt auch nicht unten bei den vorherigen Antworten ein bisschen Text zu markieren und den dann per Quote-Schaltfläche zu übernehmen :-) Help me! :-)

  7. #6
    fax
    Benutzerbild von fax

    Registriert seit
    29.04.2007
    Beiträge
    2.390
    Zitat Zitat von Phaiax Beitrag anzeigen
    LCD-Display-Ansteuerung
    Das macht man unter Linux in der Regel über LCDproc.

    Zitat Zitat von Phaiax Beitrag anzeigen
    Wie klingt denn biddeschön texanisch?
    Biddesehr: http://www.youtube.com/watch?v=mdfXG0KnbPk

    Zitat Zitat von Phaiax Beitrag anzeigen
    Hmm.. ich dachte Qt wäre nur für KDE? Ich informier mich darüber, wenns soweit ist!
    QT verhält sich zu KDE wie GTK zu Gnome.

    Zitat Zitat von Phaiax Beitrag anzeigen
    PS: Ich fühl mich irgendwie bescheuert beim zitieren. Vor jedes Zitat die Quote-Tags kopieren ist doch bestimmt überflüssig, oder? Komischerweise kenne ich aber keine andere Lösung. Es klappt auch nicht unten bei den vorherigen Antworten ein bisschen Text zu markieren und den dann per Quote-Schaltfläche zu übernehmen :-) Help me! :-)
    Ich kenne auch keine bessere Methode.

  8. #7
    Benutzerbild von AndreWeber

    Registriert seit
    02.08.2005
    Beiträge
    1.446
    @Phaiax
    die Idee mit dem Daemon der den Zugriff auf die Hardware regelt finde ich gut. Weil wenn du Y.A.R.D. direkt in LIRC einbindest - wird wohl Lirc die serielle Schnittstelle blockieren - und du kannst mit keiner weiteren Software auf Y.A.R.D. zugreifen.

    Wenn du das ganze aber als Daemon baust - kann deine Lirc Integration sich mit dem Daemon verbinden - ob du das nun über Pipes, Sockets oder weiß der Geier welche RPC (Remote Procedure Call) Mechanismen die Linux bietet realisiert dürfte am Ende keine Rolle spielen. Aber so können am Ende verschiedene Programm quasi parallel auf Y.A.R.D. zugreifen.

    Ich bin so halbwegs fit in C / C++ und auch ein wenig Linux stuff... kann daher auch gerne mal was testen...


    André

    PS.: werde diese Thread weiter beobachten und mich ggf. einmischen *g*

    meine Software ist zwar nicht unbedingt intuitiv zu bedienen - aber den Anspruch hatte ich ehrlich gesagt nie, sie sollte meine Funktionsbedarf erfüllen... und das wars... *g* ... von daher hast du hier die Chance es besser zu machen, vielleicht kann ich mir ja noch was abgucken... für die Windows Welt

  9. #8
    Benutzerbild von Dada

    Registriert seit
    12.12.2002
    Beiträge
    2.117
    @Phaiax:

    Super, endlich ist es soweit! Hier sind sicher noch jede Menge User, die sehnlichst auf den Linux-Port warten :-) Andre steht auch sicher bei allerlei Fragen gern zur Verfügung.

    Ich hab leider keinerlei Programmierkenntnisse, daher bleibt es bei der reinen Motivation, weiterzumachen

  10. #9
    Benutzerbild von AndreWeber

    Registriert seit
    02.08.2005
    Beiträge
    1.446
    Hallo,

    hier mal meine erste Einmischung -- hab mal auf meinem PC nach den alten Sourcen gesucht, die ich mal für Linux bzw. ein C Projekt angefangen hatte, und hab das ganze mal wieder übersetzbar gemacht.

    Ein paar Grundfunktionen sind schon da - wie auslesen Firmware Version, Aktuelle Yard Zeit auslesen, Boot Grund und den Benutzer IO Port... Vielleicht hilft es dir ja bei deinen ersten Gehversuchen... (es ist bestenfalls als Grundgerüst zu verstehen!)
    - ggf. würde ich die Protokollgeschichte noch zu Ende coden - und dir komplett übergeben, so dass du Dich auf LIRC & GUI oder was auch immer konzentrieren kannst, und dich nicht mit dem Protokoll selbst herumärgern musst.

    André

    [edit]
    Neue Version mit mehr Funktionen - API für zum Stellen der Uhr, Weckzeit, Sommerzeit/Winterzeit Wechsel, Speichern der IR Codes für Power On / Off etc., sowie der weitere Konfigurationswerte... inkl. einfacher Funktion zum Warten das eine Taste der FB gedrückt wird...
    Angehängte Dateien Angehängte Dateien

  11. #10
    Benutzerbild von Phaiax

    Registriert seit
    31.01.2007
    Beiträge
    11
    ERFOLGSMELDUNG *taadaaaa*
    Ich kann die Firmwareversion vom Client über den Daemon auslesen. Juhuuuuu :-)... Der Rest ist jetzt erstmal ein Kinderspiel. Das ganze kann aber trotzdem noch einige Zeit in Anspruch nehmen, da jetzt die Schule wieder begonnen hat und ich da seltener Zeit zum Weitermachen finde.

    Desweiteren biete ich folgenden (kostenlosen ;-)) Service an:
    Jeder YARDix-Interessierte kann mir per PM seine Email-Adresse schicken. Er wird dann informiert, wann YARDix seinen ersten Release Candidate veröffentlicht hat. Im Gegenzug hätte ich dann gerne eine kleine Rückmeldung wie ihr das Programm findet, wie ihr damit zurecht kommt und was ihr verbessern würdet.

    @AndreWeber
    Danke für die Unterstützung. Ich habe mir aus deinen Quellen die isReponseOK-Funktion "geborgt" :-). Aus irgendeinem Grund hats bei mir mit der Checksumme nicht hingehauen. Kann jetzt auch leider nicht mehr überprüfen was genau falsch war, da ich meinen Codeteil gelöscht hab.

    Helau!!!!

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. YARD Server für Linux
    Von Marsupilami im Forum Y.A.R.D. Entwicklerforum
    Antworten: 15
    Letzter Beitrag: 06.07.2012, 21:42
  2. YARD bauen
    Von Romep im Forum Y.A.R.D. Entwicklerforum
    Antworten: 3
    Letzter Beitrag: 04.08.2009, 07:21
  3. Will nen yard! :)
    Von Ownnemesis im Forum Y.A.R.D. Entwicklerforum
    Antworten: 4
    Letzter Beitrag: 13.05.2009, 07:46
  4. Wie kann ich YARD mit Linux VDR betreiben?
    Von OliverH im Forum Y.A.R.D. Entwicklerforum
    Antworten: 2
    Letzter Beitrag: 16.10.2008, 19:23
  5. Linux VDR - welches Linux und Frontend?
    Von STSC im Forum Linux Frontends
    Antworten: 4
    Letzter Beitrag: 31.05.2006, 15:46