|
안녕하세요.heartsim(박경원)입니다.
음...전송된 문자가 디스플레이 된다면 일단은 성공한 것이죠.
만약, 그 헥사값을 구지 보실려고 한다면 다음과 같은 로직을 적절히 이용해보세요.
Label1->Caption="";
for(int i=1;i<(Edit1->Text).Length();i++)
{
Label1->Caption=Label1->Caption+"0x"+IntToHex(Edit1->Text[i],2)+" ";
}
가령, 위의 로직을 아래 함수에 추가시켜서 실행시키면 전송된 문자값에 대한
헥사값이 나오겠죠.
void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
{
AnsiString Str;
ComPort1->ReadStr(Str,Count);//보낸 데이터가 Str에 저장됨
TEdit1->Text=TEdit1->Text+Str;//이런식으로 하시면 보낸 데이터가 에디트에 표시됩니다.
Label1->Caption="";
for(int i=1;i<(Edit1->Text).Length();i++)
{
Label1->Caption=Label1->Caption+"0x"+IntToHex(Edit1->Text[i],2)+" ";
}
}
"1"문자에 대한 헥사값은 0x31로 나올겁니다.
다른 식으로 위 로직을 이용할 수도 있겠죠.가령 버튼을 눌렀을때 레이블에 헥사값이 나오게
할수도 있겠죠.
님께서 여러가지방법으로 출력시켜보시면 될겁니다.
그럼 열심히 하세요.
항상 운 좋은 날 되십시요.
초보 님이 쓰신 글 :
: 안녕하세요.. ^^
:
: 답변 감사드립니다.
:
: 답변해 주신 내용이 맞긴 맞는데요..
:
: 받은 데이타가 만약 헥사값이라면(예를 들어 0xFF) Edit 컴포넌트에 표시가 않되지 않나요?
:
: 그래서 이 받은값을 StrToInt로 변환할려고 했는데 이것도 않되더군요..
:
: 혹시 답을 아시면 알려주세요..
:
: 수고하세요..^^
:
:
:
:
:
: heartsim 님이 쓰신 글 :
: : 안녕하세요.
: : 현재 시리얼통신을 하고 계신데, 데이터를 날리고 받은 데이터를 표시할려고 하는데 안된다는
: : 말씀인가요?
: : 제 생각이 맞다면...
: :
: : 폼에 TEdit컴포넌트를 놓으시고, 받은 데이터를 표시해보십쇼.
: : 가령,
: :
: : void __fastcall TForm1::Button1Click(TObject *Sender)
: : {
: : ......
: :
: : ComPort1->WriteStr("1");//보내셨다면...
: :
: : ......
: :
: : }
: :
: : void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
: : {
: : AnsiString Str;
: :
: : ComPort1->ReadStr(Str,Count);//보낸 데이터가 Str에 저장됨
: : TEdit1->Text=TEdit1->Text+Str;//이런식으로 하시면 보낸 데이터가 에디트에 표시됩니다.
: :
: : }
: : "1"이라는 값을 보냈는데, 에디트에 1값이 디스플레이 되면 맞게 전송된것이죠.
: : 더 자세한 예제를 보실려면, cport예제 ComExampleCB5.bpr을 참고 하세요.
: :
: : 부디 제 생각이 맞길...^^;(아님 질문하신 내용을 제가 잘못 짚었을 수도..)
: : 만일 제가 잘못 이해한 거라면....^^;
: : 저에게 전화주십시요.직접 통화를 하는것이 님께서 구체적으로 어떤 걸 요구하는 지 알수 있을
: : 것 같네요^^........
: : 032-651-4141(개발실 박경원 주임 찾으세요) 016-316-8707
: :
: :
: : 그럼 수고 하시구요.
: : 항상 운 좋은 날 되십시요.
: :
: :
: :
: :
: :
: :
: :
: :
: : 초보. 님이 쓰신 글 :
: : : 안녕하세요..
: : :
: : : 답변감사합니다..
: : :
: : : 말씀하시는 내용은 이해하겠는데요..
: : :
: : : hex 값을 받는경우는 어떻게 해야하는지요..?
: : :
: : : 들어온 데이타를 제대로 받긴 받는거 같은데 데이타의 내용을 확인할방법을 모르겠습니다.
: : :
: : : 스트링값을 그대로 표시해도 않되고 받은 데이타를 StrToInt로 바꿀려고 하면 에러가 나더군요..
: : :
: : : 혹시 아시면 답변 부탁드립니다.
: : :
: : :
: : : heartsim 님이 쓰신 글 :
: : : : 기본적으로 hex값 전송이나 아스키 전송은 별 다를게 없죠^^
: : : :
: : : : 이렇게 한번 해보십시요.
: : : : 가령 "1"문자의 아스키코드값은 50입니다. 또 50이라는 값을 2진수로 바꾸면 0011 0010,
: : : : 또 hex값으로 바꾸면 0x32가 되죠.
: : : :
: : : : 이것을 정리하면,
: : : : "1"->50=00110010=0x32
: : : :
: : : : 시리얼로 날리겠습니다.
: : : : ComPort->WriteStr("1");//이렇게 하면 "1"이라는 문자가 전송됩니다.
: : : : ComPort->WriteStr(50) = ComPort->WriteStr(00110010) = ComPort->WriteStr(0x32)
: : : : 데이터 날릴때 배열이나 버퍼를 잡아서 전송하시는게 좋겠죠?^^;
: : : :
: : : : 위의 네개의 전송형태는 같은 값을 전송합니다.
: : : : 참고하시구요...제가 테스트는 안 해봤는데, 혹 모르니 잘못된 것이 있음 말씀하십시요.
: : : :
: : : :
: : : : 항상 운 좋은 날 되십시요.
: : : :
: : : :
: : : :
: : : : 초보 님이 쓰신 글 :
: : : : : 안녕하세요
: : : : :
: : : : : 자료실의 ComPort262 라는 컴포넌트를 테스트해보고 있는데요..
: : : : :
: : : : : 이 컴포넌트로 Hex값도 보내고 받을 수 있나요?
: : : : :
: : : : : 아스키값은 잘 되던데 Hex값은 제대로 않받아지는거 같은데..
: : : : :
: : : : : 확실하게 아시는분은 답변좀 부탁드립니다.
|