2013-04-09 2 views
0

상황 : 내 용도로 유용한 직렬 포트에서 들어오는 데이터를 만들려고합니다. 하나의 클래스 Processor.java에서 여러 메소드를 구현했습니다. 그 중 하나 (serialEvent)는 gnu.io.SerialPortEventListener를 구현합니다. 바이트 배열 인 버퍼에 inputStream에서 읽은 정보를 저장합니다. outputStream에 데이터를 쓰는 메소드도 있습니다.RXTX의 동기화 방법

문제 : inputStream에서 읽은 메시지에 따라 outputStream에 무언가를 쓸 메서드를 (동일한 클래스에서) 구현하고 싶습니다.

의사 코드 :

@Override 
public void serialEvent(SerialPortEvent event) { 
// get data 
} 

public void writeData(String dataToWrite) { 
// write data 
} 

public void respond() { 
// write data 
// wait for appropriate response (read data) 
// write data 
// ... 
} 

내가 어떻게 할 수 있습니까?

답변

0

마음에 떠오르는 것은 수신 된 메시지를 처리하고 응답하는 입력 버퍼가 가득 찬 상태를 기다리는 백그라운드 스레드입니다.

고정 길이 패킷으로 통신하거나 표시된 시작 패킷을 중지하는 경우 직렬 포트를 모니터링하고 수신 된 데이터를 버퍼링하고 이벤트를 발생시키는 "패킷/메시지 완료"조건이 충족되면 스레드를 만들어야합니다 등록 된 리스너 (가능한 경우 다른 스레드에서)로 전달합니다. 그런 다음 해당 청취자는 메시지를 처리하고 응답합니다 (자체 스레드에서).