Mit HTTP Daten verschicken und wieder etwas empfangen ?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

funkheld

Betreff: Mit HTTP Daten verschicken und wieder etwas empfangen ?

BeitragFr, Aug 12, 2016 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, guten Tag.

Wie kann man diese Url senden und als Antwort einen Wert empfangen :
http://192.168.2.102/?pin=vor

Gibt es so etwas ähnliches in irgendeiner Form in BlitzMax bitte :
buffer=ReceiveHTTP("http://192.168.2.102/?pin=vor")

Danke.
Gruss

Mathias-Kwiatkowski

BeitragSa, Aug 13, 2016 5:37
Antworten mit Zitat
Benutzer-Profile anzeigen
ja sowas geht

soweit ich weiß

print loadstring("http::ip.de/phpscript.php?name=mathias")
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017
 

funkheld

BeitragSa, Aug 13, 2016 9:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo danke für deine Hilfe.
Die Hilfe war wie immer wieder Excellent.

Mein Roboter-Auto mit dem https://www.mikrocontroller.net/articles/ESP8266 darauf nimmt hier alle
Befehle auf die ich im Programm sende und führt sie durch.

Code: [AUSKLAPPEN]

delay 500
print loadstring("http::192.168.2.102/?pin=mitte")
delay 1000
print loadstring("http::192.168.2.102/?pin=hrechts")
delay 1000
print loadstring("http::192.168.2.102/?pin=rechts")
delay 1000
print loadstring("http::192.168.2.102/?pin=mitte")
delay 1000
print loadstring("http::192.168.2.102/?pin=hlinks")
delay 1000
print loadstring("http::192.168.2.102/?pin=links")
delay 1000
print loadstring("http::192.168.2.102/?pin=mitte")
delay 500
print loadstring("http::192.168.2.102/?pin=vor")
delay 500
print loadstring("http::192.168.2.102/?pin=v1")
delay 1000
print loadstring("http::192.168.2.102/?pin=v0")
delay 500
print loadstring("http::192.168.2.102/?pin=zur")
delay 500
print loadstring("http::192.168.2.102/?pin=v1")
delay 1000
print loadstring("http::192.168.2.102/?pin=v0")
delay 500



Danke.
Gruss
  • Zuletzt bearbeitet von funkheld am Sa, Aug 13, 2016 15:10, insgesamt einmal bearbeitet
 

funkheld

BeitragSa, Aug 13, 2016 11:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Damit wird der Sensor einmal gestartet : http::192.168.2.102/?pin=sharp , er sendet ca alle 300 Millisekunden den Abstand zu einem Hindernis und das ca 70mal (ca 180 Grad Drehung). Mit http::192.168.2.102/?pin=leer werden Daten vom Sensor gesendet.
Während dieser Zeit nimmt er keine Steuerdaten an um etwas zu machen, er sendet nur.

Wie werden eigentlich jetzt die Daten bitte empfangen wenn ich dieses schicke : http::192.168.2.102/?pin=leer?
Mit welchem Befehl ? Die Daten müssen in einen Buffer geschrieben werden und dann mit Peek ausgelesen werden.

Danke
Gruss

DAK

BeitragMo, Aug 15, 2016 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier musst du jetzt etwas tiefer rein und was selber machen Wink

LoadString ist dafür gedacht, ein HTTP GET zu lesen und sonst nichts.

Willst du mehr Flexibilität haben, dann musst du das selber machen.

Google mal danach, wie ein HTTP Header auszusehen hat, explizit der Header für GET. Der ist relativ simpel, da er nicht in binär ist, sondern textbasiert. Alles was du machen musst, ist den Header in einem String zusammenschustern.

Dann machst du einen TCP Socket auf, verbindest dich damit zu deinem Roboter und schickst dein HTTP Request ab. Dann liest du alles, was er dir über diesen TCP Socket schickt, aus und wartest, bis er fertig ist. Du kannst das Lesen in eine Schleife packen, und immer wenn du etwas empfangen hast, darauf reagieren und danach warten, bis wieder was Neues kommt.
Gewinner der 6. und der 68. BlitzCodeCompo

Mathias-Kwiatkowski

BeitragMo, Aug 15, 2016 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry ich begreif nich was er machen möchte oder für was es gut sein soll....
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017
 

funkheld

BeitragMo, Aug 15, 2016 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast mir ja oben schön gezeigt , wie ich mit http Daten zum Roboter schicken kann , womit er gesteuert wird. Das funktioniert Tadellos.
Das http ist ja so, wenn etwas gesendet wird, kommt auch als Antwort immer etwas zurück.

Wenn ich das einmal sende http::192.168.2.102/?pin=sharp dann sendet der Roboter Daten über das http aber nur jedesmal wenn ich dann das sende vom PC http::192.168.2.102/?pin=leer? , das ca 70x.

Und mit welchen http-Befehl in BlitzMax werden die Daten empfangen?
Damit http::192.168.2.102/?pin=leer? kommen zwar 5 Byte zurück 70x, kann damit aber nichts anfangen bzw weiß nicht wie die Daten als Zahl ausgewertet werden.
Kann es vielleicht sein das das die Sensordaten sind vom Roboter?

Danke

Gruss
 

funkheld

BeitragMo, Aug 15, 2016 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
So werden die empfangenen Daten (2 byte) in Purebasic ausgewertet:

Buffer = ReceiveHTTPMemory("http::192.168.2.102/?pin=leer")
string_1=Str(PeekC(Buffer))
zahl=Val(string_1)

