暚光科技定位系统数据解析-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 ...
随机推荐
- 微信小程序~tabBar和navigator一起使用无效
1.当注册了tabBar的时候,使用navigator时会发现不能跳转,这个时候需要在navigator上加上open-type=’switchTab’ 属性 <navigator open-t ...
- 解决PHP处理图片时内存占用过高问题
用过GD库的同学可能都知道,使用imagecreatetruecolor()函数创建一个真彩色的画布是第一步.但是,如果画布的宽高超过平常的宽高,会带来极大的内存消耗.比如,一个9600×4800的画 ...
- RDD&Dataset&DataFrame
Dataset创建 object DatasetCreation { def main(args: Array[String]): Unit = { val spark = SparkSession ...
- 性能:Output层面
将数据保存到MySQL中 import java.sql.DriverManager import org.apache.spark.storage.StorageLevel import org.a ...
- 《团队作业第三、四周》五阿哥小组Scrum 冲刺阶段---Day4
<团队作业第三.四周>五阿哥小组Scrum 冲刺阶段---Day3 一.项目燃尽图 二.项目进展 20182310周烔今日进展: 主要任务一览:聊天软件主界面 20182330魏冰妍今日进 ...
- Idea中,项目文件右键菜单没有svn选项处理办法
问题描述 IntelliJ IDEA打开带SVN信息的项目,在项目文件上点击右键,菜单中没有Subversion的功能项,如下图: 解决办法 点击菜单:VCS -> Enabled Versio ...
- 10-Flutter移动电商实战-使用FlutterSwiper制作轮播效果
1.引入flutter_swiper插件 flutter最强大的siwiper, 多种布局方式,无限轮播,Android和IOS双端适配. 好牛X得介绍,一般敢用“最”的一般都是神级大神,看到这个介绍 ...
- 使用WinDbg调试入门(用户模式)
windbg是一个内核模式和用户模式调试器,包含在Windows调试工具中.在这里,提供个实践练习,帮助我们开始使用windbg作为用户模式调试器. 用WinDbg调试记事本 1.导航到安装目录,然后 ...
- JMeter学习2
JMeter学习(四)参数化 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进行参数化 ...
- 49、Spark Streaming基本工作原理
一.大数据实时计算介绍 1.概述 Spark Streaming,其实就是一种Spark提供的,对于大数据,进行实时计算的一种框架.它的底层,其实,也是基于我们之前讲解的Spark Core的. 基本 ...