NMEA 0183 splitter für Windmessung

Ich habe mir die Ultraschall-Wetterstation von LCJ-Capteurs gekauft, und habe sie an ein RS485-Wifi converter angeschlossen. Nun kommen die Daten herein, und sie entsprechen dem NMEA-0183 Protokoll.

Ich sollte wohl einen Splitter bauen, um die Daten in Variablen einzubinden. Sowas habe vor 5-6 Jahren schon mal gemacht und es war nicht so schwer.

ChatGPT sagt aber, ich sollte einen Event setzen, der bei jeder gesplitteten Zeile ein Skript triggert. Ist das wirklich der beste Weg? Die Zeilen kommen sehr schnell, ich glaube im 3 Hz-Takt. Werden die Buffers nicht überlaufen?

Die Zeilen sehen im Debug-Fenster so aus:

TXT: 29/07/2024, 20:47:50 | RECEIVED [10.10.20.101:1034] | $PLCJ,64FF,60FE,28,9090,9280<CR><LF>$PLCJE8AC8,72AC,3000,2162,B4,<CR><LF>$IIMWV,180.0,R,000.3,N,A*37<CR><LF>$WIXDR,C,031.0,C,,*50<CR><LF>
HEX: 29/07/2024, 20:47:50 | RECEIVED [10.10.20.101:1034] | 24 50 4C 43 4A 2C 36 34 46 46 2C 36 30 46 45 2C 32 38 2C 39 30 39 30 2C 39 32 38 30 0D 0A 24 50 4C 43 4A 45 38 41 43 38 2C 37 32 41 43 2C 33 30 30 30 2C 32 31 36 32 2C 42 34 2C 0D 0A 24 49 49 4D 57 56 2C 31 38 30 2E 30 2C 52 2C 30 30 30 2E 33 2C 4E 2C 41 2A 33 37 0D 0A 24 57 49 58 44 52 2C 43 2C 30 33 31 2E 30 2C 43 2C 2C 2A 35 30 0D 0A 
TXT: 29/07/2024, 20:47:51 | RECEIVED [10.10.20.101:1034] | $PLCJ,64FF,60FF,28,8090,9280<CR><LF>$PLCJE8AC8,72AC,3000,2162,B4,<CR><LF>$IIMWV,180.0,R,000.3,N,A*37<CR><LF>$WIXDR,C,031.0,C,,*50<CR><LF>
HEX: 29/07/2024, 20:47:51 | RECEIVED [10.10.20.101:1034] | 24 50 4C 43 4A 2C 36 34 46 46 2C 36 30 46 46 2C 32 38 2C 38 30 39 30 2C 39 32 38 30 0D 0A 24 50 4C 43 4A 45 38 41 43 38 2C 37 32 41 43 2C 33 30 30 30 2C 32 31 36 32 2C 42 34 2C 0D 0A 24 49 49 4D 57 56 2C 31 38 30 2E 30 2C 52 2C 30 30 30 2E 33 2C 4E 2C 41 2A 33 37 0D 0A 24 57 49 58 44 52 2C 43 2C 30 33 31 2E 30 2C 43 2C 2C 2A 35 30 0D 0A 
TXT: 29/07/2024, 20:47:51 | RECEIVED [10.10.20.101:1034] | $PLCJ,6400,60FE,28,9090,9280<CR><LF>$PLCJE8AC8,72AC,3000,2162,B4,<CR><LF>$IIMWV,180.0,R,000.3,N,A*37<CR><LF>$WIXDR,C,031.0,C,,*50<CR><LF>
HEX: 29/07/2024, 20:47:51 | RECEIVED [10.10.20.101:1034] | 24 50 4C 43 4A 2C 36 34 30 30 2C 36 30 46 45 2C 32 38 2C 39 30 39 30 2C 39 32 38 30 0D 0A 24 50 4C 43 4A 45 38 41 43 38 2C 37 32 41 43 2C 33 30 30 30 2C 32 31 36 32 2C 42 34 2C 0D 0A 24 49 49 4D 57 56 2C 31 38 30 2E 30 2C 52 2C 30 30 30 2E 33 2C 4E 2C 41 2A 33 37 0D 0A 24 57 49 58 44 52 2C 43 2C 30 33 31 2E 30 2C 43 2C 2C 2A 35 30 0D 0A 
TXT: 29/07/2024, 20:47:52 | RECEIVED [10.10.20.101:1034] | $PLCJ,64FF,60FE,28,9090,9280<CR><LF>$PLCJE8AC8,72AC,3000,2162,B4,<CR><LF>$IIMWV,180.0,R,000.3,N,A*37<CR><LF>$WIXDR,C,031.0,C,,*50<CR><LF>
HEX: 29/07/2024, 20:47:52 | RECEIVED [10.10.20.101:1034] | 24 50 4C 43 4A 2C 36 34 46 46 2C 36 30 46 45 2C 32 38 2C 39 30 39 30 2C 39 32 38 30 0D 0A 24 50 4C 43 4A 45 38 41 43 38 2C 37 32 41 43 2C 33 30 30 30 2C 32 31 36 32 2C 42 34 2C 0D 0A 24 49 49 4D 57 56 2C 31 38 30 2E 30 2C 52 2C 30 30 30 2E 33 2C 4E 2C 41 2A 33 37 0D 0A 24 57 49 58 44 52 2C 43 2C 30 33 31 2E 30 2C 43 2C 2C 2A 35 30 0D 0A 
TXT: 29/07/2024, 20:47:52 | RECEIVED [10.10.20.101:1034] | $PLCJ,6400,60FE,28,8090,9280<CR><LF>$PLCJE8AC8,72AC,3000,2162,B4,<CR><LF>$IIMWV,179.0,R,000.3,N,A*31<CR><LF>$WIXDR,C,031.0,C,,*50<CR><LF>
HEX: 29/07/2024, 20:47:52 | RECEIVED [10.10.20.101:1034] | 24 50 4C 43 4A 2C 36 34 30 30 2C 36 30 46 45 2C 32 38 2C 38 30 39 30 2C 39 32 38 30 0D 0A 24 50 4C 43 4A 45 38 41 43 38 2C 37 32 41 43 2C 33 30 30 30 2C 32 31 36 32 2C 42 34 2C 0D 0A 24 49 49 4D 57 56 2C 31 37 39 2E 30 2C 52 2C 30 30 30 2E 33 2C 4E 2C 41 2A 33 31 0D 0A 24 57 49 58 44 52 2C 43 2C 30 33 31 2E 30 2C 43 2C 2C 2A 35 30 0D 0A 
TXT: 29/07/2024, 20:47:53 | RECEIVED [10.10.20.101:1034] | $PLCJ,5FFF,63FE,AA,7373,7173<CR><LF>$PLCJE8AC8,72AC,3000,2162,B4,<CR><LF>$IIMWV,179.0,R,000.3,N,A*31<CR><LF>$WIXDR,C,031.0,C,,*50<CR><LF>
HEX: 29/07/2024, 20:47:53 | RECEIVED [10.10.20.101:1034] | 24 50 4C 43 4A 2C 35 46 46 46 2C 36 33 46 45 2C 41 41 2C 37 33 37 33 2C 37 31 37 33 0D 0A 24 50 4C 43 4A 45 38 41 43 38 2C 37 32 41 43 2C 33 30 30 30 2C 32 31 36 32 2C 42 34 2C 0D 0A 24 49 49 4D 57 56 2C 31 37 39 2E 30 2C 52 2C 30 30 30 2E 33 2C 4E 2C 41 2A 33 31 0D 0A 24 57 49 58 44 52 2C 43 2C 30 33 31 2E 30 2C 43 2C 2C 2A 35 30 0D 0A 
TXT: 29/07/2024, 20:47:54 | RECEIVED [10.10.20.101:1034] | $PLCJ,5FFF,63FE,AA,7373,7073<CR><LF>$PLCJE8AC8,72AC,3000,2162,B4,<CR><LF>$IIMWV,179.0,R,000.3,N,A*31<CR><LF>$WIXDR,C,031.0,C,,*50<CR><LF>
HEX: 29/07/2024, 20:47:54 | RECEIVED [10.10.20.101:1034] | 24 50 4C 43 4A 2C 35 46 46 46 2C 36 33 46 45 2C 41 41 2C 37 33 37 33 2C 37 30 37 33 0D 0A 24 50 4C 43 4A 45 38 41 43 38 2C 37 32 41 43 2C 33 30 30 30 2C 32 31 36 32 2C 42 34 2C 0D 0A 24 49 49 4D 57 56 2C 31 37 39 2E 30 2C 52 2C 30 30 30 2E 33 2C 4E 2C 41 2A 33 31 0D 0A 24 57 49 58 44 52 2C 43 2C 30 33 31 2E 30 2C 43 2C 2C 2A 35 30 0D 0A 

und die NMEA-Syntax ist wie folgt:

Syntax: $IIMWV,<Wind Angle>,<Reference>,<Wind Speed>,<Wind Speed Units>,<Status>*<Checksum><CR><LF>
Example: $IIMWV,180.0,R,000.3,N,A*37
Wind Angle: 180.0 degrees
Reference: R (Relative, e.g., to the boat)
Wind Speed: 000.3
Wind Speed Units: N (Knots)
Status: A (Data valid)
Checksum: 37