Der fragt den Serialport-Puffer ab, ob der größer 0 ist,
nicht ob das empfangene Byte > 0 ist. Ist aber in jeder
Programmiersprache, die ich kenne, gleich.
Wenn du nur bestimmte Zeichen übertragen haben
willst, kannst du das ja im Bascom - Programm bestimmen.
Alternativ kannst du auch einen x Bytes langen String
aus dem Port lesen und anschließend in deinem Windows-
programm filtern.
Ich lese in meinem PureBasic Programm genau 17 Zeichen
aus : -> 2 x 7 Bytes für die 2 Temperaturen
-> 1 Byte (ist ein Pipe-Zeichen ALT+124 |), das die beiden
Temperaturen voneinander trennt
-> + 2 Bytes (Chr(13) + Chr(10), das Bascom
beim Print - Befehl sowieso anhängt.
somit kann ich dann optimal ausfiltern :
Code:
Case #PB_Event_Timer
If IsSerialPort(#My_ComPort)
Bytes = AvailableSerialPortInput(#My_ComPort)
If Bytes >= 17
;O.k., here we go, read this one
ReadSerialPortData(#My_ComPort, @String, 17)
Sensor1 = Right(String, 9) ; 2 mehr wg. CR/LF
Sensor2 = Left(String, 7)
Endif
Endif
Lesezeichen