暚光科技定位系统数据解析-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. 微信小程序~tabBar和navigator一起使用无效

    1.当注册了tabBar的时候,使用navigator时会发现不能跳转,这个时候需要在navigator上加上open-type=’switchTab’ 属性 <navigator open-t ...

  2. 解决PHP处理图片时内存占用过高问题

    用过GD库的同学可能都知道,使用imagecreatetruecolor()函数创建一个真彩色的画布是第一步.但是,如果画布的宽高超过平常的宽高,会带来极大的内存消耗.比如,一个9600×4800的画 ...

  3. RDD&Dataset&DataFrame

    Dataset创建 object DatasetCreation { def main(args: Array[String]): Unit = { val spark = SparkSession ...

  4. 性能:Output层面

    将数据保存到MySQL中 import java.sql.DriverManager import org.apache.spark.storage.StorageLevel import org.a ...

  5. 《团队作业第三、四周》五阿哥小组Scrum 冲刺阶段---Day4

    <团队作业第三.四周>五阿哥小组Scrum 冲刺阶段---Day3 一.项目燃尽图 二.项目进展 20182310周烔今日进展: 主要任务一览:聊天软件主界面 20182330魏冰妍今日进 ...

  6. Idea中,项目文件右键菜单没有svn选项处理办法

    问题描述 IntelliJ IDEA打开带SVN信息的项目,在项目文件上点击右键,菜单中没有Subversion的功能项,如下图: 解决办法 点击菜单:VCS -> Enabled Versio ...

  7. 10-Flutter移动电商实战-使用FlutterSwiper制作轮播效果

    1.引入flutter_swiper插件 flutter最强大的siwiper, 多种布局方式,无限轮播,Android和IOS双端适配. 好牛X得介绍,一般敢用“最”的一般都是神级大神,看到这个介绍 ...

  8. 使用WinDbg调试入门(用户模式)

    windbg是一个内核模式和用户模式调试器,包含在Windows调试工具中.在这里,提供个实践练习,帮助我们开始使用windbg作为用户模式调试器. 用WinDbg调试记事本 1.导航到安装目录,然后 ...

  9. JMeter学习2

    JMeter学习(四)参数化 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进行参数化 ...

  10. 49、Spark Streaming基本工作原理

    一.大数据实时计算介绍 1.概述 Spark Streaming,其实就是一种Spark提供的,对于大数据,进行实时计算的一种框架.它的底层,其实,也是基于我们之前讲解的Spark Core的. 基本 ...