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
[73786] Re:Re:Re:수신 데이터 처리 부분을 확인해 보세요
금목암[손효철] [iconms1] 4667 읽음    2016-07-29 22:54
소스를 못보고 얘기하긴 그런데 시리얼통신이든  lan통신이든
그런식으로 깨지는 경우는 없습니다
vc에서는 타이머를 너무 작게 잡아서 윈도우가
처리 못하고 넘어가거나 (10ms이하) 또는 처리시간이 너무 걸리거나
버퍼를 잘라서 붙일때 잘못하셔서 중간을 놓치거나 하는등 의심 가는곳은 많은데
c++builder 는 처리 속도가 빨라서 아주 길게 처리루틴을 만들지 않으면 놓치거나
이어붙이기 에러는 안생깁니다
그리고 장비가 웨이트나 최소 수신 응답시간 송신 응답시간이나 대기시간이
있는지 보시고 (오실로스코프나 중간에 가로채기 로 주고받는거 가로채보시길)
정상적으로 주고받으면 소스 잘못하신겁니다
ppa5.0 이나 솔내시스템 통신프로그램으로 가로채기 가능합니다 가상 시리얼포트로도
가로채기 가능하시고

정성훈.해미 님이 쓰신 글 :
: >> TX(장비 1상태 요청)
: >> (RX타임아웃)
: >> TX(장비 2상태 요청)
: >> RX(장비 1상태 & 장비 2상태 값이 깨져서 수신됨)
:
: 이렇게 됏을 가능성이 젤 커 보입니다.
:
: 그렇다면
:
: 실제로 TX데이터가 장비 로 재대로 갔는지
: 장비에서 재대로 수신됐는지
: 확인부터 해야 할 것 같네요.
:
: 무슨 이유든
: 장비쪽에서 수신을 못하는 경우가 생기는 것으로 보입니다.
:
:
: newhuni 님이 쓰신 글 :
: : 일단 타이머 이상 동작은 가능성이 낮다는 거네요.
: :
: : 저도 첨에 같은 부분을 확인해 봤는데 특이사항은 없었습니다.
: :
: : 코드에서는 RX타임아웃이 걸리거나, RX패킷이 수신되고 정상패킷 판정이 나면 "Timer1->Enabled = true" 코드가 실행됩니다.
: :
: : 다른 방법으로는 Timer1을 Enable시킬수가 없거든요.
: :
: : 그런데 통신 로그를 보면 TX가 2번 실행되는게 보여서 혹시 타이머 문제일까 해서 물어본 것입니다.
: :
: : 간단하게 프로그램을 만들어서 어제부터 돌려봤는데 Enable이 false가 안되는 경우는 없었습니다.
: :
: : 음... 좀더 생각해 봐야 겠네요....
: :
: : 조언 감사드립니다. (--)(__)(--)
: :
: :
: : 정성훈.해미 님이 쓰신 글 :
: : : 타이머 이상 동작보다는
: : : 로직(소스코드) 상의 문제가 아닌가 합니다.
: : :
: : : 1번째 요청을 보내고
: : : 특정 작업을 한 후
: : : 2번째 요청을 보내실건데
: : :
: : : 작업을 하는 로직에서
: : : Timer1->Enabled = true 로 하는 조건을 확인 해 보시기 바랍니다.
: : :
: : : Rx처리가 정상적으로 안되었는데
: : : Timer1->Enabled = true를 살리는 부분이 있는지 확인 해보시는 것이
: : : 어떠한지요.
: : :
: : :
: : :
: : : newhuni 님이 쓰신 글 :
: : : :
: : : : 장비와 통신할 때 타이머를 사용해서 주기적으로 통신합니다.
: : : :
: : : : 타이머 이벤트 함수에서 TX패킷을 보내고 "Timer1->Enabeld = false"를 하여 타이머를 죽입니다.
: : : :
: : : : 그리고 다른 일을 수행하고 다시 "Timer1->Enabled = true"하여 TX패킷을 보내게 되어 있습니다.
: : : :
: : : : 그런데 가끔 Timer1이 중지않고 한번정도 살아있는 것 같습니다.
: : : :
: : : : 같은 프로그램을 오랫동안 사용하는데 이런적은 없었는데 작년에 중국쪽 현장에서 가끔 발생합니다.
: : : :
: : : : 통신 로그 기록을 보면 정상상태는 아래와 같이 TX,RX 반복입니다.
: : : : TX(장비 1상태 요청) -> 정상
: : : : RX(장비 1상태 응답) -> 정상
: : : :
: : : : 그런데 가끔 아래와 같이 TX, TX, RX가 되버리는 경우가 발생합니다.
: : : : TX(장비 1상태 요청)
: : : : TX(장비 2상태 요청)
: : : : RX(장비 1상태 & 장비 2상태 값이 깨져서 수신됨)
: : : :
: : : : "Timer1->Enabled = false"를 해도 중단되지 않는 경우도 있나요?
: : : : 혹시 유 경험자 계시면 조언 부탁드립니다.
: : : :
: : : :
: : : :

+ -

관련 글 리스트
73770 "Timer1->Enabled = false"를 해도 중단되지 않는 경우도 있나요? newhuni 4357 2016/07/27
73772     수신 데이터 처리 부분을 확인해 보세요 정성훈.해미 4378 2016/07/27
73775         Re:수신 데이터 처리 부분을 확인해 보세요 newhuni 4355 2016/07/27
73776             Re:Re:수신 데이터 처리 부분을 확인해 보세요 정성훈.해미 4255 2016/07/27
73786                 Re:Re:Re:수신 데이터 처리 부분을 확인해 보세요 금목암[손효철] 4667 2016/07/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.