测试代码:
String str1="A55A2018DA10FA101862C88201050104";
String str2="A55A2018DA10FA21012C010082000005";
String str3="A55A2018DA10FA22B90000FA00012C06";
String str4="A55A2018DA10FA2364012C64FFFFFF07";
List<String> strList=new ArrayList();
strList.add(str1); strList.add(str2); strList.add(str3);strList.add(str4);
ArrayList<Byte> listBy=J1939Utils.UnPackCANFrameData(strList);
System.out.println(listBy.toString());
结果:
[98, -56, -126, 1, 5, 1, 1, 44, 1, 0, -126, 0, 0, -71, 0, 0, -6, 0, 1, 44, 100, 1, 44, 100]
/---------------ISO15765协议的解包算法(网络层–>应用层)------------------/
public static ArrayList<Byte> UnPackCANFrameData(List<String> receiveBuf){
int dataLength = 0;
ArrayList<Byte> receiveData = new ArrayList<Byte>();
if((J1939Utils.int2bytes2(receiveBuf.get(0))[7]&0xf0) == 0x10){
//第一帧 first frame
//获取该条报文的长度
dataLength = ((J1939Utils.int2bytes2(receiveBuf.get(0))[7]&0x0f)<<8)+J1939Utils.int2bytes