📄 hcmdat114.java
字号:
package com.gps.center.parsedata;
import java.util.regex.Pattern;
import com.gps.center.baseclass.MsgObj;
import com.gps.center.baseclass.ParseData;
import com.gps.center.baseclass.ParseInterface;
import com.gps.center.baseclass.HashObj;;
//设备回传的MDAT定位信息
public class HcMDAT114 extends ParseData implements ParseInterface {
public HcMDAT114() {
}
public void ParseMsg(MsgObj msg) {
parseSmsMsg(msg);
}
private void parseSmsMsg(MsgObj msg) {
//MDAT,00001234,13901234567,073831,A,3958.5986,N,11619.8053,E,00.0,000,080903,00*
//更新hash
HashObj hashobj;
Pattern regex;
regex = Pattern.compile("[,]");
String[] reStr = regex.split(msg.cMsg);
//hashtable的对象centerMap是否包含特殊键
if (super.centerMap.containsKey(reStr[2])) {
//返回reStr[2]的对象
hashobj = (HashObj)super.centerMap.get(reStr[2]);
if (hashobj.cDeviceSmsUsed) {
if (!hashobj.cPhonNum.equals(msg.cPhoneNum)) {
hashobj.cPhonNum = msg.cPhoneNum;
}
}
else {
hashobj.cPhonNum = msg.cPhoneNum;
hashobj.cDeviceSmsUsed = true;
}
}
else {
hashobj = new HashObj();
hashobj.cPhonNum = msg.cPhoneNum;
hashobj.cDeviceSmsUsed = true;
super.centerMap.put(reStr[2], hashobj);
}
//状态解析
//MDAT,00000003,13811932658,000000,V,0000.0000,N,00000.0000,E,00.0,000,000000,01,,,,*
String stateStr = new String("");
if (reStr[12].indexOf("*") != -1) {
reStr[12] = reStr[12].replaceFirst("*", "");
}
int bt = Integer.parseInt(reStr[12], 16);
// byte bt = Byte.parseByte(reStr[12]);
//断电报警33:(1000000)0x40 越界23(100000)0x20 超速22(10000)0x10 报警21(100)0x4 ACC(1)0x1
if ( (bt & 0x40) == 0x40) {
if (stateStr.equals("")) {
stateStr = stateStr + ",33";
}
else {
stateStr = stateStr + "+33";
}
}
if ( (bt & 0x20) == 0x20) {
if (stateStr.equals("")) {
stateStr = stateStr + ",23";
}
else {
stateStr = stateStr + "+23";
}
}
if ( (bt & 0x10) == 0x10) {
if (stateStr.equals("")) {
stateStr = stateStr + ",22";
}
else {
stateStr = stateStr + "+22";
}
}
if ( (bt & 0x4) == 0x4) {
if (stateStr.equals("")) {
stateStr = stateStr + ",21";
}
else {
stateStr = stateStr + "+21";
}
}
if ( (bt & 0x1) == 0x1) {
if (stateStr.equals("")) {
stateStr = stateStr + ",1";
}
else {
stateStr = stateStr + "+1";
}
}
if (bt == 0x0) {
if (stateStr.equals("")) {
stateStr = stateStr + ",2";
}
else {
stateStr = stateStr + "+2";
}
}
//添加Msg到sendQueue
//cMsgtype:1--TCPMSG,2--DEVICEUDPMSG,3--SMSMSG
//4--TCPSENDTODEVICE,5--UDPSENDTODEVICE,6--SMSSENDTODEVICE,7--TCPSENDTOTERMINAL,8--TCPRETURNTERMINAL
//MDAT,00001234,13901234567,073831,A,3958.5986,N,11619.8053,E,00.0,000,080903,00*
// MDAT,命令,ID,时间,定位,纬度,N,经度,E,方向,速度,日期,状态,
//114, 13954667441, NULL,A,3958.5986,N,11619.8053,E,00.0,000,080903,0,+0022,283848,0089,SMS(UDP,TCP)
//114,13683253488,NULL,V,0000.0000,N,00000.0000,E,00.0,000,2006-01-13
//ID[2],时间null,定位4,南纬5,N6,东经7,E8,速度10,方向9,状态12,温度,里程,行驶时间
String DBString = reStr[2]+",,"+reStr[4]+","+reStr[5]+","
+reStr[6]+","+reStr[7]+","+reStr[8]+","
+reStr[10]+","+reStr[9]+stateStr+",null,null,null";
msg.cMsgType = SENDTODBSERVER;
msg.cMsg = DBString;
super.addSendMsg(msg);
/*DeviceID,Longitude,Latitude,Speed
3958.5986,N,11619.8053,E
if (reStr[4].equals("A")) {
String[] dbStr = new String[4];
dbStr[0] = reStr[2];
dbStr[1] = String.valueOf(Float.parseFloat(reStr[7].substring(0, 3)) +
(Float.parseFloat(reStr[7].substring(3)) / 60));
dbStr[2] = String.valueOf(Float.parseFloat(reStr[5].substring(0, 2)) +
(Float.parseFloat(reStr[5].substring(2)) / 60));
dbStr[3] = reStr[9];
DbServer.updateTrackForceGpsInfo(dbStr);
}*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -