Forum: PC-Programmierung com schnittstelle bei Linux eine IP-Adresse verpassen


von Avr N. (avrnix) Benutzerseite


Lesenswert?

Kann man bei Linux eine serielle Schnittstelle eine IP verpassen?
Und wenn ja, wie?
Vielleicht weire Infos?

Hintergrund:

Wollte gern über µC eine HTML-Seite über z.B. /dev/ttyS0 Ausgeben und 
auf dem Webbrowser anzeigen lassen. Allso  http://192.168.0.20
Dann wird die Schnittstelle abgefragt und die daten kommen dann vom µC.

Geht das ?

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

du könntest das über ein CGI lösen was auch das einfachste sein dürfte.

Matthias

von Ulrich (Gast)


Lesenswert?

eventuell com2tcp ???

von Ulrich (Gast)


Lesenswert?

sorry das ist ein wondows Projekt....

von Zacc (Gast)


Lesenswert?

Ein kleines Serverprograemmchen kann das machen.

z

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@Ulrich: Ist doch eine Idee :-) Windows habe ich auch - braucht da noch 
was dazu?

@Zacc: Was für ein Serverprogrämmchen meinst du ?
Ein Script der als Daemon gestartet wird im TCP-Wrapper?
Wie läuft dann die IP-Bindung zur Seriellen Schnittstelle?

@Mattias : Auch gute Idee , wollte lieber eine IP nehmen wenn es möglich 
ist
du meist das CGI Script gibt dann eine Anforderung am µC weiter , 
welcher dann die Daten zurück gibt?

von Stefan M. (Gast)


Lesenswert?

Schau dir mal das Serial Line Internet Protocol (kurz SLIP) an. 
Vielleicht ist das das was du suchst!?

von guro (Gast)


Lesenswert?

oder der 'normale' weg über eine dfü-verbindung: 
tcp<->ppp<->rs232~~~~rs232<->ppp<->tcp
brauchst natürlich dann auch ppp und tcp auf dem µC

von A.K. (Gast)


Lesenswert?

Wenn du dem Controller partout ein TCP/IP verpassen willst, dann ganz 
normal per SLIP oder PPP.

Wenn es nur darum geht, dass er scheinbar eine eigene IP-Adresse hat, 
dann kannst du auch einen virtuellen Webserver auf einem IP-Alias auf 
der Linux-Maschine laufen lassen, und dahinter ein CGI verbergen. 
Erspart das TCP/IP auf dem Controller.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Ok -Danke euch sehr - Werde es mal mit einen CGI versuchen.
Wenn einer noch eine Idee hat kann er es noch Kund tun.

Hatte nicht vor einen TCP/IP Stack im µC einzubauen, da hätte ich ja 
gleich einen Webserver auf µC nehmen können.

Jungs - bei euch lernt man nie aus ! Danke

von selbsteinbasteler (Gast)


Lesenswert?

bei linux gibt es ein Programm slattach, das alles füer eine serielle 
TCP-verbindung zur verfügung stellt.
ist aber dann ein kompletter LAN-Portnur sehr langsam da über seriell

von Zacc (Gast)


Lesenswert?

Man muesste meines Erachtens am Besten selbst was schreiben wenn's nur 
darum geht, dass der Controller einen ASCII bandwurm schickken kann, der 
dann als HTML page im browser erscheinen kann. Man muesste die HTTPGet 
anfragen ueber die serielle Schnittstelle schicken, zurueck kommt 
jeweils eine Seite. Das Prograemmchen haette ein TCP Port, zB 1234 und 
der Browser wuerde mit localhost:1234/index.html, dieses Prograemmchen 
nach der Seite index.html fragen. Das Prograemmchen waere demnach ein 
Portserver.
Etwas in dieser Richtung ?

Z

von Peter D. (peda)


Lesenswert?

Avr Nix wrote:
> Kann man bei Linux eine serielle Schnittstelle eine IP verpassen?


Ich sach ma, das ist vollkommen egal, ob Linux, DOS oder Windows.

Die UART ist nur ne pure Byte-Schubser Schnittstelle ganz ohne 
Protokoll, der kannst Du nix zuweisen (außer die Baudrate).

Du mußt entweder auf dem MC einen Server einrichten, der den ganzen 
Protokoll-Schrunz inclusive IP macht oder auf dem PC.


Deshalb wird auch die UART so gerne von Anfängern benutzt, weil sie 
keinerlei Protokoll-Overhead hat im  Gegensatz zu Ethernet oder USB.
Einfach ranstöpseln, Terminalprogramm starten und fertich.


Peter

von Unbekannter (Gast)


Lesenswert?

Also, was Du suchst nennt sich "netcat".

Kleines Shell-Script ringsrum das die serielle Schnittstelle öffnet und 
stdin/stdout von Netcat mit der seriellen Schnittstelle verbindet.

Netcat öffnet dann einen TCP-Port und gibt den Datenverkehr über 
stdin/stdout aus. Die sind aber mit der seriellen Schnittstelle 
verbunden. Also das was Du willst.

Sollte out-of-the-box gehen.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@Zacc: ja in dieser Richtung geht das HTML wird quasi auf den µC erzeugt 
und über die Serielle Schnittstelle geschickt. HTTPGet ? Ist das nicht 
vom HTT Protokoll eine Abfrage der IP? Wie soll das Funktionieren?

@all
Wenn ich diese IP eingebe soll dann entsprechend die Seite angezeigt 
werden.

Klappt das dann auch mit Netcat die Serielle Schnittstelle abfrage, da 
kenne ich noch nicht.

Browser <-- IP-ADR <-- Netcat <-- ttyS0

Es soll keine Termialanwendung werden, sondern über den Browser 
Funktionieren.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Schreib folgendes Programm:
1) akzeptiere TCP-Verdindung
2) lies bis "\r\n\r\n" (Ende der Browser-Anfrage)
3) sende "HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n"
4) lies aus /dev/ttyS0 bis "</html>"
5) sende die gelesenen Daten
6) schließe Verbindung

Beispiel (Ruby):
1
require 'socket'
2
3
server = TCPServer.new(8000)
4
5
while s = server.accept
6
  s.gets("\r\n\r\n")
7
  s.write("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n")
8
  s.write(File.open('/dev/ttyS0').gets('</html>'))
9
  s.close
10
end

von guro (Gast)


Lesenswert?

> Deshalb wird auch die UART so gerne von Anfängern benutzt, weil sie
> keinerlei Protokoll-Overhead hat im  Gegensatz zu Ethernet..

bei ethernet braucht man im einfachsten fall auch kein protokoll, 
sondern kann rohdaten senden und empfangen

> ja in dieser Richtung geht das HTML wird quasi auf den µC erzeugt
> und über die Serielle Schnittstelle geschickt. HTTPGet ? Ist das nicht
> vom HTT Protokoll eine Abfrage der IP? Wie soll das Funktionieren?

wenn du auf tcp und ppp oder slip verzichten willst, dann brauchst du 
aber mindestens HTTP auf dem µC, denn irgendwie muss der PC die seiten 
ja anfordern und vielleicht was zurückschicken.

wenn du eine seite mit frames oder bildern o.ä hast, dann musst du auch 
noch mehrere simultane connections handlen, denn ein browser holt sich 
das zeug meistens parallel.

wenn der µC nicht zu klein ist, dann würde ich ihm die volle packung, 
also ppp/tcp/http verpassen. der vorteil dabei ist, dass es dann keine 
rolle spielt, ob du auf dem PC linux, windoofs, mac-os, bsd oder 
sonstwas verwendest und welchen browser du benutzt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.