Anfängerfragen zum Programmieren mit PureBasic.
ts-soft
Beiträge: 22292 Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43 CPU: AMD FX-6300 Six-Core Processor GraKa: GeForce GTX 750 Ti, 2 GB Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin
Beitrag
von ts-soft » 17.02.2009 23:45
Vielleicht wurden die einzelnen Werte durch Tab getrennt, einfach wieder mit
entfernen.
Crawler
Beiträge: 110 Registriert: 08.02.2009 19:52
Computerausstattung: PB 4.41 Win7 64bit
Beitrag
von Crawler » 17.02.2009 23:50
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.
HeX0R
Beiträge: 3042 Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X 96Gig Ram NVIDIA GEFORCE RTX 3060TI/8Gig Win11 64Bit G19 Tastatur 2x 24" + 1x27" Monitore Glorious O Wireless Maus PB 3.x-PB 6.x Oculus Quest 2 + 3
Kontaktdaten:
Beitrag
von HeX0R » 17.02.2009 23:51
Wenn du dasselbe wie in deinem Ursprungscode erreichen willst, musst du die Strings natürlich auch zusammenbasteln:
Crawler
Beiträge: 110 Registriert: 08.02.2009 19:52
Computerausstattung: PB 4.41 Win7 64bit
Beitrag
von Crawler » 18.02.2009 00:03
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.
HeX0R
Beiträge: 3042 Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X 96Gig Ram NVIDIA GEFORCE RTX 3060TI/8Gig Win11 64Bit G19 Tastatur 2x 24" + 1x27" Monitore Glorious O Wireless Maus PB 3.x-PB 6.x Oculus Quest 2 + 3
Kontaktdaten:
Beitrag
von HeX0R » 18.02.2009 00:04
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
Crawler
Beiträge: 110 Registriert: 08.02.2009 19:52
Computerausstattung: PB 4.41 Win7 64bit
Beitrag
von Crawler » 18.02.2009 00:12
Das ist auch hübsch, das Programm funktioniert bestens und hat sich bisher noch nicht verschluckt.