C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[41887] Re:[질문 ]cport 통신중 원하는 데이터만 간추린후 표시하기
즐겁게~ [] 1170 읽음    2005-09-10 13:33
질문했는데, 답변이 없으면 넘 답답하잖아요... 제가 많이 아는건 아니라서...
그냥 참고삼아 읽어주세요~

시리얼 통신을 할 때 hex 0x20이하의 값들은 캐릭터로 표현하기 어렵기때문에
'\x06'방법으로 보냅니다. \06은... 스트링인지 캐릭터인지 판단이 잘 안되지만
질문을 읽어보면 0x06h값(1byte)이 맞는것 같습니다.
\06 0002 XXXX 0000 DDDD \R\N
----                                    ------
hex 0x06(???)                      이건 조금 특이하게 사용되는건데, hex 0x0d,0x0a와 동일한 표현입니다.
님께서...
" '\06'6[0x06],'0'48[0x30]이렇게 표시돼는데 []안에 들어있는값은 먼가여" 물으셨는데,
[]안의 값은 hex(헥사값) 맞습니다.

또 님께서 10진으로 바꾸는 방법에 대해 물으셨는데...
사용 용도에 따라 10진으로 바꿔쓰는것이 좋습니다.

위의 데이터를 버퍼에(예- char buf[20+1],buf1[4+1]) 저장한다면 아래의 형태로 저장이 되며
(스트링 형태로 받아들여도 스트링을 캐릭터처럼 처리가 가능하기때문에 처리하는 방법은 비슷합니다.)
buf[0] buf[1] ]  buf[2]    buf[3]    buf[4]  .....  buf[15] .....
0x06    '0'(0x30) '0'(0x30) '0'(0x30) '0'(0x32)     'D'(0x44) ....
만일 "0002"라는 데이터만 10진으로 바꾸고 싶으면 그 데이터를 다른버퍼에 copy해서
atoi()함수를 이용하면 되구요...
strncpy(buf1,&buf[1],4);
int i = aoti(buf1);
*다른버퍼에 copy하는 이유는 대부분의 함수에서는 null값을 check하여 처리하기 때문입니다.

XXXX값을 받고싶으면 위와 비슷한 형태로
strncpy(buf1,&buf[5],4);해서 buf1의 값을 이용하시면 되구요.
도움이 되셨으면 좋겠네요~~ ^^



chac1_초보 님이 쓰신 글 :
: 프로그램 한지 일주일 조금 지난 초보입니다.
:
: cport 통신중에 궁금한게 있어서 글을 씁니다.
:
: ㅟ그램을 실행하면  DEBUG INSPECTOR 에서보면
: \06 0002 XXXX 0000 DDDD \R\N 이런형식으로 데이터가 들어 옵니다...[공백을 넣은것은 보기편하라고 넣은 것임]
: 거기서 데이터를 보면 '\06'6[0x06],'0'48[0x30]이렇게 표시돼는데 []안에 들어있는값은 먼가여 아스키코드 값인가여 (음 아스키코드표를 보니 아스키 값은 아닌듯 그냥 16진수 인가...)
:
: 여기서 중요한 질문 위데이터에서 보면 XXXX와 DDDD부분은 데이터 값이 변합니다..
: 현재 필요한 부분은 XXXX값인대  가변이 안되는 부분은 이렇게 표시 해서 잘랐습니다..
:
: ComDataPacket1->StartString.printf("%c", 0x0630303032);// 앞데이터 자르기
: ComDataPacket1->StopString.printf("%c", 0x0D0A);   // 뒷 데이터 자르기
:
: 이렇게 표시하는 것이 옳게 표시된 것인지 궁금하구여
: 이렇게하면 데이터가 XXXX 0000 DDDD이렇게 표시가 되는대 가변되는 부분은 어떻게 짤라야 하나여  문자를 상수로 변경후 FFFF 0000 0000로  & 마스크 하면 되는 건가여 그럼 데이터가 필요 한 부분만 원상태로 남을거 같은대그다음에 다시뒷데이터를 자르면 될것두 같은대  안되는 군여(코드를 짤수거 없내여).  아니면 간단하게  하는 방법아신다면 알려주십시요..
:
: 정리
: 질문
: 1. 들어오는 데이터의 형식
: 2. 데이터의 원하는 부분을 간추리 방법의 옳음 과 간단한 방법이 있는지.
: 3.  위 데이터를 10진형태의 데이터를 표시 할라면 어뗗게 해야 하는지
:   (만약 방법들이 있다면 소스도좀 적어주십시여)
:   고수 님들의 많은 답변을 기다립니다..

+ -

관련 글 리스트
41870 [질문 ]cport 통신중 원하는 데이터만 간추린후 표시하기 chac1_초보 1014 2005/09/09
41902     답변 주세서 감사합니다... 많은 도움이 되었습니다..(냉무) chac1_초보 898 2005/09/12
41891     Re:[질문 ]cport 통신중 원하는 데이터만 간추린후 표시하기 김시환 1060 2005/09/12
41887     Re:[질문 ]cport 통신중 원하는 데이터만 간추린후 표시하기 즐겁게~ 1170 2005/09/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.