Forum: Mikrocontroller und Digitale Elektronik Serielle Schnittstelle mit Webinterface verknüpfen


von bass (Gast)


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!

von Peter II (Gast)


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.

von Pandur S. (jetztnicht)


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.

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


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

von ..,- (Gast)


Lesenswert?

Python/Django ... ein/zwei Klick ... fertig.

von bass (Gast)


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 ?

von Peter II (Gast)


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.

von ..,- (Gast)


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.

von bass (Gast)


Lesenswert?

Vielen Dank werden ich mir ansehen!!!

von lol (Gast)


Lesenswert?

PHP ist aber auch nicht zu verachten!

von temp (Gast)


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.

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.