java串口通信中怎样以十六进制数发送

如题所述

第1个回答  推荐于2017-11-28
串口通讯的时候基本都是通过io流读取、输出。那么在java开发中发送数据的时候使用OutputStream,而其write()的参数是字节数组、int整形。如果使用字节数组发送的时候,通常可以直接写成out.write("1234".getBytes())。这样一来单片机读到的数据则是31 32 33 34。但是在串口发送的时候先把16进制字符串转化为byte数组在发送出来,则是发送什么读取到的就是什么。使用:out.write(HexString2Bytes("1234"));那么读取到的还是1234。16进制字符串转化为byte数组的方法为:
public static byte[] HexString2Bytes(String src) {
if (null == src || 0 == src.length()) {
return null;
}
byte[] ret = new byte[src.length() / 2];
byte[] tmp = src.getBytes();
for (int i = 0; i < (tmp.length / 2); i++) {
ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);
}
return ret;
}

在用java做串口开发的时候建议使用开源的Rxtx做。效率、使用方法都要优。使用sun开源的comm个人觉得不是很便利。rxtx网上有开源实例。可以根据自己个需求进行加以修饰利用。本回答被提问者和网友采纳
第2个回答  2012-12-17

额 我以前写过这个的啦 我有例子的啦

追问

可以发给我么 [email protected] 谢谢

追答

额 是字节传输的呀 笔记本可以测试的呀 台式机要串口的呀

追问

不是要这样的 是发送的时候有个16进制的可以选择

如果是你这样的 数据是要不上来的 我今天试了n次都没有成功

必须是以16进制的格式发送

第3个回答  2012-12-17
RXTX 有例子
相似回答