暚光科技定位系统数据解析-java

package com.ygkj.test;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket; import org.apache.commons.codec.binary.Hex; /*******************************************************************************************************
* Copyright: vc1.0 2018. All rights reserved. <br>
* The whole package including this class is licensed under <br>
* <br>
* @ClassName: <br>
* @Directory: <br>
* @version: v1.0.0 <br>
* @date: <br>
* @Description: <br>
* 1、 <br>
* 2、 <br>
* @Others: 暂无说明 <br>
* @Modification History: <br>
* 1、 <br>
* Date: <br>
* Author: <br>
* Modification: <br>
* <br>
* 2、 <br>
* Date: <br>
* Author: <br>
* Modification: <br>
*
* @Statement: If you are using the package or parts of it in any commercial way, a commercial license is required. <br>
* Visit <a href='http://www.bim-times.com'>http://www.bim-times.com</a> for more information.<br>
*
*********************************************************************************************************/
public class YGDataReceive extends Thread{ private static Socket socket = null;
private static String serverHost = "192.168.2.200";
private static final int PORT = 9000;
byte[] b = new byte[1024];
public YGDataReceive(){
try {
socket = new Socket(serverHost,PORT);//建立socket连接
} catch (IOException e) {
e.printStackTrace();
}
} public void run(){
while(true){
//不停的读取从服务器端发来的消息
InputStream ois =null;
DataInputStream dis = null;
try{
ois =socket.getInputStream();
dis = new DataInputStream(ois);
dis.read(b);
//String serverToClient = new String(hexEncode(b));
System.out.println("服务端返回到客户端的信息:"+printHexString(b));
}catch(Exception e){
e.printStackTrace();
}
}
} public static void main(String[] args){
YGDataReceive msg = new YGDataReceive();
msg.start();
} /**
* Hex解码
* @param input
* @return
*/
public static byte[] hexDecode(String input){
try{
return Hex.decodeHex(input.toCharArray());
}catch(Exception e){
e.printStackTrace();
}
return null;
} /**
* Hex编码
* @param input
* @return
*/
public static String hexEncode(byte[] input){
return Hex.encodeHexString(input);
} //将指定byte数组以16进制的形式打印到控制台 13911750029
public static String printHexString( byte[] b) {
String sd="";
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
System.out.print(hex.toUpperCase() +" ");
sd=sd+hex.toUpperCase();
}
System.out.println("sd:"+sd);
String str =getPosition(sd);
return str;
} public static String getPosition(String str){
String position_msg ="";
if(str!=null){
System.out.println("---str.length="+str.length());
//if(str.length()==40){
String strID = str.substring(12, 16);
String strX = str.substring(16, 24);
String strY = str.substring(24, 32); String strZ = str.substring(32, 40);
System.out.println("-----------------------------------");
System.out.println(strID);
System.out.println(strX);
System.out.println(strY);
System.out.println(strZ); String endStr="FFFF"; if(!strID.endsWith(endStr)&&!strX.endsWith(endStr)&&!strY.endsWith(endStr)&&!strZ.endsWith(endStr))
{
//System.out.println("ID:"+getInt(getDivLine(str.substring(12, 16)))+" x:"+getDouble(getDivLine(str.substring(16, 24)))+" y:"+getDouble(getDivLine(str.substring(24, 32)))+" z:"+getDouble(getDivLine(str.substring(32, 40))));
System.out.println("ID:"+getInt(getDivLine(str.substring(12, 16)))+" x:"+getDouble(getDivLine(strX))+" y:"+getDouble(getDivLine(strY))+" z:"+getDouble(getDivLine(strZ)));
position_msg = "ID:"+getInt(getDivLine(str.substring(12, 16)))+" x:"+getDouble(getDivLine(str.substring(16, 24)))+" y:"+getDouble(getDivLine(str.substring(24, 32)))+" z:"+getDouble(getDivLine(str.substring(32, 40)));
return position_msg;
} //}
}
return null;
} public static String getDivLine(String str){
String result ="";
if(str.length()==4){
result = str.substring(2, 4)+str.substring(0, 2);
}else if(str.length()==8){
result = str.substring(4, 8)+str.substring(2, 4)+str.substring(0, 2);
}else{
result ="0000";
} return result;
} public static double getDouble(String str){
Double d = Double.valueOf(Integer.parseInt(str,16));
return d;
} public static int getInt(String str){
return Integer.parseInt(str,16);
} }

