Hallo,
Wie in einem Thread weiter unten schon erwähnt lese ich Daten aus meiner Wetterstation über RS232 aus. Ich bekomme von meiner Wetterstation 6 Byte in denen Werte im BCD Format vorliegen. Diese 6 Byte lese ich in ein array of Char weil mit Async Pro die Methode GetChar zur Verfügung stellt. Wie kann ich denn nun die einzelnen Chars konvertieren? Muss ich die nicht von Char nach BCD und von BCD nach Integer konvertieren? Es muss eine Zahl am Ende rauskommen.
So sieht mein Code aus. Es sollen 6 Byte zurückkommen aus denen sich uhrzeit und Datum dastellen lassen;
Code:
procedure TForm1.ComPortTriggerAvail(CP: TObject; Count: Word);
var
i, j, Temp: Integer;
test: array of Char;
begin
SetLength(Test,Count);
for i := 1 to count do
test[i - 1] := ComPort.GetChar;
for j := 0 to length(test) - 1 do
begin
Temp := BCDToInteger(StrToBcd(Test[j]), True); // <----Hier kommt der Fehler direkt beim ersten Durchlauf der Schleife:
List.Add(IntToStr(Temp)); // ... ist kein gültiger BCD-Wert! ...ist ein kleines Viereck,
end; // also ein nicht druckbares Zeichen denke ich
List.SaveToFile(ExtractFilePath(ParamStr(0))+ 'temp.txt');
end;
Hat jemand eine Idee?
Vielen Dank
Dragi