Das heißt PeekC in Purebasic :
Liest einen Character-Wert (2 Bytes in Unicode) von der angegebenen Speicheradresse.

Irgendwie muß man mit Blitzmax den Unicode(2 Byte) auswerten können?

In Purebasic ist Len(string_1) 2 Byte lang und wird richtig ausgewertet mit den entfernungen, die ich
auch nachgemessen habe.

Und in BlitzMax ist der String 5 Byte lang....???


Gruss
  • Zuletzt bearbeitet von funkheld am Mo, Aug 15, 2016 22:38, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragMo, Aug 15, 2016 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte editiere deine letzten Posts nach anstatt Mehrfach untereinander zu posten.
Bitte benutze die Code-Auszeichnung des Forum um Quellcode zu markieren.

Danke.


Was für Bytes kommen denn an? Länge, 2Byte Payload, LF, CR ?
Das musst du schon selber debuggen.

BlitzMax hat kein "http-Befehl" - HTTP ist das Protokoll - wenn du das benutzen willst, musst es mit TCP Netzwerkbefehlen wohl implementieren.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

funkheld

BeitragMo, Aug 15, 2016 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja danke.

print loadstring("http::192.168.2.102/?pin=vor")

Damit kann ich aber mein Roboter über den Blitzmax sagen das er nach vorn fahren soll.
Es funktioniert über WLan.

Danke.
Gruss

Mathias-Kwiatkowski

BeitragDi, Aug 16, 2016 4:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ich raffe noch immernicht worauf du aus bist...

direkte fragen


1. was willst du erreichen
2. willst du sowas wie ein mmo machen
3. was zum himmel ist dein roboter
4. wenn der roboter dein char ist wrum sagt ein php script wohin er fahren soll?


wenn du ein mmo oder ein orpg machen willst schmeiss php&mysql über board dann setz dich mit den netzwerk bef auseinander oder benutze bnet.

Zitat:
Es funktioniert über WLan.
ah ne ^^... es funktioniert sogar kabel gebunden... was macht loadstring? es baut eine tcp verbindung auf liest den hatt header aus und resul landet bei dir im string...

loadstring kann man für sowas wie "highscore" ect benutzen evtl. login oder reg. das wars rest sollte dann mit direkten netzwerk verb. gemacht werden, die nich geschlossen werden. sondern immer auf input oder output warten.

darum die fragen oben....
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017

DAK

BeitragDi, Aug 16, 2016 11:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich verstanden habe ist der Roboter ein Hardware-Roboter mit einem HTTP-Interface.

Dieser Roboter kann mit HTTP-Befehlen gesteuert werden, und einer der Befehle liest über eine gewisse Zeit alle 300 ms einen Sensorwert aus und gibt diesen über eine offene HTTP-Verbindung zurück.

Das würde folgende Abfolge geben:

Code: [AUSKLAPPEN]
Computer an Roboter: Gib mir die Sensordaten
Roboter an Computer: [Sensordaten]
(300 ms Pause)
Roboter an Computer: [Sensordaten]
(300 ms Pause)
Und so weiter


LoadString() ist dafür ausgelegt, auf eine Anfrage eine (und nur genau eine) Antwort zu erhalten. Das heißt, nachdem der Roboter sein erstes Paket an Sensordaten abgeschickt hat, schließt LoadString() die Verbindung.

LoadString() kann nicht das was du brauchst. Punkt.

Jetzt musst du dafür was selber machen. Eine der wichtigsten Fähigkeiten als Programmierer ist sich selbst etwas aneignen zu können. Aktuell fragst du (Funkheld), sobald etwas nicht gleich funktioniert, sofort nach. Wenn dir jemand eine Antwort gibt, die nicht quasi der fertige Code ist, dann ignorierst sie. So macht man sich hier keine Freunde. Wir helfen sehr gerne jedem Anfänger, und am Anfang helfen wir auch gerne sehr detailliert.

Allerdings hast du in den elf Tagen, die du hier angemeldet bist, schon 18 Threads aufgemacht, von denen zumindest 16 beantwortet gewesen wären, wenn du mehr als 10 Minuten in der Hilfe und/oder mit der Suchfunktion verbracht hättest. Das sind alles Fragen, deren Antwort entweder direkt in der Anleitung steht (z.B. die Auswirkung von SetColor) oder die hier schon öfters beantwortet wurden. Und wenn du dir den Tonfall der Antworten auf deine Fragen durchliest, so werden diese inzwischen immer happiger.

Du hältst dich auch nicht an die Forenregeln, obwohl du dazu mehrfach aufgefordert wurdest (z.B. Posts editieren statt einem Doppelpost). Auch damit macht man sich nicht beliebt.

Wir sind hier ein sehr gesittetes Forum, hier hält man sich an Regeln.

Also noch mal zusammengefasst:
1) Bitte halte dich an die Forenregeln
2) Bevor du eine Frage stellst, versuch zuerst dein Problem selber zu lösen. Verbringe mindestens 15 Minuten mit der Hilfe, der Forensuche und Google, bevor du fragst.
3) Lies die Antworten und versuche sie zu verstehen, auch wenn sie dir nicht gleich den fertigen Code geben.

Alles was du brauchst, steht in meiner Antwort weiter oben.
Gewinner der 6. und der 68. BlitzCodeCompo
 

funkheld

BeitragDi, Aug 16, 2016 11:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

Alles was du brauchst, steht in meiner Antwort weiter oben.


Ja eben , und darum brauch ich mal ein Programmanstoß von einem Frack der so etwas schon einmal geschrieben hat für BlitzMax.


Danke.
Gruss

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group