1.一个字符串,用Byte数组形式通过串口发送出去,很简单
String cmd = "xxxx";
byte[] cmdByte = cmd.getBytes();
如果是AT命令的话,一般后面还要加上两个不可见字符 0x0d 0x0a 分别是回车换行
2.读到一串Byte,想要用String去打印出来看,就是前一种情况的逆向,使用如下办法:
Byte[] cmdByte = getFromDevice();
String cmdStr = new String(cmdByte);
3.遇到一串hex字串,要转换成hex本身,比如"010203040506" =》 0x01,0x02,0x03,0x04,0x05,0x06
用如下办法:
public static byte[] hexStr2Bytes(String src){
/*对输入值进行规范化整理*/
src = src.trim().replace(" ", "").toUpperCase(Locale.US);
//处理值初始化
int m=0,n=0;
int iLen=src.length()/2; //计算长度
byte[] ret = new byte[iLen]; //分配存储空间
for (int i = 0; i < iLen; i++){
m=i*2+1;
n=m+1;
ret[i] = (byte)(Integer.decode("0x"+ src.substring(i*2, m) + src.substring(m,n)) & 0xFF);
}
return ret;
}
4. 上面3的逆向,你得到一串byte数组,想打印出来看,直接打印就是int 类型的,你想看到hex十六进制的情况,如下:
private static String showDataDetail(byte[] data){
final StringBuilder stringBuilder = new StringBuilder(data.length);
for(byte bytechar:data){
stringBuilder.append(String.format("%02x",bytechar));
}
return stringBuilder.toString();
}
目前项目中常用的就这些了。