import serial
import time
# Configure the serial port
ser = serial.Serial()
ser.port = '/dev/ttyUSB0' # Replace with your actual serial port
ser.baudrate = 115200
ser.timeout = 1
try:
ser.open()
print("Serial port opened successfully.")
except Exception as e:
print("Error opening serial port: ", e)
exit()
def read_distance():
while True:
if ser.in_waiting > 0:
data = ser.read(ser.in_waiting)
buffer = data.decode('latin-1') # Decode as Latin-1 to handle non-text bytes
for i in range(len(buffer)):
if buffer[i] == chr(0x20): # Frame header
if i + 6 < len(buffer): # Check if there are enough bytes for a complete frame
distance_str = ""
i += 1 # Skip frame header
while i < len(buffer) and buffer[i] != chr(0x2C): # Read distance value
distance_str += buffer[i]
i += 1
if distance_str:
distance = int(distance_str)
if i + 1 < len(buffer) and buffer[i] == chr(0x2C) and buffer[i + 1] == chr(0x20):
i += 2 # Skip comma and space
confidence_str = ""
while i < len(buffer) and buffer[i] != chr(0x0A): # Read confidence value
confidence_str += buffer[i]
i += 1
if confidence_str:
confidence = int(confidence_str)
print(f"Distance: {distance} mm, Confidence: {confidence}")
if __name__ == "__main__":
try:
read_distance()
except KeyboardInterrupt:
print("\nExiting...")
finally:
ser.close()
print("Serial port closed.")
#include <Arduino.h>
#define UART_NUM UART_NUM_2
#define TX_PIN GPIO_NUM_17
#define RX_PIN GPIO_NUM_16
HardwareSerial mySerial(UART_NUM);
void setup() {
Serial.begin(115200);
mySerial.begin(115200, SERIAL_8N1, RX_PIN, TX_PIN);
}
void loop() {
if (mySerial.available() > 0) {
uint8_t buffer[10];
int bytesRead = mySerial.readBytes(buffer, sizeof(buffer));
if (bytesRead > 0) {
for (int i = 0; i < bytesRead; i++) {
if (buffer[i] == 0x20) { // Frame header
if (i + 6 < bytesRead) { // Check if there are enough bytes for a complete frame
char distanceStr[6];
int distanceLength = 0;
i++; // Skip frame header
while (i < bytesRead && buffer[i] != 0x2C) { // Read distance value
distanceStr[distanceLength++] = buffer[i];
i++;
}
if (distanceLength > 0) {
distanceStr[distanceLength] = '\0';
int distance = atoi(distanceStr);
i++; // Skip comma and space (0x2C and 0x20)
char confidenceStr[3];
int confidenceLength = 0;
while (i < bytesRead && buffer[i] != 0x0A) { // Read confidence value
confidenceStr[confidenceLength++] = buffer[i];
i++;
}
if (confidenceLength > 0) {
confidenceStr[confidenceLength] = '\0';
int confidence = atoi(confidenceStr);
Serial.print("Distance: ");
Serial.print(distance);
Serial.print(" mm, Confidence: ");
Serial.print(confidence);
Serial.println();
}
}
}
}
}
}
}
}