我正在開發一個項目,該項目使用RXTX和protobuf與開發板上的應用程序進行通信,並且我遇到了一些問題,這意味着我可能會以錯誤的方式進行操作。這是我目前有書面請求董事會(讀取的代碼是相似的):如何使用Google protobuf通過串口進行通信?
public void write(CableCommandRequest request, OutputStream out) {
CodedOutputStream outStream = CodedOutputStream.newInstance(out);
request.writeTo(outStreatm);
outStream.flush();
}
下面是用來準備這又suplies被使用的OutputStream
的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