Serielle Schnittstelle mit Webinterface verknüpfen

Gast #4283437
Lesenswert?
• ▲
▼
Hallo,

ich habe eine softwaretechnische Frage und hoffe ich bin hier richtig.

Ich würde gern Daten die über eine serielle Schnittstelle ankommen zum 
einen in einer selbst programmierten Software darstellen (das bekomme 
ich wohl hin) und zum anderen in einem Web-Interface, eventuell auch nur 
in einem Web-Interface. Meine frage ist nun in welcher Sprache und/oder 
wie programmiere ich das und wie greife ich mit dem Web-Interface auf 
die serielle Schnittstelle zu?

Ich kenne mich recht gut mit C und C# aus habe sonst aber noch nicht 
groß an Homepages oder ähnlichem gearbeitet. Natürlich erwarte ich 
keinen Quellcode der mir hier zu Verfügung gestellt wird sondern nur ein 
paar theoretische Lösungsansätze bzw. Vorgehensweisen.

Vielen Dank im Voraus!
Gast #4283441
Lesenswert?
• ▲
▼
mit C# kannst du einen webservice schreiben. Dies ist dann ein Programm 
was innerhalb eines Webservers läuft und dort kann man ganz normal auf 
die Serielle Schnittstelle zugreifen und als Output musst du halt html 
generieren.

Oder die schreibst mit C# einen Dienst (Windows-Service) und stellt 
damit einen Webserver bereit. In Prinzip das gleiche wie oben nur das du 
dann keinen IIS brauchst.
#4283457
Lesenswert?
• ▲
▼
Das Webinterface moechte HTTP, also muss die Quelle HTTP koennen. Falls 
das nicht geht, muss man einen Umsetzer schreiben, der die Kommunikation 
macht und einen Websocket zur Verfuegung stellt.

So einen Umsetzer zu schreiben ist eine groessere Sache. Auch fuer den 
Client, dh den PC. Fuer einen Server PC eher nicht machbar.

Wenn man ein neues Geraet entwickelt, welches ein webbasiertes Interface 
haben soll, sollte man dem Geraet auch gleich HTTP beibringen.
(Firma: Torrox.de) #4283505
Lesenswert?
• ▲
▼
Also, wenn ich das lösen müsste, würde ich einen Sioux (open source HTTP 
Server) nehmen (https://github.com/TorstenRobitzki/Sioux). Der kann 
comet, damit kannst Du dann angeschlossene Browser live mit 
hereintrudelnden Daten versorgen. Ist allerdings C++.

Sioux nutzt eh schon Boost.asio und Asio kann auch serielle 
Schnittstellen lesen.

Die Web-Seite wäre dann entweder statisches HTML plus ein bisschen 
JavaScript, oder wenn es komplizierter sein muss, würde auch Ruby on 
Rails gehen.

mfg Torsten
Gast #4284919
Lesenswert?
• ▲
▼
Und wenn ich das ganze auf dem Raspberry Pi 2 laufen lasse? Gibt es da 
Probleme?

Also die Daten sollen an der seriellen Schnittstelle des Pi's ausgelesen 
werden und dann online angezeigt werden. Kann man das auch mit asp.net 
realisieren ?
Gast #4284923
Lesenswert?
• ▲
▼
bass schrieb:
> Und wenn ich das ganze auf dem Raspberry Pi 2 laufen lasse? Gibt es da
> Probleme?
>
> Also die Daten sollen an der seriellen Schnittstelle des Pi's ausgelesen
> werden und dann online angezeigt werden. Kann man das auch mit asp.net
> realisieren ?

ja, sollte unter mono (.net for Linux) laufen.
Gast #4284999
Lesenswert?
• ▲
▼
bass schrieb:
> Und wenn ich das ganze auf dem Raspberry Pi 2 laufen lasse? Gibt es da
> Probleme?
>
> Also die Daten sollen an der seriellen Schnittstelle des Pi's ausgelesen
> werden und dann online angezeigt werden. Kann man das auch mit asp.net
> realisieren ?

Ganz ehrlich ... guck dir bitte Django/Python/PySerial oder 
Node.js/node-serialport an.

Du hast mit Node oder Django so beängstigend schnell einen Server 
"online" um erstmal was am zu am laufen zu haben. Und die Anbindung an 
deinen SerialPort bekommst du auch mit wenig Aufwand hin.

Und tonnenweise Beispiele findest du obendrein.

Okay, ich kenne das von den anderen genannte Zeug nicht, aber noch 
einfacher und schneller als das mit Node/Django zu realiseren kann ich 
mir nur schwer vorstellen.
Gast #4287245
Lesenswert?
• ▲
▼
..,- schrieb:
> Ganz ehrlich ... guck dir bitte Django/Python/PySerial oder
> Node.js/node-serialport an.
>
> Du hast mit Node oder Django so beängstigend schnell einen Server
> "online" um erstmal was am zu am laufen zu haben. Und die Anbindung an
> deinen SerialPort bekommst du auch mit wenig Aufwand hin.

Egal was du nimmst, trenne die Daten vom html-Code. Für so was ist JSON 
und Ajax das Mittel der Wahl. Zu klären wäre aber erst mal, ob die 
seriellen Daten mit dem Request synchron geholt werden oder ob das 2 
Paar Schuhe sind. Wenn das asynchron kommt, dann musst du entweder im 
Speicher oder auf Platte den aktuellen Zustand vorhalten, und beim 
http-Request diesen Zustand ausliefern. Das sind in Json nur ganz wenig 
Daten und du brauchst dir um den ganzen html-Kram an dieser Stelle keine 
Gedanken machen.
In der Regel hat man schon eine http-Server Umgebung. Alles was 
sicherheitsrelevant ist kann da verbleiben. Dieser Server kann dann alle 
html-Seiten, Bilder u.s.w. ausliefern. Für die paar Byte reinen Daten 
macht dieser Server dann einen Request zu dem o.g. Servern oder liest 
sich die Daten nur von der Platte. Auf alle Fälle besser als einen 
nodejs oder Python-Server direkt online in die Welt zu stellen.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.