syntax="proto3"; package com.companyname.satellite; // 协议版本:v1.0.1 // 作者:北京大田互通物联技术有限公司 // 日期:2025年5月20日 // 描述:北斗卫星平整地系统(终端)通信协议-附件V1.0.1,增加消息回复相关内容。 // 修改时间:2025年05月20日11:21:39 // 主消息 message MainMessage { enum DataType { DATA_TYPE_UNSPECIFIED = 0; GET_TOKEN = 1; // 获取Token请求消息 TOKEN_RESPONSE = 2; // 获取Token响应消息 GET_SERVER_ADDRESS = 3; // 获取服务器IP地址和端口号请求消息 SERVER_ADDRESS_RESPONSE = 4; // 获取服务器IP地址和端口号响应消息 LOGIN_INFO = 5; // 登录验证消息 LOGIN_RESPONSE = 6; // 登录响应消息 TRACK_DATA = 7; // 轨迹数据消息 JOB_FIELD = 8; // 作业地块消息 IMAGE_DATA = 9; // 图片数据消息 DEVICE_INFO = 10; // 设备信息消息 RESPONSE_INFO = 11; // 响应消息 } enum ProtocolVersion { PROTOCOL_VERSION_UNSPECIFIED = 0; V1_0_0 = 1; // 协议版本v1.0.0,初始版本 V1_0_1 = 2; // 协议版本v1.0.1,增加消息回复相关内容 } ProtocolVersion protocolVersion = 1; // 协议版本 DataType dataType = 2; // 当前发送消息类型 oneof dataBody { GetToken getToken = 3; // 获取Token请求消息 TokenResponse tokenResponse = 4; // 获取Token响应消息 GetServerAddress getServerAddress = 5; // 获取服务器IP地址和端口号请求消息 ServerAddressResponse serverAddressResponse = 6; // 获取服务器IP地址和端口号响应消息 LoginInfo loginInfo = 7; // 登录验证消息 LoginResponse loginResponse = 8; // 登录响应消息 TrackData trackData = 9; // 轨迹数据消息 JobField jobField = 10; // 作业地块消息 ImageData imageData = 11; // 图片数据消息 DeviceInfo deviceInfo = 12; // 设备信息消息 ResponseInfo responseInfo = 13; // 响应消息 } } // 获取Token请求消息 message GetToken { string deviceID = 1; // 终端编号 } // 获取Token响应消息 message TokenResponse { string token = 1; // 返回Token StateCode code = 2; // 响应状态码 string stateMessage = 3; // 状态信息 } // 获取服务器IP地址和端口号请求消息 message GetServerAddress { string deviceID = 1; // 终端编号 string token = 2; // Token,用于身份验证 } // 获取服务器IP地址和端口号响应消息 message ServerAddressResponse { string serverAddress = 1; // 服务器IP地址和端口号,例如 "192.168.1.1:8080" StateCode code = 2; // 响应状态码 string stateMessage = 3; // 状态信息 } // 登录验证消息 message LoginInfo { string deviceID = 1; // 终端编号 string token = 2; // Token,用于身份验证 } // 登录响应消息 message LoginResponse { StateCode code = 1; // 响应状态码 string stateMessage = 2; // 状态信息 } // 轨迹数据消息 message TrackData { string deviceID = 1; // 终端编号 Position position = 2; // 经纬度坐标(WGS84) int64 samplingTime = 3; // 采集时间,采用时间戳表示,精度为毫秒 float speed = 4; // 速度,单位(米/秒),保留两位小数 float azimuthAngle = 5; // 方位角,单位(度),保留1位小数 float referenceHeight = 6; // 基准高程,单位(米),保留4位小数 float currentHeight = 7; // 当前高程,单位(米),保留4位小数 float currentHeightDiff = 8; // 当前高差,单位(米),保留4位小数 WorkMode workMode = 9; // 作业模式,FLAT:平面;SINGLE_SLOPE:单斜面 DataCategory dataCategory = 10; // 数据类型,REALTIME:实时数据;CACHE:缓存数据 } // 作业地块消息,每次作业结束后报送该次作业的地块数据 message JobField { string deviceID = 1; // 终端编号 TimeRange timeRange = 2; // 起始和截止时间戳,精度为毫秒 float workArea = 3; // 作业面积,单位(亩),保留两位小数 repeated JobPolygon jobPolygons = 4; // 农机作业形成的田块数据,闭合多边形 } // 图片数据消息 message ImageData { string deviceID = 1; // 终端编号 int64 samplingTime = 2; // 采集时间,采用时间戳表示,精度为毫秒 Position position = 3; // 经纬度坐标(WGS84) int32 cameraNo = 4; // 摄像头编号,例如 前置摄像头:1;后置摄像头:2 bytes imageData = 5; // 原始二进制图片数据,使用JPG格式 DataCategory dataCategory = 6; // 数据类型,REALTIME:实时数据;CACHE:缓存数据 } // 设备信息 message DeviceInfo { string deviceID = 1; // 终端编号 string deviceModel = 2; // 终端型号 PositionMode positionMode = 3; // 北斗标识,软件北斗:R;硬件北斗:Y string companyCode = 4; // 厂家编号,开发者平台获取 string version = 5; // 终端软件版本号 } // 响应消息 message ResponseInfo { StateCode stateCode = 1; // 响应状态码 MessageType messageType = 2; // 消息类型 } //消息类型 enum MessageType { MESSAGE_TYPE_UNSPECIFIED = 0; TRACK_MESSAGE = 1; // 轨迹数据消息 JOB_MESSAGE = 2; // 作业地块消息 IMAGE_MESSAGE = 3; // 图片数据消息 DEVICE_MESSAGE = 4; // 设备信息消息 } // 状态码 enum StateCode { STATE_CODE_UNSPECIFIED = 0; SUCCESS = 1; // 成功 FAILURE = 2; // 失败 OTHER = 3; // 其他 } // 作业数据类型 enum DataCategory { DATA_CATEGORY_UNSPECIFIED = 0; REALTIME = 1; // 实时数据 CACHE = 2; // 缓存数据 } // 平地机作业模式 enum WorkMode { WORK_MODE_UNSPECIFIED = 0; FLAT = 1; // 平面作业 SINGLE_SLOPE = 2; // 单斜面作业 DOUBLE_SLOPE = 3; // 双斜面作业 } // 定位模式枚举类型 enum PositionMode { POSITION_MODE_UNSPECIFIED = 0; Y = 1; // 硬件北斗 R = 2; // 软件北斗 } // 时间范围,采用时间戳表示 message TimeRange { int64 startTime = 1; // 起始时间,采用时间戳表示,精度为毫秒 int64 endTime = 2; // 截止时间,采用时间戳表示,精度为毫秒 } // 农机作业形成的田块数据,多边形 message JobPolygon { repeated Position position = 1; // 经纬度坐标(WGS84) } // 经纬度坐标,采用WGS84坐标系 message Position { double longitude = 1; // 经度(WGS84),例如:116.407396 double latitude = 2; // 纬度(WGS84),例如:39.904200 }