GY-63_MS5611/libraries/RS485/examples/RS485_sniffer/RS485_sniffer.ino
2023-05-11 11:14:17 +02:00

91 lines
1.6 KiB
C++

// FILE: RS485_sniffer.ino
// AUTHOR: Rob Tillaart
// PURPOSE: simple sniffer prints data as hex dump
// URL: https://github.com/RobTillaart/RS485
// use a 2nd Serial port.
// or only connect the RX of the MAX485.
//
// Note this sniffer if not 100% fool proof, known issues are
// - no detection of buffer overrun etc
// - ASCII output is only printed after 16 bytes are decoded.
// - still might be useful for debugging.
#include "Arduino.h"
#include "RS485.h"
const uint8_t sendPin = 4; // not used, listening only.
const uint8_t deviceID = 250; // not used, maybe in future.
// use a 2nd Serial port.
// or only connect the RX of the MAX485.
RS485 rs485(&Serial, sendPin, deviceID);
const uint8_t LED = 13;
uint8_t status = LOW;
uint32_t count = 0;
char buffer[17];
void setup()
{
Serial.begin(115200);
while (!Serial);
Serial.println();
Serial.println(__FILE__);
rs485.setMicrosPerByte(115200);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
}
void loop()
{
if (rs485.available() > 0)
{
// toggle on receive
digitalWrite(LED, !digitalRead(LED));
if (count % 4 == 0)
{
Serial.print(' ');
}
if (count % 16 == 0)
{
Serial.print(" ");
Serial.println(buffer);
if (count % 160 == 0)
{
Serial.println();
}
Serial.print(count, HEX);
Serial.print('\t');
}
int x = rs485.read();
// HEX DUMP PART
if (x < 0x10) Serial.print('0');
Serial.print(x, HEX);
Serial.print(" ");
// fill ASCII buffer
buffer[count % 16] = isprint(x) ? x : '.';
buffer[count % 16 + 1] = 0;
count++;
}
}
// -- END OF FILE --