| @ -0,0 +1,86 @@ | |||
| package com.inspect.tcpserver.util; | |||
| import javolution.io.Struct; | |||
| import org.apache.commons.codec.binary.Hex; | |||
| import java.nio.ByteOrder; | |||
| public class ProtoDef extends Struct { | |||
| Unsigned16 mark = new Unsigned16(); | |||
| Signed64 sendSeq = new Signed64(); | |||
| Signed64 recvSeq = new Signed64(); | |||
| Signed8 session = new Signed8(); | |||
| Signed32 xmlLength = new Signed32(); | |||
| //一定要加上这个,不然会出现对齐的问题 | |||
| @Override | |||
| public boolean isPacked() { | |||
| return true; | |||
| } | |||
| //设置为小端格式 | |||
| @Override | |||
| public ByteOrder byteOrder() { | |||
| return ByteOrder.LITTLE_ENDIAN; | |||
| } | |||
| //测试 | |||
| public static void main(String[] args) { | |||
| String xml = | |||
| // "<PatrolDevice>\n" + | |||
| // " <SendCode>INSPECT-SERVER-001</SendCode>\n" + | |||
| // " <ReceiveCode>DRONE-001</ReceiveCode>\n" + | |||
| // " <Type>20001</Type>\n" + | |||
| // " <Code>DRONE-001</Code>\n" + | |||
| // " <Command>3</Command>\n" + | |||
| // " <Time>2025-03-10 15:58:30</Time>\n" + | |||
| // " <Items><Item value=\"1\"/></Items>\n" + | |||
| // "</PatrolDevice>"; | |||
| // "<PatrolDevice>\n" + | |||
| // " <SendCode>G100-001</SendCode>\n" + | |||
| // " <ReceiveCode>L100-001</ReceiveCode>\n" + | |||
| // " <Type>61</Type>\n" + | |||
| // " <Code></Code>\n" + | |||
| // " <Command></Command>\n" + | |||
| // " <Time>2025-05-27 14:50:58</Time>\n" + | |||
| // " <Items>\n" + | |||
| // " <Item task_patrolled_id=\"1587_20250527102418\" task_name=\"无人机测试\" task_code=\"1587\" patroldevice_name=\"接地极无人机\" patroldevice_code=\"HR000000103\" device_name=\"接地极线路阻波器电抗器L1电容器C1_红外\" device_id=\"1499\" recognition_type=\"4\" file_type=\"1\" file_path=\"/1/2025/05/27/1587/FIR/1499_HR000000103_20250527145056.jpg\" material_id=\"\" value_type=\"0\" value=\"\" value_unit=\"\" unit=\"\" time=\"2025-05-27 14:50:56\" rectangle=\"\" valid=\"1\"/>\n" + | |||
| // " </Items>\n" + | |||
| // "</PatrolDevice>"; | |||
| "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + | |||
| "<PatrolDevice>\n" + | |||
| " <SendCode>G100-001</SendCode>\n" + | |||
| " <ReceiveCode>L100-001</ReceiveCode>\n" + | |||
| " <Type>61</Type>\n" + | |||
| " <Code></Code>\n" + | |||
| " <Command></Command>\n" + | |||
| " <Time>2025-05-27 14:50:58</Time>\n" + | |||
| " <Items>\n" + | |||
| " <Item task_patrolled_id=\"1587_20250527102418\" task_name=\"无人机测试\" task_code=\"1587\" patroldevice_name=\"接地极无人机\" patroldevice_code=\"HR000000103\" device_name=\"接地极线路阻波器电抗器L1电容器C1_红外\" device_id=\"1499\" recognition_type=\"4\" file_type=\"1\" file_path=\"/1/2025/05/27/1587/FIR/1499_HR000000103_20250527145056.jpg\" material_id=\"\" value_type=\"0\" value=\"\" value_unit=\"\" unit=\"\" time=\"2025-05-27 14:50:56\" rectangle=\"\" valid=\"1\"/>\n" + | |||
| " <Item task_patrolled_id=\"1587_20250527102418\" task_name=\"无人机测试\" task_code=\"1587\" patroldevice_name=\"接地极无人机\" patroldevice_code=\"HR000000103\" device_name=\"接地极线路阻波器管母_红外\" device_id=\"1500\" recognition_type=\"4\" file_type=\"1\" file_path=\"/1/2025/05/27/1587/FIR/1500_HR000000103_20250527145056.jpg\" material_id=\"\" value_type=\"0\" value=\"\" value_unit=\"\" unit=\"\" time=\"2025-05-27 14:50:56\" rectangle=\"\" valid=\"1\"/>\n" + | |||
| " <Item task_patrolled_id=\"1587_20250527102418\" task_name=\"无人机测试\" task_code=\"1587\" patroldevice_name=\"接地极无人机\" patroldevice_code=\"HR000000103\" device_name=\"接地极整体测温_红外\" device_id=\"1501\" recognition_type=\"4\" file_type=\"1\" file_path=\"/1/2025/05/27/1587/FIR/1501_HR000000103_20250527145056.jpg\" material_id=\"\" value_type=\"0\" value=\"\" value_unit=\"\" unit=\"\" time=\"2025-05-27 14:50:56\" rectangle=\"\" valid=\"1\"/>\n" + | |||
| " <Item task_patrolled_id=\"1587_20250527102418\" task_name=\"无人机测试\" task_code=\"1587\" patroldevice_name=\"接地极无人机\" patroldevice_code=\"HR000000103\" device_name=\"接地极线路阻波器电抗器L1电容器C1_外观\" device_id=\"1652\" recognition_type=\"3\" file_type=\"2\" file_path=\"/1/2025/05/27/1587/CCD/1652_HR000000103_20250527145056.jpg\" material_id=\"\" value_type=\"0\" value=\"\" value_unit=\"\" unit=\"\" time=\"2025-05-27 14:50:56\" rectangle=\"\" valid=\"1\"/>\n" + | |||
| " <Item task_patrolled_id=\"1587_20250527102418\" task_name=\"无人机测试\" task_code=\"1587\" patroldevice_name=\"接地极无人机\" patroldevice_code=\"HR000000103\" device_name=\"接地极线路阻波器管母_外观\" device_id=\"1653\" recognition_type=\"3\" file_type=\"2\" file_path=\"/1/2025/05/27/1587/CCD/1653_HR000000103_20250527145056.jpg\" material_id=\"\" value_type=\"0\" value=\"\" value_unit=\"\" unit=\"\" time=\"2025-05-27 14:50:56\" rectangle=\"\" valid=\"1\"/>\n" + | |||
| " <Item task_patrolled_id=\"1587_20250527102418\" task_name=\"无人机测试\" task_code=\"1587\" patroldevice_name=\"接地极无人机\" patroldevice_code=\"HR000000103\" device_name=\"接地极整体测温_外观\" device_id=\"1654\" recognition_type=\"3\" file_type=\"2\" file_path=\"/1/2025/05/27/1587/CCD/1654_HR000000103_20250527145056.jpg\" material_id=\"\" value_type=\"0\" value=\"\" value_unit=\"\" unit=\"\" time=\"2025-05-27 14:50:56\" rectangle=\"\" valid=\"1\"/>\n" + | |||
| " </Items>\n" + | |||
| "</PatrolDevice>"; | |||
| String dataHex = HexUtils.ascii2hex(xml); | |||
| int length = dataHex.length() / 2; | |||
| ProtoDef proto = new ProtoDef(); | |||
| proto.mark.set(0x90EB); | |||
| proto.sendSeq.set(0x3c); | |||
| proto.recvSeq.set(0x39); | |||
| proto.session.set((byte)0); | |||
| proto.xmlLength.set(length); | |||
| byte[] bytes = new byte[proto.getByteBuffer().limit()]; | |||
| proto.getByteBuffer().get(bytes); | |||
| String protoHex = Hex.encodeHexString(bytes, true); | |||
| System.out.println(protoHex + dataHex + "eb90"); | |||
| } | |||
| } | |||