暚光科技定位系统数据解析-java
暚光科技定位系统数据解析-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的更多相关文章
- Java数据解析之JSON
文章大纲 一.JSON介绍二.常见框架介绍与实战三.Studio中GsonFormat插件使用四.项目源码下载(含参考资料)五.参考文档 一.JSON介绍 1. 简介 JSON 的全称是 Ja ...
- Java数据解析---JSON
一.Java数据解析分为:XML解析和JSON解析 XML解析即是对XML文件中的数据解析,而JSON解析即对规定形式的数据解析,比XML解析更加方便 JSON解析基于两种结构: 1.键值对类型 { ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
- 转 : 深入解析Java锁机制
深入解析Java锁机制 https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw%3D%3D&mid=2247485524&idx=1&s ...
- android基础(五)网络数据解析方法
在网络上传输数据时最常用的方法有两种:XML和JSON,下面就对这两种类型的数据解析进行讲解. 一.XML数据解析 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析 ...
- 数据解析(XML和JSON数据结构)
一 解析 二 XML数据结构 三 JSON 数据结构 一 解析 1 定义: 从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...
- JSON数据解析 基础知识及链接收集
JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...
- 浅谈JSON数据解析方法
JSON数据解析 JSON是什么?? 如何把JSON数据解析出来 如何把一个字典转换为JSON JSON详细介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交 ...
- JSON数据解析(GSON方式) (转)
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 在上一篇博文<Andro ...
随机推荐
- Linux命令——basename、dirname
简介 这2个命令多用于shell脚本 用法 basename filename_will_full_path dirname filename_will_full_path 对于但后缀的情况,base ...
- 读react源码准备
git源码地址:https://github.com/facebook/react react 里面就是 react源码 react里面的react文件夹就是react源码,react源码非常的少,总 ...
- C++学习(1)—— 初识C++
1. 变量 作用:给一段指定的内存空间起名,方便操作这段内存空间 语法:数据类型 变量名称=变量初始值 #include<iostream> using namespace std; i ...
- Flooded! UVA - 815 (sort排序)
错了好多遍,不知道为啥出错,如果有大神发现,请求指点!!! 附错误代码(错的不知道怎么回事): #include<iostream> #include<cstdio> #inc ...
- 摘:Windows系统内存计数器理解解析_备忘录_51Testing软件测试网...
[原创]Windows系统内存计数器理解解析 2008-05-13 11:42:23 / 个人分类:性能测试 说明:本文的计数器以Windows2003为准. 序言;F9n)\%V1a6Z C)?ZV ...
- java怎么比较两个实体类的属性值
分享一下比较两个实体类的工具包 package cn.mollie.utils; import java.beans.Introspector; import java.beans.PropertyD ...
- sql语句的面试题
中科软的面试题:http://www.mayiwenku.com/p-5888480.html 中科软的面试题:https://blog.csdn.net/woolceo/article/detail ...
- web自动化测试-selenium的三种等待
一.等待的作用 1.在系统的功能运行过程中,所有的内容是需要一定的时间来实现展示, 2.时间耗费长短与网络速度.系统框架设定.接口的执行复杂度有关, 3.因此需要设置缓冲时间,若未设置缓冲时间,容易导 ...
- SpringBoot源码分析-编译环境与新建测试模块
建议 分析源码建议不要使用Idea或者Eclipse等IDE工具的反编译功能或者导入源码包的方式看源码,那样不能给框架的源码做注释,所以分析源码之前都得先下载源码并构建,然后在项目中新建一个Modul ...
- ajax 样式
Ajax 由 HTML.JavaScript™ 技术.DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序.它是一种构建网站的强大方法. 使用aja ...