Hallo, ich nutze oben genannte ComPort Komponente. Ich lese Daten des ComPortes in folgender Form aus:
void __fastcall TForm1::ComPort1Rx80Full(TObject *Sender)
{
char* cpInputBuf = new char [819];
ComPort1->Read(cpInputBuf, 819);
asReadBuf = asReadBuf + AnsiString(cpInputBuf);
delete[] cpInputBuf;
if(asReadBuf.Length() >= 2457)
{
AnsiString asOut;
for(int x=1; x<= asReadBuf.Length(); x++)
{
if (x==1) {
asOut = IntToStr((int)(unsigned char)asReadBuf[x]);
}
else {
asOut = asOut + "\r\n" + IntToStr((int)(unsigned char)asReadBuf[x]);
}
}
ListBox1->Items->Add(asOut);
ListBox1->Items->SaveToFile("Daten.txt");
asReadBuf = "";
}
}
IN WORTEN: Wenn der Empfangspuffer zu 80% gefüllt ist, werden 819 Byte (etwa 80% von 1024byte) ausgelesen. Wenn der Ansistring asReadBuf (definiert als private) eine Länge von mindestens 2457 erreicht hat, wird in die ListBox geschrieben und gespeichert.
Problem ist jetzt, ich kann keine Nullen empfangen...liegt wohl an "char"...aber mit "unsigned char" bekomme ich das nicht hin! :-( ...außerdem bekomme ich alle 819 Byte (also genau die größe der Eingelesenen Byte pro OnRx80Full) Fehler. Es schleichen sich Zahlengruppen wie {49, 60, 51, 147} ein...zusätzlich zu den richtigen Messwerten - es geht also nichts verlohren, sondern es kommt "Quatsch" hinzu! Es wird also wohl zu viel aus einem Speicher gelesen, aber wo??
Danke für Tipps!
void __fastcall TForm1::ComPort1Rx80Full(TObject *Sender)
{
char* cpInputBuf = new char [819];
ComPort1->Read(cpInputBuf, 819);
asReadBuf = asReadBuf + AnsiString(cpInputBuf);
delete[] cpInputBuf;
if(asReadBuf.Length() >= 2457)
{
AnsiString asOut;
for(int x=1; x<= asReadBuf.Length(); x++)
{
if (x==1) {
asOut = IntToStr((int)(unsigned char)asReadBuf[x]);
}
else {
asOut = asOut + "\r\n" + IntToStr((int)(unsigned char)asReadBuf[x]);
}
}
ListBox1->Items->Add(asOut);
ListBox1->Items->SaveToFile("Daten.txt");
asReadBuf = "";
}
}
IN WORTEN: Wenn der Empfangspuffer zu 80% gefüllt ist, werden 819 Byte (etwa 80% von 1024byte) ausgelesen. Wenn der Ansistring asReadBuf (definiert als private) eine Länge von mindestens 2457 erreicht hat, wird in die ListBox geschrieben und gespeichert.
Problem ist jetzt, ich kann keine Nullen empfangen...liegt wohl an "char"...aber mit "unsigned char" bekomme ich das nicht hin! :-( ...außerdem bekomme ich alle 819 Byte (also genau die größe der Eingelesenen Byte pro OnRx80Full) Fehler. Es schleichen sich Zahlengruppen wie {49, 60, 51, 147} ein...zusätzlich zu den richtigen Messwerten - es geht also nichts verlohren, sondern es kommt "Quatsch" hinzu! Es wird also wohl zu viel aus einem Speicher gelesen, aber wo??
Danke für Tipps!
Comment