Tengo un mensajeJava hexadecimal
static int[] message = {
0x01, 0x10, 0x00,
0x01, // port addres 01 - 08
0x00, 0x01, 0x02,
0x06, 0x00,
0xA4, 0x21
};
sé que los datos son correctos, a partir de las estoy escribir en el puerto COM con RXTX, y tengo reacción HW derecho
sé que 0x01
es 1
valor, y se envió realmente como 01
(que es de dos bits, un cuarto de byte largo)
Cuando tengo que ajustar el mensaje, está generando valores como este ¿no?
message[index] = 1 & 0xff
veo la salida de este fragmento, y se ve correctamente
for (int i = 0; i < 255; i++) {
System.out.println(i & 0xff);
}
¿Hay alguna hoja que me gustaría recomendar leer?
está almacenando estos números en int
derecha, ya que no podemos utilizar byte (-128, +127)
para valores hasta <0x00, 0xFF>
gama
Puede usar bytes. Pero debe convertir cada valor en byte: 'byte [] mensaje = {(byte) 0xff};' –
* "Sé que OxO1 tiene 1 valor y se envía realmente como 01 (que son dos bits)" * No a menos estás haciendo algo para que eso suceda. Un Java 'int' es un valor de 32 bits ([referencia] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html)). El hecho de que el valor no * requiera * todos esos bits no significa que no se envíen.El tamaño de lo que está enviando podría verse limitado por la forma en que lo está enviando, pero teniendo en cuenta los otros valores que cita, puede estar seguro de que está enviando al menos ocho de los bits. –
Quizás debería considerar usar ByteBuffer – fge