| | |
| | | Date now = new Date(); |
| | | try { |
| | | String data = (String) dataMap.get("data"); |
| | | if(data.length() %2 != 0){//长度不是偶数,就返回 |
| | | return; |
| | | } |
| | | |
| | | Integer sum = 0; |
| | | for(int i = 0;i <= data.length() - 4;i = i + 2){ |
| | | String str = data.substring(i, i + 2); |
| | | sum = sum + Integer.parseInt(str, 16); |
| | | }//求和 |
| | | String checkNum = data.substring(data.length() - 2, data.length()); |
| | | String checkNumComputed = Integer.toHexString(sum).toUpperCase();//计算校验 |
| | | //当校验数据大于2个字符,截取最后两位 |
| | | if(checkNumComputed.length() != 2){ |
| | | checkNumComputed = checkNumComputed.substring(checkNumComputed.length() - 2,checkNumComputed.length()); |
| | | } |
| | | if(!checkNum.equals(checkNumComputed)){//校验不通过,就返回 |
| | | return; |
| | | } |
| | | |
| | | String lockNum = data.substring(0, 4); |
| | | String code = data.substring(4, 6); |
| | | if(code.equals("01")){//功能码01为锁实时状态 |
| | |
| | | } |
| | | |
| | | long cha = now.getTime() - sdf.parse(time).getTime(); |
| | | /*System.out.println("////////////////"); |
| | | System.out.println(time); |
| | | System.out.println(cha);*/ |
| | | if(Math.abs(cha) >= 5 * 1000){ |
| | | //时间校准 |
| | | /*String url = "http://" + ip + ":9999"; |
| | |
| | | ardTankLockState.setUniqueMark(uniqueMark); |
| | | ((ArdTankLockStateServiceImpl)SpringUtils.getBean("ardTankLockStateServiceImpl")).insertOrUpdateArdTankLockState(ardTankLockState); |
| | | } |
| | | } |
| | | }/*else if(code.equals("06")){//功能码06为锁历史报警 |
| | | |
| | | }*/ |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return;//强转失败返回 |