Gast
#1027950
Hallo Fachleute ;-) Einen Thread zu diesem Thema gibt es schon, der hat mir aber nicht weitergeholfen. Also hier nochmal etwas detailierter. Ich versuche nun seit einigen Tagen mit Visual Basic 6.0 einen über den UART übertragenen Wert ordentlich zu empfangen bzw. anzuzeigen. Vergebens! Bei dem Wert handelt es sich um einen Rückgabewert (Integer) einer Funktion welche das Temperatur-IC MAX6675 ausliest. Über den UART verschicke ich zwei Byte hintereinander.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
Meine Idee war jetzt, ich versende diese zwei Bytes, lese sie in VB einzeln aus. Zuerst das erste Byte, schiebe es 8 Bit nach links und dann zweite Byte. Das Problem: Der Paramter RThreshold gibt an, nach wievielen empfangenen Zeichen das ComReceive-Ereignis ausgelöst wird, InputLen gibt an wieviele Zeichen aus dem Empfangspuffer eingelesen werden sollen. Wenn in dem ersten Byte eine NULL drin steht, wird diese ,trotz des Parameter NullDiscar = False, von VB aber ignoriert. Setzte ich nun den Parameter InputLen = 2, wird nie ein Wert eingelesen wenn das erste Byte eine NULL enthält, setzte ich InputLen = 1 wird immer nur ein Byte eingelesen, sprich, wenn in dem ersten Byte keine NULL drin steht, wird trotzdem nur eins eingelesen... Setze ich InputLen = 0, wird zwar der ganze Eingangsbuffer eingelesen (so kommts mir zumindest vor) allerdings kommt das VB nach einiger Zeit aus dem Rythmus. Das ist das erste Problem. Das zweite Problem: Ich versende die Temperatur direkt als String. Dann stehen je nach gemessener Temperatur unterschiedlich viele Zeichen im Empfangspuffer. Hier kann ich also auch keine feste InputLen setzen da die Zeichen ja je nach Temperatur variieren. Somit kommt das VB wieder aus dem Rythmus. Hier mal die Konfiguration des COM-Controls: MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.RThreshold = 1 MSComm1.SThreshold = 1 MSComm1.InputLen = 0 MSComm1.NullDiscard = False MSComm1.PortOpen = True Weiss jemand von euch wie man sowas am einfachsten proggen kann? Danke schonmal im Voraus.