2017-11-14 4 views
-2

새로운 스레드가 serialport에서 시작될 때 데이터를 수신했습니다. 실행 계획에 일부 값이 변경되어 다른 포트로 보내질 수있는 몇 가지 메소드가 포함되어있는 경우, 하지만 다른 포트로 전송하고 ACK를 기다리는 것과 같이 더 많은 처리를해야하는 경우 다시 보내고 256 바이트 패킷으로 적당한 크기의 데이터 (20KB)를 수신하면 스레드가 어딘가에서 멈추고 완료되지 않습니다. 코드가 단계별로 실행되면 정상적으로 작동하는 것 같습니다. 이 문제에 대해 사람들이 묻는 다른 주제를 읽었지만 타이머 대신 다른 방법을 사용하여 포트를 폴링하는 "솔루션"이 없었습니다. 나는 심지어 메인 스레드가 "폴링"이벤트 대신 이벤트에서 작업이 변경된 변수를 변경하여 해결 방법을 만들었지 만,이 작동하는 것,하지만 Windows 양식을 사용할 때 나는 새로운 스레드를 만들어야했다. 동일한 일을하고 코드를 완료하지 않거나 새 스레드를 실행하지 않는 것은 잠시 보입니다. 변수가 영원히 검사됩니다. 필요한 경우 코드를 제공 할 수 있습니다.이 코드를 올바르게 처리하는 방법에 대한 통찰력이 필요했습니다.Serialport 실행 전에 끝난 DataRecieved 스레드

+0

당신의 벽은 조금 혼란 스럽습니다. 당신이 성취하고자하는 것을 진술하고, 그것을 달성하기 위해 현재하고 싶은 일에 대한 저급 수준의 예를 들며, 예기치 못한 결과를 얻었습니까? –

+0

나는 C#의 시리얼 포트를 항상 사용하고 있지만 잘 알려진 제한이있다. 그러나 대부분은 매우 간단하다. 나는 100Kbs의 데이터를 전송하는 다양한 프로토콜을 실행한다. –

+0

여러 개의 다른 메소드를 실행하는 동안 데이터 수신 스레드에서 예상되는 한계와 왜 그들이 죽는 지 알고 싶습니다. 코드 예제를 줄 수는 있지만 응용 프로그램이 상당히 많은 것을보고 싶다는 것을 알아야합니다. 기본적으로 약 4 또는 5 개의 메소드가 특정 바이트 배열이 수신 된 후 호출되어 ACK, 릴레이 바이트를 다른 포트로 보내고, ACK를 기다리고, 카메라에서 이미지를 요청하고, 이미지를 다른 포트로 이동하고 패키지를 전송하는 것과 같은 작업을 수행합니다 그 이미지. 아직 완료하지 않은 것처럼 보입니다. –

답변

-1

여기에 아무도 질문에 대한 답 또는 설명 된 제한 사항을 알지 못했지만 타이머를 사용하여 문제를 해결할 수 있었지만 루프는 가변적 인 변경 사항을 확인하고 동일한 작업을 시작했습니다.