나는 개발 보드의 응용 프로그램과 통신하기 위해 RXTX과 protobuf을 사용하는 프로젝트에서 작업하고 있으며 잘못된 방식으로 작업하고 있음을 의미하는 문제를 겪고 있습니다. 저는 여기에 현재 이사회에 요청을 쓰기 위해 가지고 무엇을 (읽기 코드는 비슷합니다) : 다음Google 프로토웨어를 사용하여 직렬 포트를 통해 통신하려면 어떻게해야합니까?
public void write(CableCommandRequest request, OutputStream out) {
CodedOutputStream outStream = CodedOutputStream.newInstance(out);
request.writeTo(outStreatm);
outStream.flush();
}
이 차례로에서 사용하는 OutputStream
을 suplies RXTX 직렬 연결을 준비하는 데 사용되는 설정입니다 write
명령 :
// The baud rate to use when connecting to the development board
private final static int BAUD_RATE = 115200;
// The timeout to use for the serial port
private final static int CONNECTION_TIMEOUT = 50;
// The serial break for the development board, 100
private final static int SERIAL_BREAK = 100;
// <SNIP> ...
SerialPort serialPort = (SerialPort)port.open(appName, CONNECTION_TIMEOUT);
serialPort.setSerialPortParams(BAUD_RATE,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
serialPort.sendBreak(SERIAL_BREAK);
사용되는 OutputStream
는 RXTX에 의해 준비와 개발 보드는 데이터가 수신되는 것처럼 보입니다, 그러나 그것은 왜곡지고되거나 이해되지 않고있다.
지금까지 일반적인 의심 (예 : 직렬 연결이 설정되지 않음, 통신 문제 등)이 모두 제거되었으므로 직렬 연결을 통한 통신이 writeTo
에 대한 호출 방법에 문제가있는 것처럼 보입니다. 성공한.
직렬 연결을 통해 protobuf를 사용하는 방법에 대한 문서가 거의없는 것 같아서 OutputStream
을 전달하는 것으로 충분하다고 가정합니다. 사실 이것이 맞습니까? 아니면 직렬 연결을 통해 응답을 보내는 잘못된 방법입니까?
하드웨어가 protobuf의 고유 한 형식을 실제로 이해합니까? – bmargulies