Serielle Schnittstelle (RS232) über Konsole oder Terminal

  • Hallo Leute,
    ich hab mir eine kleine Erweiterung für meinen VDR gebaut, da ist auch eine Lüftersteuerung integriert, und die wird per serieller Schnittstelle konfiguriert und überwacht (z.b. Temperatur abfragen) nun will ich aber nicht ein serielles Kabel bis zum nächsten PC ziehen, sondern das ding gleich an die vorhandene serielle schnittstelle am vdr anschließen. die steuerung basiert auf nem einfachen terminal, d.h. ich sende meiner lüftersteuerung einen buchstaben, z.B. "t" und er sendet mir dann die aktuelle temperatur zurück.


    soviel zur vorgeschichte, jetzt meine Frage: wie kann ich das lösen, auf meiner linux-konsole ein (möglichst einfaches) terminal-programm laufen zu lassen, bzw. welches wäre dafür geeignet. das ding muss nur ein zeichen senden können und den empfangenen text einfach auf dem bildschirm darstellen.


    btw: da ich ja plane, in naher zukunft ein atmolight zu baun, kann ich dieses ohne probleme an einen usb->seriell-wandler anstecken oder soll ich lieber das terminal über den wandler laufen lassen? mir wäre in diesem fall das atmolight lieber zwecks busversorgung, dann kann ich den wandler gleich auf der platine unterbringen, hab da mal was von nem ftdi-chip gehört, der das kann...


    danke für eure hilfe, der großteil an hard- und software-infos steht in meiner signatur, falls noch jemand was wissen möchte/muss, bitte sagen, kriegt ihr alles...


    gruß von bambi

    Aktueller Stand:
    Gehäuse: Yang-IT A211 * EPIA LN10000EG 1GHz-C7 + 1GB DDR2-RAM * 20GB Notebook-Platte PATA * 250GB WD-Platte Caviar 2500AAJS SATA * LG GSA-H62N DVD-Brenner SATA * TT 1.5-FF-Karte * easyVDR 0.6.2
    Eigenbau-IR-Einschalter nach Atric mit Gehäuselüfter-Steuerung, J2-RGB-Ausgang und S/P-DIF optisch * AtmoLight "Triple" (<^>)

    Einmal editiert, zuletzt von Bambi ()

  • uff... das sind ja nur quelltexte... wo genau hast du gemeint steht da was zur ansteuerung über die linux-konsole?? habs vielleicht nur übersehn...


    das mit dem atmolight is ja hervorglänzend! dein board is ja schon fast genau das, was ich selber schon layouten wollte. gute arbeit, danke! also das problemchen hätte sich damit erledigt, bleibt nur noch das serielle terminal...


    bambi

    Aktueller Stand:
    Gehäuse: Yang-IT A211 * EPIA LN10000EG 1GHz-C7 + 1GB DDR2-RAM * 20GB Notebook-Platte PATA * 250GB WD-Platte Caviar 2500AAJS SATA * LG GSA-H62N DVD-Brenner SATA * TT 1.5-FF-Karte * easyVDR 0.6.2
    Eigenbau-IR-Einschalter nach Atric mit Gehäuselüfter-Steuerung, J2-RGB-Ausgang und S/P-DIF optisch * AtmoLight "Triple" (<^>)

  • Wie wär's mit "chat"?


    Bißchen angestaubt, aber für solche Zwecke durchaus brauchbar. Man schreibt und liest aus dem entsprechenden Devicefile. Übertragungsrate und Parameter kann man vorher mit "stty" setzen.


    Du kannst natürlich auch chat umgehen und alles selber machen, indem Du nach "stty" direkt in das Device schreibst und daraus liest.


    uwe

    server: yavdr trusty testing, 2 * L5420, 32GB, 64TB RAID6 an OctopusNet (DVBS2- 8 ) + minisatip@dsi400 (DVBS2- 4 )
    frontends: kodi und xine

  • ok... langsam... den befehl "chat" kennt mein vdr nicht. stty gibt folgendes aus:

    Code
    easyVDR:~# stty
    speed 38400 baud; line = 0;
    -brkint -imaxbel


    wie kann ich diese werte jetzt verändern (ich brauch 9600N1 ohne flusskontrolle) und wie kann ich davon lesen? ich kann mit der hilfe von stty nicht wirklich was anfangen...
    schreiben nach stty geht denk ich mal so: "echo t >stty" lieg ich da richtig?


    ich hätt mir halt sowas wie das hyperterminal in windows gewünscht: ich mach ein programm auf, da hab ich dann meine ausgabe von der seriellen schnittstelle und alles was ich über die tastatur eingebe wird gesendet...

    Aktueller Stand:
    Gehäuse: Yang-IT A211 * EPIA LN10000EG 1GHz-C7 + 1GB DDR2-RAM * 20GB Notebook-Platte PATA * 250GB WD-Platte Caviar 2500AAJS SATA * LG GSA-H62N DVD-Brenner SATA * TT 1.5-FF-Karte * easyVDR 0.6.2
    Eigenbau-IR-Einschalter nach Atric mit Gehäuselüfter-Steuerung, J2-RGB-Ausgang und S/P-DIF optisch * AtmoLight "Triple" (<^>)

  • Für die erste serielle Schnittstelle mit 9600 8N1 wäre das

    Zitat

    stty -F /dev/ttyS0 9600 -parenb cs8 -cstopb


    sichtbar mit

    Zitat

    stty -F /dev/ttyS0


    und wenn Du mit "t" die Temperatur zurückbekommen willst, dann müsste das mit

    Zitat

    chat -v -s -S -t3 '' t >/dev/ttyS0 </dev/ttyS0

    gehen.
    Achtung, das sind zwei einzelne ' !


    Alle ohne Gewähr: ich kann's gerade nicht ausprobieren und das ist bei mir schon so lange her ... unglaublich, was man in zwei Jahren alles vergessen kann. Ich habe damals mein "Microlink Office" gescriptet, weil's für Linux kein Programm dafür gab.


    Und wenn Du's interaktiv magst, dann nimm' einfach minicom. Das ist vergleichbar mit der DOS-Version von Telix - falls die noch jemand kennt. Nur Scripten kann man mit minicom nicht so schön.


    uwe

    server: yavdr trusty testing, 2 * L5420, 32GB, 64TB RAID6 an OctopusNet (DVBS2- 8 ) + minisatip@dsi400 (DVBS2- 4 )
    frontends: kodi und xine

  • Code
    easyVDR:~# stty -F /dev/ttyS0 9600 -parenb cs8 -cstopb
    stty: /dev/ttyS0: Datei oder Verzeichnis nicht gefunden


    und wat nu?


    habs auch schon mit ttys0 und ttyS1 probiert, bei ttys0 sagt er mir "Eingabe-/Ausgabefehler"


    bin ratlos... die schnittstelle gibts, lirc hat auch funktioniert... (hängt aber jetzt an der DVB mit remote-plugin)
    muss ich da vielleicht was abschalten, dass lirc die schnittstelle noch blockiert oder so?

    Aktueller Stand:
    Gehäuse: Yang-IT A211 * EPIA LN10000EG 1GHz-C7 + 1GB DDR2-RAM * 20GB Notebook-Platte PATA * 250GB WD-Platte Caviar 2500AAJS SATA * LG GSA-H62N DVD-Brenner SATA * TT 1.5-FF-Karte * easyVDR 0.6.2
    Eigenbau-IR-Einschalter nach Atric mit Gehäuselüfter-Steuerung, J2-RGB-Ausgang und S/P-DIF optisch * AtmoLight "Triple" (<^>)

  • hi,
    wenn du auf manifest gehst und dich dann durchklickst bekommst du unter tools/picctldisplaytest eine datei namens picctldisplaytest.cpp.
    im prinzip macht es das gleiche: sendet und empfängt kommandos. allerdings kein ascii sondern hex. aber das solltest du per copy&paste hacken können. ich kann auch net wirklich programmieren, aber wenn du es schaffst deinen controller zu programmieren, sollte das doch auch irgendwie klappen.

  • Mach mal ein

    Zitat

    find /dev -name ttyS0

    es kann sein, dass das unter .static liegt.


    uwe

    server: yavdr trusty testing, 2 * L5420, 32GB, 64TB RAID6 an OctopusNet (DVBS2- 8 ) + minisatip@dsi400 (DVBS2- 4 )
    frontends: kodi und xine

  • ich fang an, mich langsam zu wundern... was is denn los mit meiner maschine...?!
    das device liegt scheinbar unter .static:

    Code
    easyVDR:/# find /dev -name ttyS0
    /dev/.static/dev/.static/dev/ttyS0
    /dev/.static/dev/.static/dev/.static/dev/ttyS0
    /dev/.static/dev/.static/dev/.static/dev/.static/dev/ttyS0
    /dev/.static/dev/.static/dev/.static/dev/.static/dev/.static/dev/ttyS0
    /dev/.static/dev/.static/dev/.static/dev/.static/dev/.static/dev/.static/dev/.static/dev/ttyS0
    /dev/.static/dev/.static/dev/.static/dev/.static/dev/.static/dev/.static/dev/ttyS0


    funktioniert aber deswegen trotzdem net wirklich:

    Code
    easyVDR:/# stty -F /dev/.static/dev/.static/dev/ttyS0 9600 -parenb cs8 -cstopb
    stty: /dev/.static/dev/.static/dev/ttyS0: Kein passendes Gerät bzw. keine passende Adresse gefunden
    easyVDR:/# stty -F /dev/.static/dev/.static/dev/.static/dev/ttyS0 9600 -parenb cs8 -cstopb
    stty: /dev/.static/dev/.static/dev/.static/dev/ttyS0: Kein passendes Gerät bzw. keine passende Adresse gefunden


    slime: ich habs gefunden, aber ich glaub du hast mich falsch verstanden, ich möchte mir net selber ein terminal-programm schreiben, sondern des ganze von der konsole aus machen, so wie der uwe des grad versucht mir nahezubringen. nur dass halt meine schnittstelle noch rumzickt...


    bambi

    Aktueller Stand:
    Gehäuse: Yang-IT A211 * EPIA LN10000EG 1GHz-C7 + 1GB DDR2-RAM * 20GB Notebook-Platte PATA * 250GB WD-Platte Caviar 2500AAJS SATA * LG GSA-H62N DVD-Brenner SATA * TT 1.5-FF-Karte * easyVDR 0.6.2
    Eigenbau-IR-Einschalter nach Atric mit Gehäuselüfter-Steuerung, J2-RGB-Ausgang und S/P-DIF optisch * AtmoLight "Triple" (<^>)

    Einmal editiert, zuletzt von Bambi ()

  • Fangen wir doch mal von vorne an:

    Zitat

    dmesg | grep ttyS


    sollte sowas zeigen wie

    Zitat

    serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
    00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A



    Das Devicefile sollte in etwa so aussehen (abgesehen vom Pfad)

    Zitat

    amerika:/video# ls -al /dev/ttyS0
    crw-rw---- 1 root dialout 4, 64 2008-03-05 11:39 /dev/ttyS0
    amerika:/video#


    also die major und minor sollten übereinstimmen. Schreib-/Leserechte für den aktuellen Benutzer sind nie verkehrt :) .


    Dann könnte noch sein, dass schon ein anderes Programm auf dem Device sitzt, das bekommt man mit "lsof" relativ gut raus:

    Zitat

    amerika:/video# lsof /dev/ttyS0
    COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
    minicom 4573 root 3u CHR 4,64 1563 /dev/ttyS0
    amerika:/video#


    Wenn lsof nichts findet, umso besser. Aber dann sollte es eigentlich auch funktionieren.


    uwe

    server: yavdr trusty testing, 2 * L5420, 32GB, 64TB RAID6 an OctopusNet (DVBS2- 8 ) + minisatip@dsi400 (DVBS2- 4 )
    frontends: kodi und xine

  • ok, hab ich alles probiert... dmesg gibt mir gar nix raus, wenn ich statt ttyS nur tty eingebe folgendes:

    Code
    usb 3-1: ark3116 converter now attached to ttyUSB0
     [<c04147f7>] tty_default_put_char+0x17/0x20
     [<c041a265>] n_tty_receive_buf+0x6c5/0x1150
     [<c0419ba0>] n_tty_receive_buf+0x0/0x1150


    aber das ist ja mein USB-seriell-konverter, mit dem hab ichs grad probiert, und mit dem funktionierts (btw: wie beendet man minicom??)


    weiter im programm:
    "ls -al /dev/.static/dev/.static/dev/ttyS0" liefert dieses:

    Code
    crw-rw-rw- 1 root tty 4, 64 2007-06-27 23:41 /dev/.static/dev/.static/dev/ttyS0


    und lsof sagt gar nix, also des is ja positiv... aber warum steht bei dmesg nix drin...??? bin verwirrt, gibts meinen COM jetzt oder nicht...?
    notlösung: für die lüftersteuerung auch einen USB-seriell-wandler bauen, fürs atmolight nehm ich einen solchen auf jeden fall. das wäre aber mit kanonen auf spatzen schießen, weil so unglaublich oft brauch ich das ding auch wieder nicht.


    vorhaben für heute auf eis gelegt, morgen gehts weiter... danke für eure hilfe!


    ps: was mir grad so einfällt: wo kann ich denn einstellen, in welchem verzeichnis die konsole startet, wenn ich mit putty reingeh, weil ich bin dann immer in "/root" und möcht eigentlich lieber ins wurzelverzeichnis



    gruß bambi

    Aktueller Stand:
    Gehäuse: Yang-IT A211 * EPIA LN10000EG 1GHz-C7 + 1GB DDR2-RAM * 20GB Notebook-Platte PATA * 250GB WD-Platte Caviar 2500AAJS SATA * LG GSA-H62N DVD-Brenner SATA * TT 1.5-FF-Karte * easyVDR 0.6.2
    Eigenbau-IR-Einschalter nach Atric mit Gehäuselüfter-Steuerung, J2-RGB-Ausgang und S/P-DIF optisch * AtmoLight "Triple" (<^>)

  • ah okay. ich dachte, das picctldisplaytest könnte ganz hilfreich sein. schliesslich ist das ja auch nix anderes als ein programm das auf der seriellen schnittstelle rummacht.


    bei mir sieht das im dmesg ausserdem so aus:

    Code
    serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A


    geladen habe ich an modulen:
    * 8250_pci
    * 8250
    * serial_core


    per default ist das normalerweise aber in den kernel eincompiliert.


    du landest nach einem login immer in $HOME. das steht in der /etc/passwd drin. beim user root ist das halt /root.
    du kannst dir aber auch ans ende deiner .bashrc ein 'cd /' reinbauen.

  • Ich würde mal frech behaupten, hinter ttyS0 sitzt kein Treiber. Entweder weil er nicht geladen ist, oder weil die Schnittstelle abgeschaltet ist.


    Je nach Setting wird minicom mit Ctrl-A x oder Alt-x beendet.


    uwe

    server: yavdr trusty testing, 2 * L5420, 32GB, 64TB RAID6 an OctopusNet (DVBS2- 8 ) + minisatip@dsi400 (DVBS2- 4 )
    frontends: kodi und xine

Jetzt mitmachen!

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