RS232 über Webinterface

Nico84

Neuer User
Mitglied seit
27 Sep 2011
Beiträge
42
Punkte für Reaktionen
0
Punkte
0
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 ?
 

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
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.
 

princenewton007

Mitglied
Mitglied seit
23 Aug 2008
Beiträge
322
Punkte für Reaktionen
0
Punkte
16
Zzottel steuert einen ATMega32 via Webinterface und PL-2303.
 

Nico84

Neuer User
Mitglied seit
27 Sep 2011
Beiträge
42
Punkte für Reaktionen
0
Punkte
0
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 "("
 

Nico84

Neuer User
Mitglied seit
27 Sep 2011
Beiträge
42
Punkte für Reaktionen
0
Punkte
0
Kann es sein das die "Fritz!Relay (Executable for FB 7170)" garnicht kompiliert ist?
 

stan23

Neuer User
Mitglied seit
4 Sep 2010
Beiträge
63
Punkte für Reaktionen
0
Punkte
0
Richtig, beide Downloads bringen nur den Sourcecode. Entweder selber kompilieren, oder beim Autor anfragen...
 

sf3978

IPPF-Promi
Mitglied seit
2 Dez 2007
Beiträge
7,853
Punkte für Reaktionen
14
Punkte
38
Kann es sein das die "Fritz!Relay (Executable for FB 7170)" garnicht kompiliert ist?
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  "[email protected]"  || { 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:
[email protected]:/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:
[email protected]:/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

Nico84

Neuer User
Mitglied seit
27 Sep 2011
Beiträge
42
Punkte für Reaktionen
0
Punkte
0
Danke, ich bekomme immer

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

Habs allerdings mit dem stable 1.2 versucht.
 

sf3978

IPPF-Promi
Mitglied seit
2 Dez 2007
Beiträge
7,853
Punkte für Reaktionen
14
Punkte
38

Nico84

Neuer User
Mitglied seit
27 Sep 2011
Beiträge
42
Punkte für Reaktionen
0
Punkte
0
Ok, werde ich nachher mal probieren.

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

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
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".
 

Nico84

Neuer User
Mitglied seit
27 Sep 2011
Beiträge
42
Punkte für Reaktionen
0
Punkte
0
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.
 

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
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.
 

sf3978

IPPF-Promi
Mitglied seit
2 Dez 2007
Beiträge
7,853
Punkte für Reaktionen
14
Punkte
38

Nico84

Neuer User
Mitglied seit
27 Sep 2011
Beiträge
42
Punkte für Reaktionen
0
Punkte
0
Einfacher als das Programm von Zzottel auf meine Zwecke anzupassen.
 

sf3978

IPPF-Promi
Mitglied seit
2 Dez 2007
Beiträge
7,853
Punkte für Reaktionen
14
Punkte
38

Nico84

Neuer User
Mitglied seit
27 Sep 2011
Beiträge
42
Punkte für Reaktionen
0
Punkte
0
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)
 

Nico84

Neuer User
Mitglied seit
27 Sep 2011
Beiträge
42
Punkte für Reaktionen
0
Punkte
0
eigentlich ja, sonst würde die andre Datei ja nicht laufen? Die Rechte beider Dateien sind gleich. lighttpd läuft unter wwwrun