====== RS232 Sniffer ======
ich bin nun auf ein sehr nettes Programm gestoßen, das mehrere Datenströme von mehreren RS232-Geräten in einem Datenstrom darstellen kann: **jpnevulator**
===== Test Scenario =====
Zwei Arduino Nanos werden an den PC angeschlossen,
/dev/ttyUSB0
und
/dev/ttypUSB1
Beide liefern in zufälligen Zeitabständen Daten (Zähler).
==== Arduino Code ====
#include
uint32_t seed = 0x93123789;
uint32_t counter = 0;
void setup() {
Serial.begin(9600);
srand(seed);
}
void loop() {
uint32_t r = rand();
if(r%1024 < 10){
Serial.println(counter++);
}else{
delay(1);
}
}
Der seed ist für beide Arduinos unterschiedlich eingestellt.
===== Einstellungen =====
Die Parameter der verwendeten Schnittstellen können mit
stty
eingestellt werden.
==== Anzeigen aller Einstellungen ====
stty -F /dev/ttyUSB0 --all
==== Beispiele ====
=== 9600 8N1 ===
stty -F /dev/ttyUSB0 9600 cs8 -parenb -cstopb
* 9600: Baudrate
* cs8: chracter size is set to 8 bits
* -parenb: no parity bit
* -cstopb: one stop bit
=== 115200 7E2 ===
stty -F /dev/ttyUSB0 115200 cs7 parenb -parodd cstopb
* 115200: Baudrate
* cs7: chracter size is set to 7 bits
* parenb: enable parity bit
* -parodd: set parity bit to even
* cstopb: two stop bits
===== Minimaldarstellung =====
Hier werden nur das Gerät und die Daten in Hexcode dargestellt:
jpnevulator --tty /dev/ttyUSB0:UFO --tty "/dev/ttyUSB1:Battery" --read
UFO
33 35 0D 0A
Battery
34 36 0D 0A 30 0D 0A
UFO
30 0D 0A
Battery
31 0D 0A
UFO
31 0D 0A
Battery
32 0D 0A 33 0D 0A 34 0D 0A 35 0D 0A
UFO
32 0D 0A 33 0D 0A
Battery
36 0D 0A
UFO
34 0D 0A 35 0D 0A
Battery
37 0D 0A 38 0D 0A
UFO
36 0D 0A
Battery
39 0D 0A 31 30 0D 0A 31 31 0D 0A
UFO
37 0D 0A
Battery
31 32 0D 0A 31 33 0D 0A
UFO
38 0D 0A
Battery
31 34 0D 0A 31 35 0D 0A 31 36 0D 0A
UFO
39 0D 0A 31 30 0D 0A 31 31 0D 0A 31 32 0D 0A
Battery
31 37 0D 0A
UFO
31 33 0D 0A 31 34 0D 0A 31 35 0D 0A
Battery
31 38 0D 0A 31 39 0D 0A
===== Ausgabe mit ASCII Inerpretation =====
jpnevulator --ascii --tty /dev/ttyUSB0:UFO --tty /dev/ttyUSB1:Battery --read
UFO
32 33 31 0D 0A 231..
Battery
32 32 37 0D 0A 227..
30 0D 0A 31 0D 0A 0..1..
UFO
30 0D 0A 31 0D 0A 0..1..
Battery
32 0D 0A 33 0D 0A 34 0D 0A 2..3..4..
35 0D 0A 5..
UFO
32 0D 0A 33 0D 0A 2..3..
Battery
36 0D 0A 6..
UFO
34 0D 0A 4..
35 0D 0A 5..
Battery
37 0D 0A 7..
38 0D 0A 8..
UFO
36 0D 0A 6..
Battery
39 0D 0A 31 30 0D 0A 9..10..
31 31 0D 0A 11..
UFO
37 0D 0A 7..
Battery
31 32 0D 0A 31 33 0D 0A 12..13..
UFO
38 0D 0A 8..
Battery
31 34 0D 0A 31 35 0D 0A 14..15..
31 36 0D 0A 16..
UFO
39 0D 0A 31 30 0D 0A 31 31 0D 0A 31 32 0D 0A 9..10..11..12..
Battery
31 37 0D 0A 17..
UFO
31 33 0D 0A 31 34 0D 0A 31 35 0D 0A 13..14..15..
Battery
31 38 0D 0A 31 39 0D 0A 18..19..
UFO
31 36 0D 0A 16..
Battery
32 30 0D 0A 20..
UFO
31 37 0D 0A 17..
Battery
32 31 0D 0A 21..
UFO
31 38 0D 0A 18..
Battery
32 32 0D 0A 22..
UFO
31 39 0D 0A 19..
Battery
32 33 0D 0A 23..
UFO
32 30 0D 0A 20..
Battery
32 34 0D 0A 32 35 0D 0A 24..25..
32 36 0D 0A 26..
UFO
32 31 0D 0A 21..
Battery
32 37 0D 0A 27..
UFO
32 32 0D 0A 22..
Battery
32 38 0D 0A 28..
32 39 0D 0A 29..
UFO
32 33 0D 0A 32 34 0D 0A 23..24..
Battery
33 30 0D 0A 30..
UFO
32 35 0D 0A 25..
Battery
33 31 0D 0A 31..
UFO
32 36 0D 0A 26..
32 37 0D 0A 32 38 0D 0A 27..28..
Battery
33 32 0D 0A 32..
UFO
32 39 0D 0A 29..
Battery
33 33 0D 0A 33 34 0D 0A 33 35 0D 0A 33 36 0D 0A 33..34..35..36..
33 37 0D 0A 37..
33 38 0D 0A 33 39 0D 0A 38..39..
UFO
33 30 0D 0A 33 31 0D 0A 33 32 0D 0A 30..31..32..
Battery
34 30 0D 0A 34 31 0D 0A 40..41..
UFO
33 33 0D 0A 33 34 0D 0A 33..34..
===== Ausgabe mit Zeitstempel =====
jpnevulator --ascii --timing-print --tty /dev/ttyUSB0:UFO --tty "/dev/ttyUSB1:Battery" --read
2017-11-21 04:31:03.934740: Battery
30 0D 0A 0..
2017-11-21 04:31:04.027795: UFO
30 0D 0A 0..
2017-11-21 04:31:04.027906: Battery
31 0D 0A 1..
2017-11-21 04:31:04.121071: UFO
31 0D 0A 1..
2017-11-21 04:31:04.136501: Battery
32 0D 0A 33 0D 0A 34 0D 0A 2..3..4..
2017-11-21 04:31:04.259163: Battery
35 0D 0A 5..
2017-11-21 04:31:04.266844: UFO
32 0D 0A 33 0D 0A 2..3..
2017-11-21 04:31:04.364761: Battery
36 0D 0A 6..
2017-11-21 04:31:04.450527: UFO
34 0D 0A 4..
2017-11-21 04:31:04.591394: UFO
35 0D 0A 5..
2017-11-21 04:31:04.605142: Battery
37 0D 0A 7..
2017-11-21 04:31:04.801424: Battery
38 0D 0A 8..
2017-11-21 04:31:04.821649: UFO
36 0D 0A 6..
2017-11-21 04:31:04.852260: Battery
39 0D 0A 31 30 0D 0A 9..10..
2017-11-21 04:31:05.108643: Battery
31 31 0D 0A 11..
2017-11-21 04:31:05.205930: UFO
37 0D 0A 7..
2017-11-21 04:31:05.227054: Battery
31 32 0D 0A 31 33 0D 0A 12..13..
2017-11-21 04:31:05.412041: UFO
38 0D 0A 8..
2017-11-21 04:31:05.419467: Battery
31 34 0D 0A 31 35 0D 0A 14..15..
2017-11-21 04:31:05.737963: Battery
31 36 0D 0A 16..
2017-11-21 04:31:05.753133: UFO
39 0D 0A 31 30 0D 0A 31 31 0D 0A 31 32 0D 0A 9..10..11..12..
2017-11-21 04:31:05.912160: Battery
31 37 0D 0A 17..
2017-11-21 04:31:05.933009: UFO
31 33 0D 0A 31 34 0D 0A 31 35 0D 0A 13..14..15..
2017-11-21 04:31:06.070336: Battery
31 38 0D 0A 31 39 0D 0A 18..19..
2017-11-21 04:31:06.100373: UFO
31 36 0D 0A 16..
2017-11-21 04:31:06.102528: Battery
32 30 0D 0A 20..
2017-11-21 04:31:06.131038: UFO
31 37 0D 0A 17..
2017-11-21 04:31:06.134453: Battery
32 31 0D 0A 21..
2017-11-21 04:31:06.422916: UFO
31 38 0D 0A 18..
2017-11-21 04:31:06.455092: Battery
32 32 0D 0A 22..
2017-11-21 04:31:06.472657: UFO
31 39 0D 0A 19..
2017-11-21 04:31:06.520700: Battery
32 33 0D 0A 23..
2017-11-21 04:31:06.552793: UFO
32 30 0D 0A 20..
2017-11-21 04:31:06.563918: Battery
32 34 0D 0A 32 35 0D 0A 24..25..
2017-11-21 04:31:06.702372: Battery
32 36 0D 0A 26..
2017-11-21 04:31:06.709112: UFO
32 31 0D 0A 21..
2017-11-21 04:31:06.741452: Battery
32 37 0D 0A 27..
2017-11-21 04:31:06.832089: UFO
32 32 0D 0A 22..
2017-11-21 04:31:06.899534: Battery
32 38 0D 0A 28..
2017-11-21 04:31:07.059454: Battery
32 39 0D 0A 29..
2017-11-21 04:31:07.091973: UFO
32 33 0D 0A 32 34 0D 0A 23..24..
2017-11-21 04:31:07.177673: Battery
33 30 0D 0A 30..
2017-11-21 04:31:07.209634: UFO
32 35 0D 0A 25..
2017-11-21 04:31:07.237664: Battery
33 31 0D 0A 31..
2017-11-21 04:31:07.281342: UFO
32 36 0D 0A 26..
2017-11-21 04:31:07.463054: UFO
32 37 0D 0A 32 38 0D 0A 27..28..
2017-11-21 04:31:07.607040: Battery
33 32 0D 0A 32..
2017-11-21 04:31:07.679791: UFO
32 39 0D 0A 29..
2017-11-21 04:31:07.690290: Battery
33 33 0D 0A 33 34 0D 0A 33 35 0D 0A 33 36 0D 0A 33..34..35..36..
33 37 0D 0A 37..
2017-11-21 04:31:08.095972: Battery
33 38 0D 0A 33 39 0D 0A 38..39..
2017-11-21 04:31:08.123383: UFO
33 30 0D 0A 33 31 0D 0A 33 32 0D 0A 30..31..32..
2017-11-21 04:31:08.200833: Battery
34 30 0D 0A 34 31 0D 0A 40..41..
2017-11-21 04:31:08.213495: UFO
33 33 0D 0A 33 34 0D 0A 33..34..
===== Bug =====
Im Handbuch (manpage) wird erwähnt, dass die Reihenfolge der angezeigten Bytes nicht 100%ig exakt ist, wenn kaum Zeit dazwischen vergangen ist. Die Umschaltung zwischen den Geräten wird also leider nicht exakt dargestellt.
{{tag>deutsch artikel software linux technik}}