www.mikrocontroller.net

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


Autor: Avr Nix (avrnix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

Matthias

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eventuell com2tcp ???

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry das ist ein wondows Projekt....

Autor: Zacc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein kleines Serverprograemmchen kann das machen.

z

Autor: Avr Nix (avrnix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stefan M. (Gast)
Datum:

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

Autor: guro (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Avr Nix (avrnix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: selbsteinbasteler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Zacc (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Avr Nix (avrnix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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):
require 'socket'

server = TCPServer.new(8000)

while s = server.accept
  s.gets("\r\n\r\n")
  s.write("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n")
  s.write(File.open('/dev/ttyS0').gets('</html>'))
  s.close
end

Autor: guro (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.