Visual Studio C#에서 프로젝트 작업 중입니다.지연 수신 데이터 수신 차단
시리얼 포트를 통해 PC에 연결된 장치에서 데이터를 수집 중입니다. 먼저 요청 명령을 보내고 응답을 기다립니다. 요청 명령을 보낸 후 응답 할 장치가 1 초 지연됩니다. 장치에 도달하지 못하고 때때로 응답하지 않을 수 있습니다. 응답을 기다리고 다음 데이터 요청 명령을 일찍 보내지 않으려면 System.Threading.Thread 메서드를 사용하여 지연을 만듭니다.
지연 시간을 길게 설정하면 직렬 포트 데이터 수신이 느슨합니다.
내가 사용하는 딜레이 (Delay) 기능은 다음과 같습니다
private void Delay(byte WaitMiliSec)
{
// WaitTime here is increased by a WaitTimer ticking at every 100msec
WaitTime = 0;
while (WaitTime < WaitMiliSec)
{
System.Threading.Thread.Sleep(25);
Application.DoEvents();
}
}
DataReceived 이벤트를 사용할 수 없습니까? http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived.aspx –
아니 당신은 시리얼 포트를 잃지 않을거야하지만 당신이 thread.sleep 덜 확인하고 포트 연결을 확인하는 것이 좋습니다 그렇지 않다면 예를 들어 데이터 포트를 호출하고 그렇지 않으면 연결되지 않고 데이터가 수신되지 않을 때 반복적으로 호출하는 재귀 함수에 넣습니다. –