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
[52660] 시리얼통신 데이터 수신에 대한 질문입니다.
김명섭 [] 1507 읽음    2008-03-12 10:07
10 04 04 07 27 02 23 08 00 00 00 2C 8D 8F 29 70 8A 26 51 87 32 C5 94 00 00 00 88
20 00 04 07 27 02 23 57 2C 8D 8F 29 70 8A 00 00 00 26 51 86 32 C5 94 00 00 00 88
20 01 04 07 27 02 24 51 2E 4F 92 29 71 8A 00 00 00 26 51 88 32 C5 94 00 00 00 88
20 02 04 07 27 02 25 57 2C 8D 90 29 71 8B 00 00 00 26 51 86 32 BF 42 00 00 00 88
30 00 04 07 27 02 26 50 00 00 00 00 00 00 00 00 00 00 00 00 32 C5 94 00 00 00 88
30 01 04 07 27 02 27 09 00 00 00 00 00 00 00 00 00 00 00 00 32 BB 31 00 00 00 88
30 02 04 07 27 02 28 20 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 00 00 00 88
위 처럼 Hexa값을 시리얼로 받아야 하는데 어떻게 받아야 하는지 모르겠네요.

Comdrv32를 사용했습니다.
// 시리얼 통신에서 OnReceiveData의 DataSize는 유동적입니다.
// 10개일수도 100개일수도 50개일수도 있습니다..

void __fastcall TForm1::cpdComReceiveData(TObject *Sender, Pointer DataPtr,
      DWORD DataSize)
{
AnsiString strRecvData,strRecvDataAll;
char *pBuf;
char buffer[100];

   for( int i=buf;i<DataSize;i++)
   {
       buffer[i]=*pBuf;
       *pBuf++;
   }

    if(buffer[2]==0x04 & buffer[26]==0x88)
    {
       for(int j=2;j<26;j++)
       {
    strRecvData.sprintf("%02X",buffer[j]&0xFF);
    strRecvDataAll+=strRecvData;
       }
    }
}
위와 같이 하면 중간에 데이터가 안들어올때가 있더라고요ㅠㅠ

04~88까지만 잘라서 받고 싶은데 어떻게 하면 좋을까요^^

+ -

관련 글 리스트
52660 시리얼통신 데이터 수신에 대한 질문입니다. 김명섭 1507 2008/03/12
52664     Re:시리얼통신 데이터 수신에 대한 질문입니다. 금목암 1521 2008/03/12
52674         Re:Re:답변 감사합니다^^(내용무) 김명섭 1122 2008/03/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.