package baowen;
|
import java.math.BigInteger;
|
import java.nio.ByteBuffer;
|
|
import frame.Index1;
|
import publicclass.GetNowTime;
|
import publicclass.JugeNumber;
|
|
|
public class Dell_AACC {
|
static String time;
|
static String HC_header;
|
static String week;
|
static String second;
|
static String lat;
|
static String lon;
|
static String alt;
|
static String undulation;
|
static String ve;
|
static String vn;
|
static String vu;
|
static String pitch;
|
static String roll;
|
static String yaw;
|
static String std_lat;
|
static String std_lon;
|
static String std_alt;
|
static String std_ve;
|
static String std_vn;
|
static String std_vu;
|
static String std_pitch;
|
static String std_roll;
|
static String std_yaw;
|
static String vgyro_x;
|
static String vgyro_y;
|
static String vgyro_z;
|
static String vacccar_x;
|
static String vacccar_y;
|
static String vacccar_z;
|
static String speed;
|
static String heading;
|
static String heading2;
|
static String stat;
|
static String age;
|
static String ns;
|
static String ns2;
|
static String leaps;
|
static String hdop;
|
static String warning;
|
static String sensor_used;
|
static String vacc_x;
|
static String vacc_y;
|
static String vacc_z;
|
static String TimeValid;
|
static String receiver;
|
static String CRC32;
|
static int lenth;
|
static String mess;
|
|
public static void dell_AACC(String message,String ip,int port) {
|
if(message.startsWith("AACC")) {
|
time=GetNowTime.gethm();
|
String[] gnggns=message.split("AACC");
|
int size=gnggns.length;
|
if(size>2) {
|
for(int i=0;i<size;i++) {
|
if(gnggns[i].length()>5) {
|
jiexi_AACC("AACC"+gnggns[i],ip,port);
|
}
|
}
|
}else {
|
jiexi_AACC(message,ip,port);
|
}
|
}
|
}
|
|
public static void jiexi_AACC(String infom,String ip,int port) {
|
String[] hex=hex(infom);//ÔʼÊý¾Ý
|
String lenth0=hex[5]+hex[4];
|
String lat0=hex[39]+hex[38]+hex[37]+hex[36]+hex[35]+hex[34]+hex[33]+hex[32];
|
String lon0=hex[47]+hex[46]+hex[45]+hex[44]+hex[43]+hex[42]+hex[41]+hex[40];
|
String alt0=hex[51]+hex[50]+hex[49]+hex[48];
|
String pitch0=hex[71]+hex[70]+hex[69]+hex[68];
|
String roll0=hex[75]+hex[74]+hex[73]+hex[72];
|
String yaw0=hex[79]+hex[78]+hex[77]+hex[76];
|
String stat0=hex[153]+hex[152];
|
String age0=hex[157]+hex[156]+hex[155]+hex[154];
|
String ns0=hex[161]+hex[160];
|
lenth=decodeHEX(lenth0);
|
lat=doubelttohex(lat0);
|
lon=doubelttohex(lon0);
|
alt=hextofloat(alt0);
|
pitch=hextofloat(pitch0);
|
roll=hextofloat(roll0);
|
yaw=hextofloat(yaw0);
|
stat=String.valueOf(decodeHEX(stat0));
|
age=hextofloat(age0);
|
ns=String.valueOf(decodeHEX(ns0));
|
|
if(Index1.isShoware() ) {
|
if(Index1.getXieyi_type().equals("2")) {
|
mess=time+",¾¶È:"+lat+",γ¶È:"+lon+",¸ß³Ì:"+alt+",¸©Ñö½Ç:"+pitch
|
+",ºá¹ö½Ç:"+roll+",º½Ïò½Ç:"+yaw+",״̬:"+stat+",²î·ÖÁäÆÚ:"+age+",ÎÀÐÇ¿ÅÊý:"+ns;
|
}else if(Index1.getXieyi_type().equals("1")) {
|
mess=time+","+infom;
|
}else if(Index1.getXieyi_type().equals("3")) {
|
mess=time+",¾¶È:"+lat0+",γ¶È:"+lon0+",¸ß³Ì:"+alt0+",¸©Ñö½Ç:"+pitch0
|
+",ºá¹ö½Ç:"+roll0+",º½Ïò½Ç:"+yaw0+",״̬:"+stat0+",²î·ÖÁäÆÚ:"+age0+",ÎÀÐÇ¿ÅÊý:"+ns0;
|
}
|
Index1.ara_show(mess);
|
}
|
|
}
|
|
|
/**16½øÖÆ×ªÎª10½øÖÆ*/
|
public static int decodeHEX(String hexs){
|
String hex=hexs.trim();
|
boolean a=JugeNumber.isLetterDigit(hex);
|
int numb=0;
|
if(a) {
|
BigInteger bigint=new BigInteger(hex,16);
|
numb=bigint.intValue();
|
}else {
|
//ShowMessage.zidingyi("16½øÖÆ×ª10½øÖƳö´í,ÊÕµ½:"+hex);
|
}
|
return numb;
|
|
}
|
|
|
public static String[] hex(String message) {
|
int size=message.length()/2;
|
String[] hex=new String[size];
|
for(int i=0;i<size;i++) {
|
hex[i]=message.substring(i*2, 2+i*2);
|
}
|
|
return hex;
|
}
|
|
|
/**16½øÖÆ×ªÎªdouble*/
|
public static String doubelttohex(String hexString) {
|
long longValue = Long.parseLong(hexString, 16);
|
longValue = Long.parseUnsignedLong(hexString, 16);
|
double doubleValue = Double.longBitsToDouble(longValue);
|
byte[] bytes = hexStringToByteArray(hexString);
|
doubleValue = ByteBuffer.wrap(bytes).getDouble();
|
String a1=String.format("%.8f",doubleValue);
|
return a1;
|
}
|
|
public static byte[] hexStringToByteArray(String s) {
|
int len = s.length();
|
byte[] data = new byte[len / 2];
|
for (int i = 0; i < len; i += 2) {
|
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + 1), 16));
|
}
|
return data;
|
}
|
|
/**16½øÖÆ×ªÎªfloat*/
|
public static String hextofloat(String hex) {
|
Float f = Float.intBitsToFloat(new BigInteger(hex, 16).intValue());
|
String a1=String.format("%.4f",f);
|
return a1;
|
|
}
|
|
}
|