暚光科技定位系统数据解析-java的更多相关文章

  1. Java数据解析之JSON

    文章大纲 一.JSON介绍二.常见框架介绍与实战三.Studio中GsonFormat插件使用四.项目源码下载(含参考资料)五.参考文档   一.JSON介绍 1. 简介   JSON 的全称是 Ja ...

  2. Java数据解析---JSON

    一.Java数据解析分为:XML解析和JSON解析 XML解析即是对XML文件中的数据解析,而JSON解析即对规定形式的数据解析,比XML解析更加方便 JSON解析基于两种结构: 1.键值对类型 { ...

  3. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

  4. 转 : 深入解析Java锁机制

    深入解析Java锁机制 https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw%3D%3D&mid=2247485524&idx=1&s ...

  5. android基础(五)网络数据解析方法

    在网络上传输数据时最常用的方法有两种:XML和JSON,下面就对这两种类型的数据解析进行讲解. 一.XML数据解析 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析 ...

  6. 数据解析(XML和JSON数据结构)

    一   解析 二 XML数据结构 三 JSON 数据结构     一 解析 1  定义: 从事先规定好的格式中提取数据     解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...

  7. JSON数据解析 基础知识及链接收集

    JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...

  8. 浅谈JSON数据解析方法

    JSON数据解析 JSON是什么?? 如何把JSON数据解析出来 如何把一个字典转换为JSON JSON详细介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交 ...

  9. JSON数据解析(GSON方式) (转)

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 在上一篇博文<Andro ...

随机推荐

  1. Docker搭建私用仓库

    搭建私有仓库 # 1.查找registry,官方的私用仓库镜像 docker search registry # 2.下载私有仓库镜像 docker pull registry # 3.创建并后台运行 ...

  2. docker学习6-docker-compose容器集群编排

    前言 实际工作中我们部署一个应用,一般不仅仅只有一个容器,可能会涉及到多个,比如用到数据库,中间件MQ,web前端和后端服务,等多个容器. 我们如果一个个去启动应用,当项目非常多时,就很难记住了,所有 ...

  3. 第七篇:ORM框架SQLAlchemy

    阅读目录 一 介绍 二 创建表 三 增删改查 四 其他查询相关 五 正查.反查 一 介绍 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进 ...

  4. phantomJS+Python 隐形浏览器

    phantomjs解压后,把文件夹bin中的phantomjs.exe移到python文件夹中的Scripts中 实例: from selenium import webdriver driver = ...

  5. BZOJ -3730(动态点分治)

    题目:在一片土地上有N个城市,通过N-1条无向边互相连接,形成一棵树的结构,相邻两个城市的距离为1,其中第i个城市的价值为value[i]. 不幸的是,这片土地常常发生地震,并且随着时代的发展,城市的 ...

  6. MERGE引擎 分表后 快速查询所有数据

    MERGE存储引擎把一组MyISAM数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询.构成一个MERGE数据表结构的各成员MyISAM数据表必须具有完全一样的结构.每一个成员数据表的数据列必 ...

  7. python完成加密参数sign计算并输出指定格式的字符串

    加密规则: 1.固定加密字符串+字符串组合(key/value的形式,并通过aissc码排序), 2.通过sha1算法对排序后的字符串进行加密, 3.最终输出需要的参数sign 4.完成请求参数数据的 ...

  8. Centos7安装使用Mysql(mariadb)

    安装 shell> yum install mariadb-server -y 配置 # 修改文件 /etc/my.cnf [mysqld]datadir=/mydata/data/mysqlc ...

  9. sqler 集成 terraform v0.12 生成资源部署文件

    terraform v0.12 发布了,有好多新功能的添加,包括语法的增强,新函数的引入,更好的开发提示 只是当前对于一些老版本的provider 暂时还不兼容,但是大部分官方的provider 都是 ...

  10. 22-ESP8266 SDK开发基础入门篇--编写Android TCP客户端 , 连接和断开

    https://www.cnblogs.com/yangfengwu/p/11192618.html 有些很细致的东西参考这篇   https://www.cnblogs.com/yangfengwu ...