|
제가 타이머 인타발을 20으로 하고
타이머 내부에서 아이들을 50을 주고 1초를 만들엇는데요
Start
The time is Sec 0 of MSec 772
The time is Sec 0 of MSec 772
Start
The time is Sec 0 of MSec 804
The time is Sec 0 of MSec 804
Start
The time is Sec 0 of MSec 835
The time is Sec 0 of MSec 835
Start
The time is Sec 0 of MSec 866
The time is Sec 0 of MSec 866
Start
The time is Sec 0 of MSec 897
The time is Sec 0 of MSec 897
Start
The time is Sec 0 of MSec 928
The time is Sec 0 of MSec 928
Start
The time is Sec 0 of MSec 960
The time is Sec 0 of MSec 960
위에 보시는거처럼 타이머 끝난 지점에서 772 가 다음 시작은 804인거 같습니다.
그럼 대략 32MSec에서 31MSec 까지 수준인거 같습니다.
인타발은 20인데 ㅜㅜ 그말은 외부 코드에 의해서 타이머가 조금씩 지연되는거 같습니다.
고곤 이해는 되는데 해결할 방법은 없을까요?
으흑.... 32MSec가 누적이 되서 그런거 같습니다.
20인타발을 49회 무시하고 50회 째에 작동하는데요
대략 32MSec에러값 * 50번 하니까 1.6초가 나오는군요
지금 1.6초 가량 지연되는걸로 보입니다.
20인타발로 쓰는이유는 프로그램에서 필요한 5가지 정도의 모드가 있습니다.
예를들면 저장모드,화면에 뿌리는모드,데이타 읽는 모드... 등등
모드별로 시간을 다르게 지정해 주기 위해서 하다보니 저런 코드가 만들어졌습니다.
MOD를 50로 잡고
10에서 코드 하나 처리하고 빠져나오고
20에서 코드하다 처리하고 빠져 나오고 하는등등...
제가 좀 무리하게 짠 건가요...
마이컴 짜는 습관으로 짜다보니... 영 어렵군요 ㅎ
송신영 님이 쓰신 글 :
: 코드에 문제가 있는겁니다.
: 타이머가 정확한 것은 아니지만 인터벌을 1000msec로 설정시
: 2초 정도에 한번 실행되고 하는 정도는 아닙니다.
: 타이머 내부에서 먼가 딜레이를 많이 잡아먹고 있는 겁니다.
: 타이머 함수 시작 부분에서 시간 찍고 마지막 부분에서 시간 찍어서
: 차이가 얼마나 나는지 확인해보세요.
:
: 프로그램 초짜 님이 쓰신 글 :
: : 안녕하세요 초짜 프로그래머 입니다.
: :
: : 기계와 통신하는 프로그램을 주로 다룹니다...
: :
: : State 라는 데에 현제 상태를 저장합니다...
: :
: : 그럼 GUI에서는 현제 상태를 저장합니다.
: :
: : 타이머를 이용해서...
: :
: : sprintf(TempStatedata, "상태는 %s, 시간은 %s, " State,TimeData.c_str());
: :
: : 요론 명령으로 출력합니다.
: :
: : 근데 타이머가 1000인데 시간이 정확히 1초 수준에서 저장이 안되는군요
: :
: : 뭐 가끔 틀려지는거라면 이해 되는데 ( 10초에 1초 정도 까지 괜찬을듯..)
: :
: : 근데 아에 틀어져서 2초 수준에서 1회 저장하는 수준이에요 ㅜㅜ
: :
: : 아마도 다른곳에서 잡고 있거나 할거 같은데..
: :
: : 이런건 스레드 말곤 답이 없나요? 아님 제가 잘못 한건가..
|