Sto lavorando a un progetto che utilizza RXTX e protobuf per comunicare con un'applicazione su una scheda di sviluppo e ho riscontrato problemi che implicano che probabilmente sto facendo le cose nel modo sbagliato. Ecco quello che ho attualmente per scrivere la richiesta al consiglio (il codice di lettura è simile):Come si usa Google protobuf per comunicare su una porta seriale?
public void write(CableCommandRequest request, OutputStream out) {
CodedOutputStream outStream = CodedOutputStream.newInstance(out);
request.writeTo(outStreatm);
outStream.flush();
}
Quello che segue è l'impostazione che vengono utilizzati per preparare il collegamento seriale RXTX che a sua volta suplies il OutputStream
utilizzato dal write
comando:
// 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);
il OutputStream
che viene utilizzato è preparato RXTX e la scheda di sviluppo sembra indicare che i dati vengono ricevuti, ma è sempre confusa o è altrimenti non essere capito.
Finora tutti i soliti sospetti (ad esempio, connessione seriale non viene stabilita, problemi di comunicazione, etc.) sono stati eliminati così sembra che il problema è nel modo in cui la chiamata a writeTo
viene effettuata in quanto le comunicazioni tramite la connessione seriale sono riuscito.
Sembra esserci poca documentazione sull'utilizzo di protobuf su una connessione seriale, quindi suppongo che il passaggio dello OutputStream
dovrebbe essere sufficiente. È corretto questo, o è questo il modo sbagliato di inviare la risposta sulla connessione seriale?
Il tuo hardware comprende davvero il formato particolare di protobuf? – bmargulies