.titleBar { margin-bottom: 5px!important; }

RS232 über Webinterface

Dieses Thema im Forum "Freetz" wurde erstellt von Nico84, 29 Sep. 2011.

  1. Nico84

    Nico84 Neuer User

    Registriert seit:
    27 Sep. 2011
    Beiträge:
    42
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Student
    Hallo.

    Ist es möglich über ein Webserver auf der Box etwas auf der seriellen Schnittstelle aus zu geben?

    Z.b. Ich klicke einen Button und gebe ein Byte aus. An der Schnittstelle soll ein µC hängen und weitere Aufgaben ausführen. Die Sache des µC ist kein Problem für mich, nur wie läuft die Sache mit dem Webserver <-> RS232 ?
     
  2. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Mit Freetz ist das so nicht möglich.

    Es steht Dir aber frei, selbst etwas in der Richtung zu programmieren. Das hat aber mit Freetz nichts zu tun.
     
  3. princenewton007

    princenewton007 Mitglied

    Registriert seit:
    23 Aug. 2008
    Beiträge:
    313
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Zzottel steuert einen ATMega32 via Webinterface und PL-2303.
     
  4. Nico84

    Nico84 Neuer User

    Registriert seit:
    27 Sep. 2011
    Beiträge:
    42
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Student
    Das hört sich interessant an. Aber irgendwie will es bei mir immer nicht. Ich bekomme immer:
    Code:
    ./Fritz!Relay: line 1: /bin: Permission denied
    ./Fritz!Relay: line 2: Program:: not found
    ./Fritz!Relay: line 3: syntax error: unexpected "("
    
     
  5. Nico84

    Nico84 Neuer User

    Registriert seit:
    27 Sep. 2011
    Beiträge:
    42
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Student
    Kann es sein das die "Fritz!Relay (Executable for FB 7170)" garnicht kompiliert ist?
     
  6. stan23

    stan23 Neuer User

    Registriert seit:
    4 Sep. 2010
    Beiträge:
    63
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Specialist Mobile Power Management
    Ort:
    Beilngries
    Richtig, beide Downloads bringen nur den Sourcecode. Entweder selber kompilieren, oder beim Autor anfragen...
     
  7. sf3978

    sf3978 IPPF-Promi

    Registriert seit:
    2 Dez. 2007
    Beiträge:
    7,657
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Mit dem Paket (Patch) aus dem Anhang, kannst Du Fritz!Relay (mit Freetz) für deine Box kompilieren:
    Code:
    :~/myfreetz/freetz7293/freetz-trunk> [B]make fritzrelay-precompiled[/B]
    ---> package/fritzrelay: preparing... mkdir -p source/target-mipsel_uClibc-0.9.29/fritzrelay-0.1
    cp -a make/fritzrelay/src/fritzrelay.c make/fritzrelay/src/Makefile source/target-mipsel_uClibc-0.9.29/fritzrelay-0.1
    cmd() { PATH="/home/gm/myfreetz/freetz7293/freetz-trunk/toolchain/build/mipsel_gcc-4.4.6_uClibc-0.9.29/mipsel-linux-uclibc/bin:/home/gm/myfreetz/freetz7293/freetz-trunk/toolchain/build/mipsel_gcc-3.4.6/mipsel-unknown-linux-gnu/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/opt/cross/bin" LD_RUN_PATH="/usr/lib/freetz" make -j2  "$@"  || { printf "\n\\033[33m%s\\033[m\n" "ERROR: Build failed.";  exit 1; } };         if [ -e source/.echo_item_start -a ! -e source/.echo_item_build ]; then echo -n "building... "; touch source/.echo_item_build; fi; cmd -C source/target-mipsel_uClibc-0.9.29/fritzrelay-0.1 \
                    CC="/home/gm/myfreetz/freetz7293/freetz-trunk/toolchain/build/mipsel_gcc-4.4.6_uClibc-0.9.29/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc" \
                    CFLAGS="-march=4kc -Os -pipe -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
    building... make[1]: Entering directory `/home/gm/myfreetz/freetz7293/freetz-trunk/source/target-mipsel_uClibc-0.9.29/fritzrelay-0.1'
    /home/gm/myfreetz/freetz7293/freetz-trunk/toolchain/build/mipsel_gcc-4.4.6_uClibc-0.9.29/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc -march=4kc -Os -pipe -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o fritzrelay fritzrelay.c
    make[1]: Leaving directory `/home/gm/myfreetz/freetz7293/freetz-trunk/source/target-mipsel_uClibc-0.9.29/fritzrelay-0.1'
    mkdir -p packages/target-mipsel_uClibc-0.9.29/fritzrelay-0.1/root/usr/bin/; cp source/target-mipsel_uClibc-0.9.29/fritzrelay-0.1/fritzrelay packages/target-mipsel_uClibc-0.9.29/fritzrelay-0.1/root/usr/bin/fritzrelay; /home/gm/myfreetz/freetz7293/freetz-trunk/toolchain/build/mipsel_gcc-4.4.6_uClibc-0.9.29/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-strip --remove-section={.comment,.note,.pdr} packages/target-mipsel_uClibc-0.9.29/fritzrelay-0.1/root/usr/bin/fritzrelay;
    [COLOR=red]done[/COLOR].
    Code:
    :~/myfreetz/freetz7293/freetz-trunk>[B] file[/B] packages/target-mipsel_uClibc-0.9.29/fritzrelay-0.1/root/usr/bin/fritzrelay
    packages/target-mipsel_uClibc-0.9.29/fritzrelay-0.1/root/usr/bin/fritzrelay: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), with unknown capability 0xf41 = 0x756e6700, with unknown capability 0x70100 = 0x3040000, stripped
    Code:
    root@fritz:/var/media/ftp/uStor01/archiv# [B]ldd ./fritzrelay[/B]
            libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2aabe000)
            libc.so.0 => /lib/libc.so.0 (0x2aadc000)
            ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)
    Code:
    root@fritz:/var/media/ftp/uStor01/archiv# [COLOR=red]./fritzrelay -h[/COLOR]
    Fritz!Relay Server      www.zzottel.de  2009-04-11
    Usage: ./fritzrelay <serial port> <TCP-port>.
    Example: ./fritzrelay /dev/ttyUSB0 12345.
     

    Anhänge:

  8. Nico84

    Nico84 Neuer User

    Registriert seit:
    27 Sep. 2011
    Beiträge:
    42
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Student
    Danke, ich bekomme immer

    make: *** Keine Regel, um »fritzrelay-precompiled« zu erstellen. Schluss.

    Habs allerdings mit dem stable 1.2 versucht.
     
  9. sf3978

    sf3978 IPPF-Promi

    Registriert seit:
    2 Dez. 2007
    Beiträge:
    7,657
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Ja. Das Paket ist für den trunk. Für stable 1.2 musst Du das Paket anpassen.
     
  10. Nico84

    Nico84 Neuer User

    Registriert seit:
    27 Sep. 2011
    Beiträge:
    42
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Student
    Ok, werde ich nachher mal probieren.

    Kann ich nicht auch mit Perl auf die RS232 zugreifen? das wär doch einfacher?
     
  11. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Kannst Du das? Hast Du es schon mal versucht?
    Oder willst Du, dass jemand anders das für Dich tut?

    Kann jemand den Thread an eine passende Stelle verschieben? Etwas in der Art "Linux allgemein".
     
  12. Nico84

    Nico84 Neuer User

    Registriert seit:
    27 Sep. 2011
    Beiträge:
    42
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Student
    Wenn will ich das schon selber machen. Ich habe microperl mit lighttpd laufen. Nur weiß ich noch nicht so recht wie ich da die rs232 ansprechen soll.
     
  13. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Vermutlich über /dev/ttyUSB0.
    Wie man mit Perl die Parameter der seriellen Schnittstelle einstellt, musst Du selbst herausfinden.
    Vielleicht kannst Du auch mit stty vorab die Parameter einstellen und dann über Perl auf die Geräte-Datei zugreifen.
    Wenn das nicht geht, kannst Du mit stty die Parameter einstellen und die Datei offen halten.
     
  14. sf3978

    sf3978 IPPF-Promi

    Registriert seit:
    2 Dez. 2007
    Beiträge:
    7,657
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Einfacher als was?
     
  15. Nico84

    Nico84 Neuer User

    Registriert seit:
    27 Sep. 2011
    Beiträge:
    42
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Student
    Einfacher als das Programm von Zzottel auf meine Zwecke anzupassen.
     
  16. sf3978

    sf3978 IPPF-Promi

    Registriert seit:
    2 Dez. 2007
    Beiträge:
    7,657
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    OK, wenn Du noch den Quellcode von Zzottel anpassen musst, ... dann ja.
     
  17. Nico84

    Nico84 Neuer User

    Registriert seit:
    27 Sep. 2011
    Beiträge:
    42
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Student
    Ich habe mal folgendes probiert:

    Code:
    #!/usr/bin/perl  
    
    open (TXT, ">/dev/ttyUSB0");
    print TXT "Daten";
    close TXT;
    
    Nach Anregung von hier:
    http://www.mikrocontroller.net/articles/Serielle_Schnittstelle_unter_Perl

    führe ich das über Telnet aus, wird mir auch über die rs232 "Daten" ausgegeben. Rufe ich allerdings meine test.pl über den Browser auf bekomme ich ein:

    500 - Internal Server Error

    rufe ich eine andere pl Datei genauso auf:

    Code:
    #!/usr/bin/perl
    print "Content-type: text/plain\n\n";
    print "testing...\n";
    wird mir das im Browser auch angezeigt. Liegt der Fehler bei den Einstellungen des Webserver? (lighttpd)
     
  18. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hat der Benutzer, unter dem der Web-Server läuft, Zugriffsrechte auf die Datei?
     
  19. Nico84

    Nico84 Neuer User

    Registriert seit:
    27 Sep. 2011
    Beiträge:
    42
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Student
    eigentlich ja, sonst würde die andre Datei ja nicht laufen? Die Rechte beider Dateien sind gleich. lighttpd läuft unter wwwrun
     
  20. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich meinte die Datei /dev/ttyUSB0