esp32_Adafruit_BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino

68 lines
1.5 KiB
Arduino
Raw Normal View History

2025-01-08 14:30:58 +00:00
#include "Adafruit_GenericDevice.h"
Stream *uart_stream; // Will hold the pointer to our Stream object
Adafruit_GenericDevice *create_uart_device(Stream *serial_port) {
uart_stream = serial_port; // Store the Stream pointer
auto uart_write = [](const uint8_t *buffer, size_t len) -> bool {
uart_stream->write(buffer, len);
return true;
};
auto uart_read = [](uint8_t *buffer, size_t len) -> bool {
uint16_t timeout = 100;
while (uart_stream->available() < len && timeout--) {
delay(1);
}
if (timeout == 0) {
return false;
}
for (size_t i = 0; i < len; i++) {
buffer[i] = uart_stream->read();
}
return true;
};
return new Adafruit_GenericDevice(uart_read, uart_write);
}
void setup() {
Serial.begin(115200);
while (!Serial)
;
delay(100);
Serial.println("Generic Device test!");
Serial2.begin(115200);
Adafruit_GenericDevice *device = create_uart_device(&Serial2);
device->begin();
uint8_t write_buf[4] = {0x5, 0x0, 0x0, 0x48};
uint8_t read_buf[8];
Serial.println("Writing data...");
if (!device->write(write_buf, 4)) {
Serial.println("Write failed!");
return;
}
Serial.println("Reading response...");
if (!device->read(read_buf, 8)) {
Serial.println("Read failed!");
return;
}
Serial.print("Got response: ");
for (int i = 0; i < 8; i++) {
Serial.print("0x");
Serial.print(read_buf[i], HEX);
Serial.print(" ");
}
Serial.println();
}
void loop() { delay(1000); }