|
소스코드가 좀 이해가 잘 않되지만, 제 나름대로 해석하자면 시리얼포트를 통하여 문자를 입력받아 헥사(16진수)코드로 Memo에 뿌리는 거 같네요.
그렇다면,
-------------------------------
AnsiString Str = "";
AnsiString sHex;
AnsiString tHex;
ComLed1->State = True;
ComPort->ReadStr(Str, Count);
tHex = "";
for (int i=1; i <= Str.Length(); i++) // AnsiString이므로 Str [0]에는 크기가 포함되어 있음
{
sHex.sprintf ("0x%02x", Str [i]);
tHex = tHex + sHex + " ";
}
Memo->Lines->Add (tHex);
--------------------------------------------
이렇게 한번 해 보세요. 그래도 문제가 되는지 모르겠네요.
(제가 테스트해 보지는 못했습니다. 죄송)
조진수 님이 쓰신 글 :
: 우선 smleelms님 감사합니다.
:
: 제가 답변을 보기 전에 test해본 소슨데여~ 헥사 형식으로 잘 받아서 뿌려주는데, 받은 값 0x84,0x90 등이
:
: 화면에 표시되는 건 0xffffff84 형식으로 표현이 됩니다. 그러나 0x00 0x05 0x03 0x10 등은 원래 보내주
:
: 는 값 그대로 표시 되는데, 왜 0x84나 0x90 등과 같은 헥사 값은 0xffffffxx 형식으로 표현이 되나여...
:
: 이걸 원래 값표현 대로 0x84나 0x90등과 같이 표현 하려면 어떻게 해야 되나여~ 답변 부탁드립니다.
:
: AnsiString Str = "";
:
: AnsiString sHex;
: char szHex[64];
:
: ComLed1->State = True;
:
: ComPort->ReadStr(Str,Count);
:
: for (int i=0; i<Str.Length(); i++)
: {
: sprintf(szHex, "0x%02x", Str.c_str()[i]); // 대문자로 표시하고 싶으면 0x%02X
: sHex = sHex + szHex + " ";
: }
:
: Memo->Text = Memo->Text + sHex;
:
|