• 暚光科技定位系统数据解析-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);
            }
            
            
    }
  • 相关阅读:
    CentOS7 安装 mysql
    redis简介以及redis集群配置
    分布式布局简述
    字符串
    接口
    接口回调
    java关键字之static
    java关键字之final
    java关键字之abstract
    memcache的配置
  • 原文地址:https://www.cnblogs.com/herd/p/11912699.html
Copyright © 2020-2023  润新知