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







Zitieren

Lesezeichen