2012-05-11 2 views
0

직렬 포트를 통해 저울에 연결된 응용 프로그램이 있습니다. 저울은 꽤 커서 PRINT 버튼을 누르는 것은 옵션이 아닙니다. 그래서 내 응용 프로그램은 특정 사용자 동작에 따라 프로그래밍 방식으로 인쇄하도록 저울에 요청합니다. 저울 인터페이스는이를 허용하고 인쇄 명령을 정의합니다. 모든 작품은 잠시 동안. 몇 가지 항목에 가중치를 부여한 후에 균형이 이전 무게를 출력하기 시작합니다 .... 정의 된 명령이 거의 없으며 수행 할 수있는 옵션이 너무 많지 않기 때문에이 시점에서 버려졌습니다. 나는 매번 OUT 버퍼를 이미 비우고있다. 그래서 왜 그것이 저에게 오래된 가치를 부여하는지 모르겠습니다. 여기 직렬 포트는 수동 PRINT 명령시 이전 값을 출력합니다.

내 코드입니다 :

 if (askedToPrint) 
     { 
       _sp.DiscardOutBuffer(); 

       //ask the balance to print 
       _sp.Write("P\r\n"); 

     } 

_sp -되는하여 SerialPort 개체

내가 주춤 6.0 및 컴팩트 프레임 워크 2.0을 사용하고/C#을 사용 시리얼 포트에서 데이터를 읽고 있다면

답변

0

Readline() 또는 Read()를 실행하면 균형이 대기중인 여러 패킷을 보냈을 가능성이 있습니다. 따라서 읽기 전에 이미 대기중인 패킷을 폐기해야합니다. 다른 방법은 인쇄 요청을 쓰기 전에 ReadExisting() 메서드를 사용하여 사용 가능한 모든 데이터를 읽는 것입니다. 따라서 잔액이 여전히 오래된 패킷을 보내는 경우 명령을 보낸 후 균형에 문제가있을 수 있습니다.

관련 문제