Forum: PC-Programmierung Server fuer HTTP ueber serielle Schnittstelle


von rene (Gast)


Lesenswert?

Ich moechte gerne HTTP ueber eine serielle Schnittstelle senden und 
sollte dafuer was schreiben. Ein (noch zu bauendes) externes Device hat 
ein softwaremaessiges Webinterface auf der seriellen Schnittstelle. Das 
zu schreibende Stueck Software fuer den PC sollte nun die URL irgendwie 
uebernehmen und auf die serielle Schnittstelle tun, da kommt dann die 
webseite als ASCII zurueck. Das Ansprechen der seriellen Schnittstelle 
ist kein Problem. Wie schaffe ich es nun, dass der Browser mit meinem 
Programm spricht. Er muss sich wie ein Proxy verhalten. Ich kann einen 
Server auf port 8080 legen, diesen Server als proxy im browser eintragen 
und dann die Anfragen filtern. Was mit "Serial:///" anfaengt wird auf 
die Serielle Schnittstelle getan, der Rest weitergeleitet und  normal 
bearbeitet,  Ist das eine machbare loesung ?

rene

von Frank (Gast)


Lesenswert?

Wenn ich mich recht erinnere gibts sowas schon. Google mal nach dem SLIP 
Protokoll. Oder hab ich die Frage falsch verstanden?

bye

Frank

von rene (Gast)


Lesenswert?

Danke, die Frage war, wie ich einen normalen Browser, der auch Internet 
(zB ueber LAN) kann dazu bringen kann auf mein Device am serielle port 
zuzugreifen. Nix mit DFUe. und Modem. Die eingegebene URL muss sich 
natuerlkich unterscheiden, wie fuer ein lokale file ja auch, welches mit 
"file:///" beginnt. Eine IP hab ich nicht fuer mein device, dh ein DNS 
lookup wird nicht benoetigt.

rene

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nö, so etwas gibt es nicht bzw. Du müsstest einen Browser um 
erforderliche zusätzliche Protokolle erweitern. Lässt sich sicherlich 
machen, die Mozilla-Sourcen sind ja frei verfügbar, halte ich aber für 
... aufwendig.

Sinnvoll ist hier in der Tat die Implementierung eines IP-Stacks auf dem 
Gerät, der entweder per SLIP oder PPP angesprochen werden kann - dann 
musst Du zwar Deinem Device eine IP-Adresse zuweisen (und der darin 
enthaltene PPP-Server Deinem Computer auch eine), die aber kann 
problemlos aus einem nicht routbaren Subnet 192.168.xxx.xxx entnommen 
werden.

Diese Vorgehensweise ist durchaus üblich; die meisten Miniaturwebserver 
auf PICs, AVRs und anderen Microcontrollern arbeiten genau so (sofern 
nicht ein Ethernet-NIC angeschlossen ist).

von Feadi (Gast)


Lesenswert?

Das Problem ist ganz einfach lösbar, man braucht nur ein TCP Socket 
öffnen und die Daten an die serielle Schnittstelle weiterleiten. Im 
Browser muss man dann sowas wie z.B. "http://localhost:1234"; eingeben. 
Mit einem Portforward im Router geht das sogar ins Internet.

von rene (Gast)


Lesenswert?

Danke, nein, ein IP Stack auf der Hardware ist weder sinnvoll noch 
noetig, das dort keine Ethernet Schnittstelle implementiert ist. Ein PPP 
oder Slip waere dann als DFU zu installieren, was mit einer gewissen 
Wahrscheinlichkeit Administratorrechte braucht. Ein Server auf dem PC, 
der von HTTP auf Seriell umsetzt waere akzeptabel und sollte viel 
einfacher sein. Nun muss man diesen Server dem Browser unterschieben. 
Diese Loesung ist als Alternative zu einem Custom GUI fuer das Device 
gedacht.

rene

von rene (Gast)


Lesenswert?

Feadi,
vielen Dank, das kommt etwa hin. Das werd ich mal probieren.

rene

von andreas kasper (Gast)


Lesenswert?

hallo

würde mich interessieren ob du unter windows oder unter linux 
entwickelst.

lg
andi

von rene (Gast)


Lesenswert?

Windows. Ich nehm die HTTPServerSockets von Indy. Die kommen etwa hin. 
Aeh ja, unter Delphi7.

rene

von rene (Gast)


Lesenswert?

Ich komm gut voran. Zur Zeit lerne ich Javascript fuer Eingaben. Der PC 
redet ASCII mit dem Device. HTML-ASCII. Ist schon ein Unterschied wenn 
man vorher ein binaeres Protokol mit CRC hatte. Mit der neuen Loesung 
gehen kilobytes fuer eine Seite drauf. Aber wenn der Kunde das so 
will...

rene

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.