室内外融合北斗+uwb终端数据监听和发送控制方法

2023-05-16

UDP接收GNGGA报文同时转发UDP报文的方法

package Frame;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import PbuliClass.ShowMessage;

public class Udp_Receive_and_send implements Runnable {
	static DatagramSocket socket;	
	int port=7000;//监听的端口
	DatagramPacket packet;
	/**初始化对象
	 * @throws NumberFormatException 
	 * @throws IOException */
	public  Udp_Receive_and_send() {
		try {
			socket = new DatagramSocket(port);
		} catch (SocketException e) {
			e.printStackTrace();
		}		
		byte[] data = new byte[2048]; // 创建byte数组
		packet= new DatagramPacket(data, data.length);
	}

	/**启动线程的方法*/
	public void startThread() {
		Thread t=new Thread();
		t.start();		
	}

	/**不间断监听端口上来的数据*/
	public void run() {
		while(true) {		
			try {
				socket.receive(packet);// 接收数据包
			} catch (IOException e) {
				e.printStackTrace();
			} 
			int lenth=packet.getLength();//数据包长度						
			String ip=packet.getAddress().getHostAddress();//数据上来的地址
			int port=packet.getPort();//数据上来的端口
			String message=new String(packet.getData(), 0, lenth);//收到的数据
			message=message.replaceAll(" ", "");//去掉收到的数据空格
			message=message.replaceAll("\r\n", "");//去掉收到的数据换行回车
			String message_to_big=message.toUpperCase();//数据转为大写
			if(message.startsWith("$GNGGA")) {//如果收到的报文是$GNGGA开头
				dell_GNGGA( message_to_big, ip, port);//调用处理GNGGA报文的方法
			}
		}
	}


	/**实现UDP转发
	 * @param data 需要转发的数据
	 * @param  需要发送的ip地址
	 * @param 需要发送的port端口
	 * @param 需要发送的设备id*/
	public static void udp_out(byte[] data,String ip,int port,String tagid) {		
		InetAddress address=null;
		try {
			address=InetAddress.getByName(ip);
		} catch (UnknownHostException e) {
			ShowMessage.zidingyi_24("UDP未知地址异常:"+ip);
		}		
		DatagramPacket packet=new DatagramPacket(data, data.length, address, port);

		try {
			socket.send(packet);
		} catch (IOException e) {
			System.out.println("UDP发送异常"+ip);
		}

	}

