Edit1... Ansistring und Hexzahlen
-
Guten Morgen.
Ich bekomme über die VaComm Hexzahlen rein 0x30-0x39.
void __fastcall TForm1::VaComm1RXChar(TObject *Sender, int Count) { unsigned int i; unsigned char *caBuffer; caBuffer = (unsigned char *)malloc(Count +1); VaComm1->ReadBuf(caBuffer,Count); for (i=0; i<Count-1; i++) { Edit1->Text = Edit1->Text+(IntToStr(caBuffer[i]-0x30)); } }
bekomme ich jetzt über Uart: 39 39 39 39 39 39 was ja 999999 entspricht, steht dieses leider nicht im Edit1 Feld. Bekomme ich 31 32 33, so steht auch im Edit Feld 123.
Wer kann mir helfen ?
Danke, Markus
-
Deine Konvertierung ist völlig unnötig!
Laß dir einfach mal den Inhalt von caBuffer ausgeben (vorher nullterminieren):void __fastcall TForm1::VaComm1RXChar(TObject *Sender, int Count) { unsigned char *caBuffer = (unsigned char *)malloc(Count +1); VaComm1->ReadBuf(caBuffer,Count); caBuffer[Count] = '\0'; Edit1->Text = caBuffer; }
Merke: du kriegst einfach Bytes zurück - wie du sie anzeigst (ob als Hex-Werte oder aber als ASCII-Werte) ist ganz allein eine Frage der Formatierung.
-
Hallo...
Error: Connot convert 'unsigned char * to 'AnsiString'
lg, markus
-
Hallo
AnsiString will ein char*, nicht ein unsigned char*. Schau mal ob das VaComm auch mit einem char* arbeitet. Wenn nicht must du eben mit dem Holzhammer ran :
Edit1->Text = reinterpret_cast<char*>(caBuffer);
Natürlich könnte sich dadurch die Bedeutung der Zeichen ändern, nur die Zeichen bis ASCII 128 bleiben unverändert.
bis bald
akari