2017-09-30 8 views
-1

제가 진행중인 프로젝트는 Netduino 3 WIFI (C# .NET 마이크로 프레임 워크)와 PC 응용 프로그램 (C# .NET Framework)을 인터페이싱 할 것입니다. 직렬 TTL 카메라는 Netduino의 COM 포트 중 하나에 연결되며 PC 응용 프로그램은 다른 COM 포트에 연결됩니다. 모두 8 비트 UART를 통해 통신합니다. 나는 PC와 Netduino, 그리고 카메라 사이에 byte []를 보내고 받고 성공적으로 명령을 보내고 받아들이는 데 성공했다. 주요 목표는 카메라로 '이미지 캡처'명령을 보내고 .JEPG byte []를 다시 잡을 수있게하는 것입니다. 데이터 수신 이벤트가 발생하면 데이터 수신을 시작하고 싶습니다. 온라인에서 많은 정보를 찾지는 못했지만 serialport.basestream 속성이나 비트 맵 생성자 (스트림)를 사용해야 할 수도 있습니다. 저는 스트림의 개념에 익숙하지 않고 누군가가 저에게 어떤 정보를 가르쳐 주거나 이것을 설정하는 방법을 보여줄 수 있기를 바랍니다.직렬 포트를 통한 .JPEG 스트림 수신, 저장 및 재전송

+0

직렬 포트는 8 비트 패리티로 설정해야합니다. jpeg를 전송할 때 4 비트 (또는 8 비트) 길이의 바이너리 데이터를 선행합니다. 그런 다음 데이터를 바이트로 보냅니다. 수신 끝은 데이터의 시작 부분에서 길이를 제거한 다음 바이트 (이진 데이터)를 읽어야합니다. – jdweng

답변

0

포트 ReadTimeout을 0으로 설정하고 DataReceived 이벤트에 처리기를 설치하는 것이 좋습니다. 그런 다음 데이터를 보내기 전에 적절한 헤더를 보내면 간단한 차원의 체크섬이 잘못 될 가능성이 있으므로 올바른 차원의 바이트 배열에 데이터를 직접 캡처하고 버퍼링 할 수 있습니다. 핸들러는 청크로 처리되는 데이터에 대처해야하지만 일단 바이트를 수신하면 jpg를 재구성하고 버리는 바이트 배열을 처리 할 수 ​​있습니다. DataReceived 이벤트는 각 바이트마다 발생하지 않으므로 핸들러를 종료하기 전에 0 바이트를 반환 할 때까지 포트에서 읽기를 계속 실행해야합니다.