	/**处理GNGGA报文的方法
	 * /***
	 *gps经纬度数据
	 *$GNGGA,[utc_time],[ weidu],[ NS],[ jingdu],[ EW],[state],[num],[hdop],[haiba_gao],
	 *[gao_danwei],[tuoqiu],[chafen_time],[chafen_id],[jiaoyan],[tagid],[power],[信号强度],[保留1],[保留2],[保留3]
	 *示例:$GNGGA,045449.000,3951.764319,N,11615.386554,E,2,19,0.70,57.726,M,-9.89,M,11,0000*69,1872,2d,19,0,0,0
	 *说明:
	 *1.$GNGGA;//包头
	 *2.utc_time;//字段1:UTC 时间,hhmmss.sss,时分秒格式
	 *3.weidu;//字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
	 *4.NS;//字段3:纬度N(北纬)或S(南纬)
	 *5.jingdu;//字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)
	 *6.EW;//字段5:经度E(东经)或W(西经)
	 *7.state;//字段6:定位质量GPS状态,0初始化, 1单点定位, 2码差分, 3无效PPS, 4固定解, 5浮点解, 6正在估算 7,人工输入固定值, 8模拟模式, 9WAAS差分
	 *8.num;//字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0)
	 *9.hdop;//字段8:HDOP水平精度因子(0.5 - 99.9)
	 *10.haiba_gao;//字段9:天线距离海平面高度(-9999.9 - 99999.9)
	 *11.gao_danwei;//字段10:高度单位M表示米
	 *12.tuoqiu;//字段11:地球椭球面相对大地水准面的高度
	 *13.chafen_time;//字段12:差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
	 *14.chafen_id;//字段13:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)
	 *15.jiaoyan;//字段14:校验值
	 *16.tagid;//字段15,:设备id,低位在前高位在后HEX格式
	 *17.power;//字段16;电量,HEX格式,0~100
	 *18.信号强度
	 *19.保留1
	 *20. 保留2
	 *21.保留3**/
	public static void dell_GNGGA(String message,String ip,int port) {
		//根据自己需求写
		String[] gpgga=message.split(",");//用逗号分割字段
		int lenth=gpgga.length;//字段长度
		if(lenth==21 ) {
			String gps_utc_time=gpgga[1];//字段1:UTC 时间,hhmmss.sss,时分秒格式
			String gps_weidu=gpgga[2];//字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
			String gps_NS=gpgga[3];//字段3:纬度N(北纬)或S(南纬)
			String gsp_jingdu=gpgga[4];//字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)
			String gps_EW=gpgga[5];//字段5:经度E(东经)或W(西经)
			//字段6:定位质量GPS状态,0初始化, 1单点定位, 2码差分, 3无效PPS, 
			//4固定解, 5浮点解, 6正在估算 7,人工输入固定值, 8模拟模式, 9WAAS差分
			String gps_state=gpgga[6];
			String gps_num=gpgga[7];//字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0)
			String gps_hdop=gpgga[8];//字段8:HDOP水平精度因子(0.5 - 99.9)
			String gps_haiba_gao=gpgga[9];//字段9:海拔高度(-9999.9 - 99999.9)
			String gao_danwei=gpgga[10];//高度单位M表示米
			String gps_tuoqiu=gpgga[11];//字段10:地球椭球面相对大地水准面的高度
			String gps_chafen_time=gpgga[12];//字段11:差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
			String gps_chafen_id=gpgga[13];//字段12:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)
			String gps_jiaoyan=gpgga[14];//字段13:校验值
			String tagid=gpgga[15];//设备id
			String power=gpgga[16];//设备电量
			String gpsxinhao="0";//GPS信号强度
			String baoliu1="0";//保留字段1,CO+URT的时候为CO的浓度
			String baoliu2="0";//保留字段2
			String baoliu3="0";//保留字段3
		}
	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

室内外融合北斗+uwb终端数据监听和发送控制方法 的相关文章

  • Astar算法

    1 什么是Astar算法 xff1f Astar算法是一种图形搜索算法 xff0c 常用于寻路 它是个以广度优先搜索为基础 xff0c 集Dijkstra算法与最佳优先 best fit 算法特点于一身的一种算法 它通过下面这个函数来计算每
  • 十进制转十六进制(C语言)

    输入 xff1a Entern 666 输出 xff1a 29A include 34 stdio h 34 include 34 stdlib h 34 int main void int n a1 count 61 0 j count
  • STM32串口发送数据和接收数据方式总结

    之前写了篇关于ESP8266使用AT指令进行互相通讯的实验 xff0c 在写STM32串口接发数据的程序中 xff0c 觉得有必要将之前学的有关于串口方面的使用经历加以总结 串口发送数据 xff1a 1 串口发送数据最直接的方式就是标准调用
  • fused_adam.so: cannot open shared object file: No such file or directory问题排查与解决

    最近一个同学加载一个新的预训练模型时候碰到了这样一个问题 xff0c 帮他排查解决一下 xff1a File 34 data anaconda3 envs nlp lib python3 6 site packages torch util
  • libcurl第十二课 内存分析

    在实际的测试环境中 xff0c 内存在不断的增长 xff0c 尽管不是很明显 代码申请内存分析 struct Curl multi Curl multi handle int hashsize socket hash int chashsi
  • stm32 esp8266 ota升级-tcp模拟http

    stm32 esp8266 ota系列文章 xff1a stm32 esp8266 ota 快速搭建web服务器之docker安装openresty stm32 esp8266 ota升级 tcp模拟http stm32 esp8266 o
  • vscode配置C环境

    vscode配置C环境 最近感觉基础不太行 xff0c 想重新看下数据结构 xff0c 用c语言重新写一下经典的结构 也不想换编辑器 xff0c 就想用vscode xff0c 刚好github上有一个一键配置c环境的工具 记录一下 配置c
  • 【光线追踪系列一】PPM输出;自定义vec3;光线、简单相机及天空采样

    本次光线追踪系列从基础重新开始 xff0c 主要参照 Ray Tracing in One Weekend xff0c 具体实现代码框架见 https github com RayTracing raytracing github io 本
  • 服务器总线协议_第一章----I2C总线协议入门

    目录 一 概述 二 首先了解一下I2C的I O结构 三 其次了解一下I2C的时序 第一部分 xff1a 起始停止信号简介 第二部分 xff1a I2C的时序部分要求 第三部分 xff1a I2C的一帧数据的格式 四 最终问与答 1 xff0
  • 服务器总线协议_第二章----I2C总线协议进阶

    敬请期待 xff0c 预计8月1日发布 xff0c 需要请加个关注
  • 服务器总线协议_第三章----SVID电源管理协议

    目录 一 概述 二 SVID协议组成方式 三 SVID协议拓扑要求 四 SVID如何判别读写 Master读操作 Master写操作 五 问与答 1 xff09 SVID有没有特殊的要求 xff1f 一 概述 首先先了解一下SVID的全称
  • PM_Sync的作用

    目录 一 先来了解一下PM Sync的全称 xff1a 一 PM Sync简介 PM Sync xff1a Power Management synchronization 同步电源管理 在知道这个信号的作用之前需要先来了解一下 ADR 二
  • si4438使用stm32f103配置调试成功!

    刚拿到si4438时候在网上找了一大波资源 xff0c 发现能使用的并没有多少 xff0c 于是自己配置一发 经过不懈努力配置成功 xff0c 现在将一些配置过程分享给大家 xff01 源码已上传 尽情下载 xff01 1 首先打开工程文件
  • 教你如何使用stm32发送一帧数据(结构体中的数据)

    在这篇文章中我介绍一下如何通过串口发送一帧存在结构体中的数据 通过串口接受一帧数据请参考的我博客中的文章 教你如何使用stm32接收一帧数据 xff01 一 xff1a 在 h首先定义一个结构体 typedef struct uint8 t
  • 浅谈线性稳压电源和开关稳压电源(开关电源)

    目前现有电源主要分为两大类 xff1a 线性稳压电源和开关稳压电源 xff08 开关电源 xff09 线性稳压电源 线性稳压电源经过变压 整流 滤波 稳压实现电源稳压 优点 xff1a 稳定性好 xff0c 瞬态响应速度快 xff0c 可靠
  • c++ #define 用法

    1 用于表示将两个参数连在一起 xff0c 其中宏的 前后空格会被省略 define CONNA a b a b define CONNB a b a b int main string a 61 CONNA 34 one 34 34 tw
  • MySQL第五课 Table has no partition for value

    场景 MySQL由于安全性要求 xff0c 版本升级之后 xff0c 执行插入数据出现Table has no partition for value 错误 已有版本5 7 20 log升级到5 7 26 log 说明 建表过程中 xff0
  • DSP数据安全平台

    数据安全平台 xff08 DSP xff0c Data Security Platforms xff09 的概念来源于Gartner的 2021数据安全技术成熟度曲线 xff0c DSP定义为以数据安全为中心的产品和服务 xff0c 旨在跨
  • c++ 数学库

    链接 link
  • vscode使用restClient实现各种http请求

    vscode使用restClient实现各种http请求 一 xff0c 安装插件 首先 xff0c 我们要在vscode的扩展中 xff0c 搜索rest Client xff0c 然后安装它 xff0c 这里我已经安装过了 安装后 xf

随机推荐

  • K210和STM32串口通信(亲测有效)

    声明 最近想做一个K210数字识别和寻迹 xff0c 方便完成2021年电赛F题 xff0c 完成了数字训练和脱机运行就想赶紧进行一次通信 xff0c 调了好几天 郁闷 xff0b 自闭几天 按照官方的历程看 xff0c 配置的没问题但是会
  • 简单Rabbitmq 发送消息和接收消息

    简单Rabbitmq 发送消息和接收消息 1 先在Rabbitmq配置文件中预先创建好交换器 xff0c 队列 xff0c 路由等信息 2 创建生产者发送消息 64 Autowired private RabbitTemplate rabb
  • Elasticsearch(ES6)------(4) ES设置用户名密码访问

    Elasticsearch ES xff08 1 xff09 下载 安装 43 kibana 下载 xff08 2 xff09 本机多节点启动 43 ElasticSearch head插件使用 xff08 3 xff09 索引 文档概念和
  • Elasticsearch(ES6) --根据条件修改字段值

    POST index name doc update by query 34 query 34 34 match 34 34 version 34 34 12 22 34 34 script 34 34 inline 34 34 ctx s
  • redis限流使用lua脚本

    lua脚本 xff0c 计数器限流 5秒内限流10次 64 param key 64 return public boolean acquire String key long now 61 System currentTimeMillis
  • ES6分页from+size、search_after两种查询

    1 from 43 size 分页查询 64 RequestMapping value 61 34 get 34 method 61 RequestMethod GET public BaseResponse lt List lt Obje
  • 使用activiti总结--bpmn画流程图

    假期结束 xff0c 赶紧总结一下前几天使用的Activiti工作流的一些方法 简单介绍一下Activiti Activiti一套完整的方便的业务流程管理 xff08 BPM xff09 框架 xff0c 它是覆盖了业务流程管理 工作流 服
  • clock函数 使用以及问题

    使用 clock 函数是一个计算程序运行时间 xff08 其实简略的理解为占用CPU的使用时间 xff09 其实如果使用sleep函数 xff0c 程序是放弃CPU的使用权 xff0c 直到某个时间的到来 xff0c 当然就不会存在占用CP
  • 使用activiti总结--发布,办理,查询

    接上一篇文章 xff0c 使用创建好的流程图 xff0c 总结一下activiti发布到查询使用的方法和测试代码 流程图 1 引用配置文件 activiti cfg xml xff0c 不引用或者引用失败的话在创建流引擎的时候会报空指针异常
  • Could not open JDBC Connection for transaction

    操做 xff1a 访问20次数据库没问题 xff0c 超过20次调用后报如下错误 详细报错 xff1a org springframework transaction CannotCreateTransactionException Cou
  • 【可信计算】第八次课:可信软件栈编程开发

    TPM2开源软件包 目前在github上TPM2开源软件一共包含六个项目tpm2 tools tpm2 tss tpm2 pkcs11 tpm2 tss engine tpm2 abrmd tpm2 totp 1 tpm2 tools 这一
  • 国赛----可见光室内定位

    初期试探 拿到题目后 xff0c 反复读了题目 首先队内结合网上资料形成了两种方案 xff0c 原理相同就是利用光信号到达的强度来定位 两者差距在于算法不同而已 xff0c 一种利用计算得出位置 xff0c 另一种就是经过测量得到一种位置与
  • 各种Arduino外部中断程序

    一 中断 Interrupt 的基本概念 中断 xff08 Interrupt xff09 是计算机的一个重要概念 xff0c 现代计算机普遍采用中断技术 什么是中断呢 xff1f CPU执行时原本是按程序指令一条一条向下顺序执行的 但如果
  • PX4通过参数脚本给飞控导入参数

    PX4通过参数脚本给飞控导入参数 先找一架正常能飞的无人机连接地面站 在参数页面右上角点击工具 gt 保存到文件 保存的时候文件名注明参数的相关信息 然后将需要加载参数的无人机连接至地面站 xff0c 注意需要加载参数的无人机必须和保存的参
  • 深蓝 运动规划

    文章目录 CH1 Introduction一 Motion Planning 概念二 Front end xff1a Path finding1 Search based methods2 Sampling based methods3 K
  • 接收机/DTU 安装调试 读取gps数据

    文章目录 一 整体连接图二 DTU配置三 接收机设置 在这里记录一下 xff0c 实验室平台上 xff0c 安装gps接收机和配置的一些步骤 一 整体连接图 二 DTU配置 首先 DTU 需要通过 COM 口和电脑端连接 xff0c 注意这
  • OOQP 安装和使用

    OOQP 安装和使用 1 安装2 使用 1 安装 需要先安装 blas 和 ma27 BLAS xff1a span class token builtin class name cd span my lib span class toke
  • 系统指标

    目录 1 cpu xxx 1 1 cpu空闲率cpu idle cpu idle表示除硬盘IO等待时间以外其它等待时间 xff0c 这个值越大 xff0c 表示cpu越空闲 xff0c 还可以执行更多的任务 xff0c 反之亦然 xff0c
  • stm32 MPU6050 6轴姿态传感器的介绍与DMP的应用

    最近应用到三轴姿态传感器 xff0c 因为之前有MPU6050 xff08 6轴传感器 xff0c 这是6轴的 xff09 xff0c 进行搭配使用 xff0c 通过三轴姿态传感器进行舵机的角度调整 内容来源学习正点原子的教程 xff09
  • 室内外融合北斗+uwb终端数据监听和发送控制方法

    UDP接收GNGGA报文同时转发UDP报文的方法 span class token keyword package span span class token class name Frame span span class token p