2012-09-10 3 views
0

직렬 포트 (일부 텍스트 메시지와 일부 바이너리 데이터가 혼합 된 정보)를 읽는 작은 프로그램을 Java로 작성한 다음 TCP 소켓을 통해 보내십시오.직렬 포트 출력을 소켓으로 리디렉션

처음에는 버퍼에 데이터를 가져 와서 '/ n'이 도착했을 때 모든 것을 보냈지 만 바이너리 데이터는 그런 식으로 작동하지 않습니다.

나의 두 번째 생각은 항상 1 바이트 씩 데이터를 보냈습니다. 하지만 너무 느려지고, 나는 그것을 보내는 동안 데이터를 잃어 버리고있는 것 같아요. 쓰레드를 사용한다고 생각합니다.

다음 아이디어는 예를 들어 100 바이트에 도달하면 데이터를 전송하지만 더티 픽스입니다.

내 직렬 데이터는 GPS 수신기에서 가져 오며,이 장치는 일반적으로 초당 데이터 (텍스트 및 이진)의 많은 문장을 전송합니다 (또는 모델에 따라 10, 50, 100Hz로 구성 가능). 어쨌든 데이터가 수신되는 시간에는 차이가 있고 아무것도 수신되지 않는 경우에는 상당한 시간 차이가 있습니다. 나는 갭이 끝나면 새로운 데이터가 도착하기 전에 내 데이터를 제거하는 가장 좋은 방법은 그 간격을 감지하고 저장된 모든 데이터를 보내는 것입니다.

어떻게 이러한 종류의 이벤트를 감지 할 수 있습니까?

편집 : 나는 RXTX 패키지를 사용하여 직렬 포트를 제거하고, 난 그냥 enableReceiveTimeout으로 타임 아웃을 활성화 격차를 detegt하기 위해 윈도우를 통해 7 64bit를

+0

직렬 포트에 액세스하려면 어떤 패키지를 사용합니까? 어떤 플랫폼에서? –

+0

@AlexeiKaigorodov 그 정보로 편집 됨 –

답변

1

을 일하고 있어요.

0

read() 메소드에 의해 반환 된 실제 카운트 만 쓰면, byte [] 버퍼를 읽고 쓸 수 있습니다.