Hallo, ich habe einen GPS empfänger, der mir über RS232 (COM4) Daten schickt. Daraus muss ich eine Zeile isolieren. Hier mal mein Test Code, um Daten zu empfangen
[autoit]#include "Func_Serial.au3"
#include <String.au3>
;$ourDll = DllOpen(@SystemDir & "\kernel32.dll")
Global Const $ComPort = 4
Global Const $Baudrate = 4800
Global Const $Bits = 8
Global Const $Parity = 0
Global Const $Stop = 0
Global Const $Rts = 0
Local $SendPort = _OpenCOMPort($ComPort, $Baudrate, $Bits, $Parity, $Stop, $Rts)
If $SendPort = -1 Then MsgBox(0, "Fehler", "Der sendende COM-Port konnte nicht geöffnet werden!")
While 1
$sende1=_ReceiveStringWait($SendPort,1000,1000)
ConsoleWrite("Sende1 "&$sende1&@CRLF)
WEnd
_CloseCOMPort($SendPort)
Ok, und als Ergebniss, bekomme ich z.B. etwas wie:
Spoiler anzeigen
Sende1
$GPRMC,022022,V,3900.0000,N,09500.0000,W,000.0,000.0,010105,003.8,E*7B
$GPGGA,022022,3900.0000,N,09500.0000,W,0,00,,,M,,M,,*49
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,01,00,000,,02,00,000,,03,00,000,,04,00,000,*7C
$GPGSV,3,2,12,24,00,000,,25,00,000,,27,00,000,,28,00,000,*75
$GPGSV,3,3,12,29,00,000,,30,00,000,,31,00,000,,32,00,000,*71
Daraus würde ich gerne in einen extra String die Zeile "$GPRMC,022022,V,3900.0000,N,09500.0000,W,000.0,000.0,010105,003.8,E*7B" isolieren. Am besten wären die Anhaltspunkte, ab $GPRMC, abzuschneiden und bis das nächste $-Zeichen von $GPGGA kommt. Die Daten "$GPRMC,022022,V,3900.0000,N,09500.0000,W,000.0,000.0,010105,003.8,E*7B" können varieren, deshalt die beiden äuseren Punkte.
Wie kann man aus dem String die Zeile am besten hinaus schreiben?
Lg Tim