2017-05-19 21 views
0

我需要发送一些命令给我的微控制器。 使用RXTX库的Iam。我可以连接到我的微控制器,但我有问题将我的命令转换为正确的字节。如何将java中的十六进制值发送到RS232串口

例如: 我想发送0x80十六进制值。

如果我128的整数(0x80的)转换为字节

byte a = (byte) 128; 

我得到-128

范围从Java字节是-128 - 127

,但我需要发送128为命令。我如何转换它?

我也有其他命令发送。

80 
20 F2 40 F8 3F 
FA 21 40 

其中之一是40位。

我写入输出流,可以接受byte[]int

... 
    static OutputStream out; 
out.write(byte[]); 
out.write(int); 
.. 

但是int与40bit不在同一范围内。我怎样才能解析一个40位的整数字节?

This Question helped me

回答

1

0x80的仍然是不管什么Java的签署字节型系统显示它为0x80的。

只需发送它。

+0

hm好吧。我的微控制器没有响应我的命令,我想也许这是问题:S – Khan

0

您可以使用

Byte.parseByte("a", 16); 

但这只会工作的值高达127,值高那么将需要转换为字节,由于符号/无符号的问题,所以我建议把它转移到一个int然后将其转换为字节

(byte) (Integer.parseInt("ef",16) & 0xff); 
+0

byte c =(byte)(Integer.parseInt(“128”,16)&0xff);给我40作为输出 – Khan

+0

你应该传递十六进制值。 80 –

1

我已经使用了RXTX自由后卫我不认为这很重要。只需发送string.getBytes()

+0

我不想发送字符串的字节表示 – Khan

相关问题