Q&A

  • 델파이의 밀리세컨드 TT
RS-232 통신중에 패킷 인터벌이 최소 1.1 m second 이상이라고
되어 있드라구요 그래서 밀리세컨드 관련 함수를 찾고

START := MillisecondOfTheSecond(now);
START := START +37;
while MillisendofTheSecond(now) < START do
  ;

35 이하는 패킷을 받지 못하더라구요.
이렇게 쓰고 패킷이 되돌아 올때 인터벌을 줬는데
어떤때는 잘 받다가 어떤때는 여기서 계속 무한루프를 도는것
같습니다. 어디가 잘못 됐는지 좀 아시는분 알려 주세요 TT

통신 컴포넌트는 CPORT를 씁니다. 이상하게 3 번에 1,2번 꼴로
무한루프를 돌거나 프로그램이 서버립니다. TT
3  COMMENTS
  • Profile
    최용일 2004.01.10 06:04
    안녕하세요. 최용일입니다.

    TickCount를 이용해보세요...

    var
        Start: LongWord;
    begin
        Start := GetTickCount;
        Start := Start + 37;
        while GetTickCount < Start do
            ;
    end;

    ^^ 항상 즐코하세요...

  • Profile
    레드팍스 2004.01.09 23:39
    MillisecondOfTheSecond(now) 만 가지고 비교를 하시면 안될듯 하네요

    현재 초가 1.999 초라면
    START 는 1036 이 될테구
    MillisecondOfTheSecond(now) 는 0 ~ 999 값만 돌려줄테니 무한루프가 되겠죠

  • Profile
    연기훈 2004.01.09 22:52
    윈도우 자체에서 그 속도를 못따라 가는 걸루 알고 있습니다.

    Timer에서 1000 이 1초 지만 Timer 1로 세팅하고

    실행하면 전혀 원하는 값 안나오거든여

    제가 전에 테스트 했을때는 200이나 300 에서도 속도차가 없더라구여

    300 이하 설정은 무이미 합니다.

    1.1m second면 1.1/1000 초 가 맞나. ^^;; 지송 제가 머리가 나빠서..

    인터벌이 1.1 m second면.. 하드웨어에서 버퍼가지고 가지고 있다가

    가지고 와야 할꺼 같네여...