Seite 2 von 2

Verfasst: 17.02.2009 23:45
von ts-soft
Vielleicht wurden die einzelnen Werte durch Tab getrennt, einfach wieder mit

Code: Alles auswählen

t.s = RemoveString(t.s, #TAB$)
entfernen.

Verfasst: 17.02.2009 23:50
von Crawler
Habe ich gerade versucht, auch chr(13) ergab keinen Erfolg. Es ist nur merkwürdig, warum der Code in der Hauptschleife funktioniert, läge es wirklich an zusätzlichen Zeichen, hätte ich ja dort das gleiche Phänomen.

Verfasst: 17.02.2009 23:51
von HeX0R
Wenn du dasselbe wie in deinem Ursprungscode erreichen willst, musst du die Strings natürlich auch zusammenbasteln:

Code: Alles auswählen

If IsSerialPort (1)
  nmea.s + GetTextSerial ()
EndIf

Verfasst: 18.02.2009 00:03
von Crawler
So wie ich das sehe funktioniert das jetzt. DANKE! Da hätte ich aber auch drauf kommen müssen, aber manchmal sieht man den Wald vor lauter Bäumen nicht. Das Kürzen des Datensatzes auf ca. 1000 Zeichen mache ich dann doch wieder in der Hauptschleife, sonst wird mir nmea.s zu lang.

Verfasst: 18.02.2009 00:04
von HeX0R
Das liesse sich auch so lösen:

Code: Alles auswählen

Procedure.s getTextSerial(result.s)
  Protected input.i, *mem, length.i
 
  input = AvailableSerialPortInput(1)
  If input > 0
    *mem = AllocateMemory(input)
    If *mem
      length = ReadSerialPortData (1, *mem, input)
      If length
        result + PeekS(*mem, length, #PB_Ascii)
        If Len(result) > 1024
          result = Right(result, 1000)
        EndIf
      EndIf
      FreeMemory(*mem)
    EndIf
  EndIf
 
  ProcedureReturn result
EndProcedure 

Define.i event
Define.s nmea

Repeat
	event=WaitWindowEvent (20)
	Select event
		Case #PB_Event_CloseWindow
			If IsSerialPort(1)
				CloseSerialPort (1)
			EndIf
			ende=1
		Case #PB_Event_Gadget
			Select EventGadget ()
				Case 20
					;MessageRequester ("Info", "Koordinate erfassen")
					;.
					;.
					;.
				Case 21
					ende=1
			EndSelect
	EndSelect

	If IsSerialPort (1)
		nmea = GetTextSerial (nmea)
	EndIf

	;.
	;.
	;.

Until ende=1


Verfasst: 18.02.2009 00:12
von Crawler
Das ist auch hübsch, das Programm funktioniert bestens und hat sich bisher noch nicht verschluckt.