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
[10330] Re:Timer에 관련해서..
최보현.U&I [uriduri] 1011 읽음    2001-08-27 22:06
유엔아이 현입니다.

에구 좀 까다로운 질문이네요~
글구 질문제목을 점 어울리게 쓰시지요~
485 리시브 루틴어케 짜요 하고 물어보면서 타이머 관련이라니원
타이머 한참 찾았습니다.

리시브 루틴은 일단 어떤 통신라이브러리를 쓰는지는 모르겠지만
일반적으로 리시브 이벤트에서 ...

데이타를 받으면 그 데이타를 프로토콜 크기 만큼의 링큐 버퍼를 잡으시고
큐로 돌려가면서 테일 검사를 하고 맞으면 헤더검사를 하고 그것도 통과하면
체크썸 체크를 하시는게 일반적입니다.

뭐 간단하게 여기 까지 답변할수 있겠구요~~

링큐 운용법까지 알려 달라고 하면 헉 ... 자료 구조 책 디저보십시요라고 답변
할겁니다.

자료구조를 글로 설명하기에는 영 말주변이 없어서리~~

저희 같은 경우는 시리얼 통신과 프로코콜을 잡아주는 로직자체를 간단한
프로퍼티조정으로 가능하게 컴포넌트화 해서 사용하구 있답니다.

이부분 공개는 아직까지는 힘들겠군요~~

그럼

콩아 님이 쓰신 글 :
: 안녕하세요!
: 안녕하세요.. 패킷을 만들어서 데이터를 날려야 하거든요..(RS485통신을 합니다.)
:
: RS485통신을 하는데 있어서 시스템에서 단말기로 전송을 시작하기전에 Token연결(서로통신할 수 있는 ok 할수 있는...)하는 패킷을 먼저 날려보내면 단말기 쪽에서 시스템에서 보낸 메세지를 동일하게 보내면 token할수 있는 것이고 그렇지않으면 에러가 나는 프로그램을 작성하려고 합니다. 좀 도와주세요!!
:
: void __fastcall TfrmDoorDownload::labdownloadClick(TObject *Sender)
: {
:    BYTE bSendBuf[256], bBuf[512];
:     int iSendLen;
:
:     memset(bSendBuf, ' ', 256);
:
:     MakeDL_START_pkt(0xA1, 1, 1, bSendBuf, &iSendLen);
:     cpComport5->Write( bSendBuf , iSendLen );
:
:     BinToHexASCii ( bBuf, bSendBuf, iSendLen);
:     meotrandata->Lines->Add( "COM5 Send --> " + AnsiString ((char *) bBuf) );
: }
:
:
: // 단말기 패킷부분
: // 아래는 단말기로 보내기위한 token를 보내는 패킷의 정의부분입니다.
: //FC 0xA0 -> Token패킷    (비고)'0'/'1' : Line Off / Line On
:
: void MakeDL_START_Pkt(BYTE func, BYTE* Buf, int iLen, int* iPktLen)
: {
:     BYTE LRC = 0;
:     BYTE pkt[256];
:
:     pkt[0] = STX;             // Strat of Text
:     pkt[1] = (iLen+1)>>8;    // Packet Length - 2bytes Integer value (LEN1)
:     pkt[2] = iLen+1;         // Packet Length - 2bytes Integer value (LEN2)
:     pkt[3] = func;           // Function Code
:     memcpy(pkt+4, Buf, iLen); // Packet n번째 DATA
:     pkt[4+iLen] = ETX;        // End of Text
:     for (int i =1;i<=4+iLen;i++) // LEN1에서부터 ETX까지 EX-OR한 값
:         LRC ^= pkt[i];
:
:     pkt[4+iLen+1] = LRC;
:     memcpy (outpkt, pkt, iLen+5 );
:     *iPktLen = iLen+5;
: }
:
: 위의에는 token패킷을 보내기위한 부분과 패킷을 정의한 부분으로 되어있습니다.
: 제가 하고자하는것은 위의 token패킷을 보내고자하는 부분이 맞았는가 하는것이고 그리고 token패킷을 보내고 응답패킷을 받야하 하는데 이것을 Data Receive라는 함수를 만들어야 한다고 하는데 어떻게 작성하는 되는지요... 좀 알려주셔요..
: 질문이 두서없었더라면.. 다시 질문해주셔요...
: 꼭 답변좀 부탁드립니다.
: 수고하셔요!!!

+ -

관련 글 리스트
10329 Timer에 관련해서.. 콩아 995 2001/08/27
10330     Re:Timer에 관련해서.. 최보현.U&I 1011 2001/08/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.