combie:
Das nennt man einen "inkonsistenten Datensatz".
Sowas sollte man meiden, wie der Teufel das Weihwasser.
Übrigens:
Das eigentliche Problem ist nicht, irgendwelche Datenblöcke zu senden.
Sondern:
Der Empfänger muss diese Datenblöcke in einem endlosen Datenstrom identifizieren und analysieren.
Denn die Serielle, die kennt keine Blöcke.
Das Datenblock Konzept gibt es nur in deinem Kopf, nicht in der Seriellen.
Von daher musst du das mühsam in Software gießen.
Hallo combie
Ja da hast wohl durch Erfahrung hell gesehen was wohl als nächste frage kommt. ^^
Aber zum "inkonsistenten Datensatz", wenn ich im folgenden Code übertrage dürfte es ja nicht zu dem problem kommen.
byte var[10];
int R0;
int R1;
int R2;
int R3;
int R4;
int R5;
int R6;
int R7;
int R8;
int R9;
byte R0M;
byte R1M;
byte R2M;
byte R3M;
byte R4M;
byte R5M;
byte R6M;
byte R7M;
byte R8M;
byte R9M;
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
}
void loop() {
R0 = analogRead(A0);
R0M = map(R0, 0, 1024, 0, 255);
R1 = analogRead(A1);
R1M = map(R1, 0, 1024, 0, 255);
R2 = analogRead(A2);
R2M = map(R2, 0, 1024, 0, 255);
R3 = analogRead(A3);
R3M = map(R3, 0, 1024, 0, 255);
R4 = analogRead(A4);
R4M = map(R4, 0, 1024, 0, 255);
R5 = analogRead(A5);
R5M = map(R5, 0, 1024, 0, 255);
R6 = analogRead(A6);
R6M = map(R6, 0, 1024, 0, 255);
R7 = analogRead(A7);
R7M = map(R7, 0, 1024, 0, 255);
R8 = analogRead(A8);
R8M = map(R8, 0, 1024, 0, 255);
R9 = analogRead(A9);
R9M = map(R9, 0, 1024, 0, 255);
var[0] = R0M;
var[1] = R1M;
var[2] = R2M;
var[3] = R3M;
var[4] = R4M;
var[5] = R5M;
var[6] = R6M;
var[7] = R7M;
var[8] = R8M;
var[9] = R9M;
Serial1.write(var, sizeof(var));
//Serial.println(var[0]);
}
Wenn ich die Daten nun empfangen möchte muss ich natürlich dann aus dem Datentrom wie du es gesagt hast meinen Datenblock raus fischen.
Hier gab es ja schon ein Bsp. mit Serial Event. Aber so wie ich den Code gelesen habe blockiert dieser dann mein Loop, bis er die Daten eingelesen hat oder?
Schuppeste:
https://www.arduino.cc/en/Tutorial/SerialEvent
manchmal muss man das SerialEvent noch im loop aufrufen.
zumal in dem Code nur auf eine Art Endzeichen geprüft wird.
Wenn ich das nicht falsch verstehe füllt der Code die Daten solange auf, bis das Endzeichen kommt, ungeachtet ob nun alle Bytes da sind oder nur die hälfte.
Gruß
Micha