package udpdell; import Util.DeviceMessageParser; import Util.LawnMowerCommandJsonGenerator; import Util.MowerPathMessageGenerator; import Util.Entity.*; import com.fasterxml.jackson.core.JsonProcessingException; import java.util.Arrays; import java.util.List; public class Mqttserver { // public static void main(String[] args) { // GPSData();//解析设备上传GPS数据示例 // responseData();//解析设备回复的响应数据示例 // outputData();//设备控制指令生成示例 // //String s = generateExampleMessage();//路径规划数据生成示例 // //System.out.println(s); // } private static void responseData(){ // 解析响应消息 String responseJson = "{ \"msg_id\": \"hxzkresponse_20151105\", \"timestamp\": 1621234568300, \"device_id\": \"MOWER_001\", \"original_msg_id\": \"msg_123456793\", \"response\": { \"status\": \"success\", \"command\": \"start\", \"error_code\": 0, \"error_message\": \"\", \"additional_info\": { \"current_status\": \"running\", \"battery_level\": 84, \"current_position\": { \"lat\": \"3949.91202005,N\", \"lon\": \"11616.85440851,E\" } } } }"; ResponseData responseData = null; try { responseData = DeviceMessageParser.parseResponseData(responseJson); System.out.println("原始消息ID: " + responseData.getOriginalMsgId()); } catch (JsonProcessingException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { System.err.println("解析错误: " + e.getMessage()); } } private static void GPSData() { // GPS数据示例(新协议格式,包含GPS、IMU和状态数据) String gpsJsonStr = "{\n" + " \"msg_id\": \"hxzkgps_20151101\",\n" + " \"timestamp\": 1621234567890,\n" + " \"device_id\": \"MOWER_001\",\n" + " \"data_type\": \"gps\",\n" + " \"gps_raw\": \"$GNGGA,024830.90,3949.91202005,N,11616.85440851,E,4,26,0.7,49.6405,M,-8.7435,M,0.9,409*4A,2976,28,0,0,2,0\",\n" + " \"imu_data\": {\n" + " \"roll\": 1.2,\n" + " \"pitch\": 0.5,\n" + " \"yaw\": 185.5\n" + " },\n" + " \"status\": {\n" + " \"battery_level\": 85,\n" + " \"battery_voltage\": 24.5,\n" + " \"operation_mode\": \"auto\",\n" + " \"motor_status\": \"running\",\n" + " \"blade_status\": \"rotating\",\n" + " \"blade_height\": 10,\n" + " \"self_check_status\": 1,\n" + " \"error_code\": 0,\n" + " \"error_message\": \"\"\n" + " }\n" + "}"; try { System.out.println("=== GPS数据解析示例(新协议格式) ==="); GPSData gpsData2 = DeviceMessageParser.parseGPSData(gpsJsonStr); String string2 = gpsData2.toString(); System.out.println(string2); } catch (JsonProcessingException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { System.err.println("解析错误: " + e.getMessage()); } } public static void outputData() { // 示例:使用便捷方法生成转向命令 String json2 = LawnMowerCommandJsonGenerator.generateTurnCommandJson( "hxzkcontrol_20151105", null, "USER_001", "MOWER_001", 180.0, // 转向180度 0.5, // 速度0.5米/秒 10 // 持续10秒 ); System.out.println(json2); } public static String generateExampleMessage(int value) { // 创建边界点(使用XY坐标) HxzkPathMessage message = getmessage(value); return MowerPathMessageGenerator.toJson(message); } private static HxzkPathMessage getmessage(int value) { List boundaryPoints = Arrays.asList( MowerPathMessageGenerator.createCoordinatePoint("100.5", "200.3"), MowerPathMessageGenerator.createCoordinatePoint("150.8", "200.5"), MowerPathMessageGenerator.createCoordinatePoint("150.9", "250.7") ); // 创建导航点(使用XY坐标) List navigationPoints = Arrays.asList( MowerPathMessageGenerator.createCoordinatePoint("100.5", "200.3"), MowerPathMessageGenerator.createCoordinatePoint("150.8", "200.5"), MowerPathMessageGenerator.createCoordinatePoint("150.9", "250.7") ); // 创建基准站数据 BasestationData basestationData = MowerPathMessageGenerator.createBasestationData( "3949.84110064", "N", "11616.74587312", "E", 45.2 ); // 创建路径数据 PathData pathData = MowerPathMessageGenerator.createPathData( "path_20230724_"+value, "WGS84_DM", boundaryPoints, navigationPoints, "parallel", boundaryPoints.size(), // 边界点数量 navigationPoints.size() // 导航点数量 ); // 创建完整消息 HxzkPathMessage message = MowerPathMessageGenerator.createMessage( "hxzkpath_"+value, System.currentTimeMillis(), "USER_"+value, "6528", "set_path", basestationData, pathData ); return message; } }