Hi,
ok, du hast also tatsächlich einen Code für das Zusi-3-Protokoll geschrieben.
Ich habe mich mal ein bisschen mit deinem Code beschäftigt, aber so ganz klar ist mir die Struktur noch nicht. Werde mir das daher die nächsten Tage noch mal anschauen.
Wenn ich das richtig sehe, fragst du dort nur die Geschwindigkeit und die x-Beschleunigung ab, die anderen Beschleunigungen und vor allem die Uhrzeit sehe ich jetzt nicht, richtig?
OT: Ich hatte selbst mal eine Überlegung für die void loop gemacht, ich habe das mal auf deinen Fall angepasst:
Code: Alles auswählen
union {
byte b[4];
int i;
} dataLng;
union {
byte b[2];
int16_t i;
} dataGroup;
int ebene = 0;
int16_t ebene1Status = 0;
int16_t ebene2Status = 0;
int16_t ebene3Status = 0;
union {
byte b[4];
float f;
int i;
} nutzdata;
#define MAX_NUTZDATA 4
void loop() {
if (client.available()) {
dataLng.b[0] = client.read();
dataLng.b[1] = client.read();
dataLng.b[2] = client.read();
dataLng.b[3] = client.read();
if (dataLng.i == 0) { //BEGIN NODE
n++;
dataGroup.b[0] = client.read();
dataGroup.b[1] = client.read();
if (ebene == 1) {
ebene1Status = dataGroup.i;
} else if (ebene == 2) {
ebene2Status = dataGroup.i;
} else if (ebene == 3) {
ebene3Status = dataGroup.i;
}
} else if (dataLng.i == -1) { //END NODE
n--;
} else { //ATTRIBUTE
dataGroup.b[0] = client.read();
dataGroup.b[1] = client.read();
nutzdata.i = 0; //CLEAR
for(int i = 0; i < dataLng.i - 2; i++) {
byte b = client.read();
if (i < MAX_NUTZDATA) {
nutzdata.b[i] = b;
}
}
//AUSWERTUNG
if ((ebene >= 1) && (ebene1Status == 0x0001)) { //VERBINDUNGSAUFBAU
} else if ((ebene >= 1) && (ebene1Status == 0x0002)) { //FAHRPULT
if ((ebene >= 2) && (ebene2Status == 0x000A)) { //FST-DATA
if ((ebene >= 3) && (ebene3Status == 0x0022)) { //NBÜ-DATA
} else if ((ebene >= 3) && (ebene3Status == 0x0064)) { //SIFA
if (ebene == 3) {
if (dataGroup.i == 0x0002) { // Status Sifa-Leuchtmelder
if (nutzdata.b[0] == 1) Serial.println("sifa aan");
if (nutzdata.b[0] == 0) Serial.println("sifa uit");
} else if (dataGroup.i == 0x0003) { // Status Sifa-Hupe
if (nutzdata.b[0] == 2) Serial.println("sifa dwangrem aan");
if (nutzdata.b[0] == 1) Serial.println("sifa toeter aan");
if (nutzdata.b[0] == 0) Serial.println("sifa toeter uit");
}
}
} else if ((ebene >= 3) && (ebene3Status == 0x0065)) { //PZB
} else if ((ebene >= 3) && (ebene3Status == 0x0066)) { //DOORS
} else if (ebene == 2) {
if (dataGroup.i == 0x0001) { // Geschwindigkeit m/s
byte v = nutzdata.f * 3.6;
Serial3.print("A");
Serial3.println(v);
} else if (dataGroup.i == 0x004F) { // Beschleunigung x m/s^2
byte vv = snelheid * 3000;
Serial2.println(vv);
}
}
}
}
}
}
// if the server's disconnected, stop the client:
if (!client.connected()) {
Serial.println();
Serial.println("verbinding verbroken");
client.stop();
// do nothing:
while (true);
}
}
Das ist jetzt kein Kompilierfähiger Code sondern eher ein paar Gedanken. Wenn ihr lust habt, könnt ihr das ja mal Kompilierfähig herrichten und mal testen.[/size]
Gruß
F. Schn.