michalmonday / CSV-Parser-for-Arduino

It turns CSV string into an associative array (like dict in python)
MIT License
58 stars 12 forks source link

Help parsing serial GPS data #30

Open chriskinal opened 5 months ago

chriskinal commented 5 months ago

I am trying to parse CSV data from a GPS. I have tried the row by row paring code below but I get no output. If I stream ( << ) the output directly in I see it is parsed when the code does cp.print but since the "file" never ends it seems I can't access the output. Here is a sample "row" from the GPS.

$KSXT,20190909084745.00,116.23662400,40.07897925,68.3830,299.22,-67.03,190.28,0.022,,1,3,46,28,,,,-0.004,-0.021,-0.020,,*27\r\n

include

include

HardwareSerial* SerialGPS = &Serial7; // Main postion receiver (GGA & VTG) constexpr int buffer_size = 256; uint8_t GPSrxbuffer[buffer_size]; // Extra GPS1 serial rx buffer uint8_t GPStxbuffer[buffer_size]; // Extra GPS1 serial tx buffer

CSV_Parser cp(/format/ "sssssssssssssssssssssss", /has_header/ false);

char feedRowParser() { String input; if ( SerialGPS->available() ) { input = SerialGPS->readStringUntil('\n'); Serial.print("Read a row: "); Serial.println(input.c_str()); } return input.c_str(); }

bool rowParserFinished() { Serial.println(SerialGPS->available()); return SerialGPS->available() == 0; }

void setup() { Serial.begin(115200); SerialGPS->begin(460800); SerialGPS->addMemoryForRead(GPSrxbuffer, buffer_size); SerialGPS->addMemoryForWrite(GPStxbuffer, buffer_size); delay(5000); }

void loop() { cp.parseRow(); cp.print(); }