Hallo allerseits! Ich bin dabei ein älteres Projekt zu modernisieren und möchte dazu Daten von meinem PC via Ethernet(HTTP Requests) an dem Matchport und dann seriell an einen Microcontroller(STM32) und vice versa senden. Zum Problem: Der Matchport empfängt den POST Request vom PC und leitet ihm auch seriell weiter jedoch ist es mir nicht gelungen auf den Request zu antworten. Testaufbau: PC1 <Ethernet> Matchport <Seriell> PC2(Terminal) Nachdem der Request abgesetzt wurde wartet PC1 auf die Response doch sobald ich vom Terminal etwas zurückschicken möchte wird die Verbindung abgebrochen. Gibt es da einen Header der mitgeschickt gehört? Danke im Vorraus!
Sry für die ungenaue Beschreibung. Es handelt sich um einen Matchport b/g (Lantronix).
Michse schrieb: > Gibt es da einen Header der mitgeschickt gehört? Den HTTP Response Header vielleicht? Also der Status sollte wenigsten am PC ankommen: "HTTP/1.1 200 OK" Optional weitere Headerzeilen. Nach einer Leerzeile folgt dann der eigentliche Inhalt. Was siehst Du denn von dem POST Request auf der seriellen Schnittstelle? Wenn der Anfang etwa so aussieht: "POST /xxx HTTP/1.1", dann mußt Du das HTTP-Protokoll wohl selber implementieren. https://tools.ietf.org/html/rfc7230 ff. Im Zweifelsfall nimm Wireshark o.ä. und schau Dir an was da tatsächlich hin- und hergeht.
Ich bin derzeit nicht daheim und hab keinen zugriff auf den genauen Wortlaut der ankommenden Message, aber sie sieht so aus wie du es beschreibst => POST /xxx HTTP/1.1 xxx bis zu dem Text den ich mitgesendet habe(Fürs senden verwende ich Postman). Zurück kommt aber nichts(Wireshark) und Postman "wartet" auf eine Antwort die niemals kommt.
Michse schrieb: > (Fürs senden verwende ich Postman) Das hier? https://www.getpostman.com/ An welche Portnummer sendest Du den Request? Die Standardports für die seriellen Interfaces des Matchport sind wohl 10001 & 10002.
Genau das verwende ich. Port ist 10001. Ich poste den kompletten Request sobald ich wieder darauf zugriff habe.
Als minimale Antwort sollte dann sowas reichen
1 | HTTP/1.1 200 OK<CR><LF> |
2 | Connection: close<CR><LF> |
3 | <CR><LF> |
4 | Hello World |
Du must bei Deinem Testaufbau also gegebenenfalls drauf achten, daß dein Terminal am seriellen Port CRLF als Zeilenende vervendet. Irgenwie müßtest Du danach auch noch die TCP-Verbindung trennen. Schöner wärs natürlich da noch ein paar weitere Header mitzusenden (z.B. "Content-Length", "Content-Type").
Danke für den Hinweis mit dem CRLF, jetzt kommt etwas vom Matchport zum PC(Mit Wireshark erfasst). Beim Request kommt im Terminal folgendes an: POST / HTTP/1.1 cache-control: no-cache Postman-Token: xxx Content-Type: text/plain User-Agent: PostmenRuntime/6.3.2 Accept: */* Host: xxx accept-encoding: gzip, deflate content-length: 15 Connection: keep-alive Hello World Die Verbindung ist offen und ich kann Daten versenden :) nur wie schließe ich die Verbindung wieder?
Michse schrieb: > Die Verbindung ist offen und ich kann Daten versenden :) nur wie > schließe ich die Verbindung wieder? Must Du mal in die Doku zum Matchport schauen. Wenn Du den Modemmode benutzt eventuell mit "+++ATH<CR><LF>" o.ä. Irgendwo stand auch was von <EOT> (0x04) und ein Timeout ließe sich wohl ebenfalls konfigurieren.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.