11.06.2011, 19:31
Der Packet Mode...
Mit ATPD kann man dem ELM sagen, er soll die Daten nicht mehr in lesbarer Form liefern, sondern "Roh", d.h. jedes Byte kommt direkt (was dann nicht-lesbare ASCII-Zeichen sind), und ohne LF am Schluß.
Hier ein Beispielprog:
ergibt die Ausgabe:
Zeile 1 sagt, aus wievielen Bytes die Nachricht besteht, also 5
Die folgenden 5 Zeilen sind die Message selbst:
A8
FF
B0
02
86
Zeile 7 ist der Anfang der neuen Message, sie besteht also aus 7 Zeichen:
CA
C4
B0
10
22
08
CE
Der Vorteil: Es wird hier nur ein Drittel der Daten übertragen, da das Leerzeichen wegfällt, und jedes Byte nur noch aus einem Zeichen besteht, anstelle von 2 Hex-Zeichen.
Diese Prog ist aber noch ein Trümmerhaufen im Rohbau, und taugt noch überhaupt nichts.
Muß jetzt aber erst mal mein Notebook und die Vette laden
Mit ATPD kann man dem ELM sagen, er soll die Daten nicht mehr in lesbarer Form liefern, sondern "Roh", d.h. jedes Byte kommt direkt (was dann nicht-lesbare ASCII-Zeichen sind), und ohne LF am Schluß.
Hier ein Beispielprog:
Code:
char buffer[128] ; int a = 0; int b = 0; int pointer = 0;
void setup() {
Serial.begin(9600); Serial1.begin(9600); // Serialports konfigurieren
Serial1.print("ATZ"); Serial1.print((char)13); delay(1000);
Serial1.print("ATL0"); Serial1.print((char)13); delay(1000);
Serial1.print("ATH1"); Serial1.print((char)13); delay(1000);
Serial1.print("[B]ATPD[/B]"); Serial1.print((char)13); delay(1000);
Serial1.print("ATE0"); Serial1.print((char)13); delay(1000);
Serial1.flush();
Serial1.print("ATMTB0"); Serial1.print((char)13); delay(1000); // elm2usb();
}
void loop() {
pointer = 0;
do {
while (Serial1.available() < 1) {}
buffer[pointer] = Serial1.read();
Serial.print("Buffer Char: "); Serial.print(buffer[pointer]); Serial.print(" Buffer HEX: "); Serial.println(buffer[pointer], HEX);// DEBUG
delay(100);
pointer++; }
while (buffer[pointer-1] != 10); // Solange Buffer-Array fuellen, bis Zeilenende erreicht
Serial.println("Message gelesen!");
}
ergibt die Ausgabe:
Code:
Buffer Char: Buffer HEX: 5
Buffer Char: ¨ Buffer HEX: FFFFFFA8
Buffer Char: ÿ Buffer HEX: FFFFFFFF
Buffer Char: ° Buffer HEX: FFFFFFB0
Buffer Char: Buffer HEX: 2
Buffer Char: † Buffer HEX: FFFFFF86
Buffer Char: Buffer HEX: 7
Buffer Char: Ê Buffer HEX: FFFFFFCA
Buffer Char: Ä Buffer HEX: FFFFFFC4
Buffer Char: ° Buffer HEX: FFFFFFB0
Buffer Char: Buffer HEX: 10
Buffer Char: " Buffer HEX: 22
Buffer Char: Buffer HEX: 8
Buffer Char: Î Buffer HEX: FFFFFFCE
Zeile 1 sagt, aus wievielen Bytes die Nachricht besteht, also 5
Die folgenden 5 Zeilen sind die Message selbst:
A8
FF
B0
02
86
Zeile 7 ist der Anfang der neuen Message, sie besteht also aus 7 Zeichen:
CA
C4
B0
10
22
08
CE
Der Vorteil: Es wird hier nur ein Drittel der Daten übertragen, da das Leerzeichen wegfällt, und jedes Byte nur noch aus einem Zeichen besteht, anstelle von 2 Hex-Zeichen.
Diese Prog ist aber noch ein Trümmerhaufen im Rohbau, und taugt noch überhaupt nichts.
Muß jetzt aber erst mal mein Notebook und die Vette laden
