Cómo enviar números hexadecimales en comunicación serial Java
Al realizar una comunicación en serie, básicamente leemos y enviamos a través del flujo io. Luego use OutputStream cuando envíe datos en el desarrollo de Java, y sus parámetros de escritura () son matrices de bytes y enteros int. Si usa una matriz de bytes para enviar, generalmente puede escribirla directamente como out.write("1234".getBytes()). De esta forma, los datos leídos por el microcontrolador son 31 32 33 34. Sin embargo, cuando se envía a través del puerto serie, la cadena hexadecimal primero se convierte en una matriz de bytes y luego se envía lo que se lee. Utilice: out.write(HexString2Bytes("1234")); entonces el valor leído sigue siendo 1234. El método para convertir una cadena hexadecimal en una matriz de bytes es:
byte estático público[] HexString2Bytes(String src) {
if (null == src || 0 == src.length()) {
return nulo;
}
byte[] ret = nuevo byte[src.length() / 2];
byte[] tmp = src.getBytes();
for (int i = 0; i < (tmp.length / 2); i++) {
ret[i] = unitBytes(tmp[i * 2], tmp[i * 2 + 1]);
}
return ret;
}
Cuando se utiliza Java para el desarrollo del puerto serie, se recomienda utilizar el código abierto Rxtx. Los métodos de eficiencia y uso deben ser excelentes. Personalmente, no me resulta muy conveniente utilizar la comunicación de código abierto de Sun. Hay ejemplos de código abierto de rxtx en línea. Puede modificarlo y utilizarlo según sus propias necesidades.