|
>> 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"를 해도 중단되지 않는 경우도 있나요?
: : : 혹시 유 경험자 계시면 조언 부탁드립니다.
: : :
: : :
: : :
|