package com.sandu.ximon.admin.utils; import com.alibaba.fastjson.JSON; import com.sandu.ximon.admin.entity.RRPCParams; import com.sandu.ximon.admin.manager.iot.rrpc.enums.MqttPDK; import com.sandu.ximon.admin.vo.FrameDataVO; import java.util.Date; import java.util.Map; public class MainBoardRRPCUtils { /** * 发送base64编码指令 * @param codeNumber * @param frame * @return */ public static String sendBase64RRPC(String codeNumber, String frame) { return sendRRPC(codeNumber,Base64Util.toBase64Frame(frame)); } /** * BASE64结果转为16进制字符串 * @param base64 * @return */ public static String base64ToHexStr(String base64){ return HexStrConvertUtil.bytesToHexString(Base64Util.decode(base64)); } /** * 发送RRPC指令 * @param codeNumber 物理地址(阿里云识别码) * @param mainFrame BASE64编码字符串 * @return */ public static String sendRRPC (String codeNumber, String mainFrame) { RRPCParams rrpcParams = new RRPCParams(); rrpcParams.setOperate("1001").setFrame(mainFrame); String result = RRPCUtils.sendRRPCwithReturn(MqttPDK.MAINBOARD_PDK, codeNumber, rrpcParams); if(null == result){ return null; } result = result.replace("\\", ""); Map map = JSON.parseObject(result, Map.class); result = (String) map.get("msg"); writeRedis(codeNumber,mainFrame,result); return result; } private static void writeRedis(String mac, String startFrame, String returnFrame){ try { String flag = "main_board:"; FrameDataVO frameDataVO = new FrameDataVO(); frameDataVO.setMac(mac); frameDataVO.setSendFrame(HexStrConvertUtil.bytesToHexString(Base64Util.decode(startFrame))); frameDataVO.setReturnFrame(HexStrConvertUtil.bytesToHexString(Base64Util.decode(returnFrame))); frameDataVO.setDate(new Date()); Long expire = 60L; RedisUtils.getBean().set(flag + mac, JSON.toJSONString(frameDataVO), expire); }catch (Exception e){ e.printStackTrace(); } } }