Char aneinanderreihen - in einer Schleife?

MetroAffe

Mitglied
Hallo zusammen,

ich kenn mich mit C/C++ kaum aus ... bin also auf eure Hilfe angewiesen ;D

Code:
char sendcmd[100];

[...]
if (client) {
    if (client.connected()) {
        while (client.available()) {
        char c = client.read();
        strcat(sendcmd, c);
        }

Das Problem ist, dass immer nur eine Zeichen empfangen wird, ich aber einen ganzen Befehl brauche (Empfangen werden sollte: "0xA90"). Damit ich eben nicht alle Zeichen einzeln bekomme hatte ich einfach mal versucht das empfangene immer hinten dran zu hängen, aber sowie ich es oben habe funktioniert es nicht .. wäre also super dankbar für jede Hilfe :D

MetroAffe
 
Hallo MetroAffe,

Ich weiß zwar nicht was bzw. die Methode client.read kommt, jedoch weiß ich, dass char c nur ein Zeichen speichern kann.

Strcat funktioniert auch nur mit strings und nicht mit Zeichen.

Oben hab ich einen Sendebuffer gesehen, warum machst du nicht einfach einen Empfangsbuffer, speicherst jedes Zeichen nacheinander hinein bis du fertig empfangen hast?

Wenn es sich um ASCII handelt, nicht auf die binäre 0 vergessen!

Ich hoffe ich konnte dir weiterhelfen.
 
Hi posi90,

vielen Dank schonmal ... ich glaube das mit dem Empfangsbuffer ist genau das was ich brauche - weiß leider nur nicht wie ich das am besten anstelle ... kannst mir da vlt. was zusammenbasteln?
Empfangen werden sollten dann codes wie zb. "0xa90" "0xb48" ....
und am besten bräuchte ich diesen als "unsigned long" in einer variable gespeichert.
Die Methode client.read(); kann soweit ich das weiß immer nur eine weitere ziffer empfangen...

vielen DANK!
 
Code:
EthernetClient client = iPhoneServer.available();

read()-Methode:

Returns: The next byte (or character), or -1 if none is available.
 
Zuletzt bearbeitet:
Wie wird denn der Long eigentlich berechnet? Habe gerade festgestellt das es keinen unterschied mach ob ich "0xa90" sende oder "2704" ... das versteh ich nich :confused:
 
Ist dir klar, dass 2704 und 0xa90 die gleiche Zahl bezeichnet?
Dezimal und Hexadezimal.
Binär wäre es 101010010000 usw.

Zum Empfangsbuffer:
Wirklich schwer ist das nicht, wenn man eventuelle Vergrößerungen beachtet.
Du willst also, wie im Anfangspost, alles zusammensammeln, bis das Ding nicht mehr connected ist?
(Kann das funktionieren? Will das Gerät nicht ab und zu direkt eine Antwort,
bevor es weitersendet oder die Verbindung trennt?)
 
Eine Antwort möchte es nicht - kann man machen, aber das brauch ich nicht ... würde ja nur noch eine Verzögerung einbringen.
Aus dieser Schleife client.available() fliegt man soweit ich raus sobald man alles was gesendet wurde mit client.read(); gelesen hat ...
 
...oder eventuell, wenn man zu schnell liest.
Kenn die genaue Spec nicht.
Also, bis -1 oder bis nicht mehr connected?
 
ähm bis -1 heißt ja unendlich oder nicht? Am besten bis es kein weiteres Zeichen mehr gibt oder man könnte ja auch ein Endzeichen dranhängen zb. # -> "2704#"

Ah habs ja oben selber geschrieben, wie blöde ^^ ... in dem Fall bis -1 ja ;D
 
Zuletzt bearbeitet:
Zurück