1、bootloader版本显示

2、记录最后收到数据的类型和时间
3、兼容3.0以前的d3f0格式
This commit is contained in:
weidong 2024-03-09 12:43:18 +08:00
parent 6dd98c53d7
commit cc5a020f5f
7 changed files with 52 additions and 26 deletions

View File

@ -56,7 +56,7 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
}
message.setTenantId(device1.getTenantId());
device1.updateD331Bytes(message.getLen(),message.getPacketNum());
device1.updateRx(message.getHeader(),message.getLen(),message.getPacketNum());
Gga gga = message.getGga();
if(gga != null) {
device1.updateSatelitesNum(gga.getSatellitesInUsed());

View File

@ -36,7 +36,7 @@ public class D341LocationMessageExecutor implements Executor<D341LocationMessage
Device device = deviceService.findByDeviceId(message.getId());
if(device == null) return null;
message.setTenantId(device.getTenantId());
device.updateD341Bytes(message.getLen());
device.updateRx(message.getHeader(), message.getLen(), 1);
Gga gga = message.getGga();
if(gga != null) {
device.updateSatelitesNum(gga.getSatellitesInUsed());

View File

@ -34,7 +34,7 @@ public class D342LocationMessageExecutor implements Executor<D342LocationMessage
message.setTenantId(device.getTenantId());
message.setProjectId(device.getProjectId());
message.setFwdId(device.getFwdId());
device.updateD342Bytes(message.getLen(),message.getMessageList().size());
device.updateRx(message.getHeader(), message.getLen(),message.getMessageList().size());
ThreadManager.getFixedThreadPool().submit(() -> {
gnssCalcService.calc(message);

View File

@ -39,7 +39,7 @@ public class D3F0SelfCheckMessageExecutor implements Executor<D3F0SelfCheckMessa
Device device = deviceService.findByDeviceId(message.getId());
if(device == null) return null;
message.setTenantId(device.getTenantId());
device.clearStat();
device.updateRx(message.getHeader(),message.getLen(),1);
ThreadManager.getFixedThreadPool().submit(() -> {
GnssStatus lastGnssStatus = dataPersistService.getDeviceState(message.getId());

View File

@ -47,6 +47,7 @@ public class D3F2StopIndicationMessageExecutor implements Executor<D3F2StopIndic
String deviceId = message.getId();
Device device = deviceService.findByDeviceId(deviceId);
if(device == null) return null;
device.updateRx(message.getHeader(), message.getLen(),1);
message.setTenantId(device.getTenantId());
GnssTrxMsg gnssTrxMsg = message.getTrxMsg();
gnssTrxMsg.setTenantid(device.getTenantId());

View File

@ -5,7 +5,6 @@ import io.netty.buffer.ByteBuf;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.time.LocalTime;
@ -32,19 +31,31 @@ public class D3F0SelfCheckMessage extends BaseMessage {
statusMsg.setRoll(src.readFloat());
statusMsg.setYaw(src.readFloat());
// skip shock
if(src.readableBytes()>=4) {
src.readFloat();
statusMsg.setDtustate(src.readUnsignedByte());
statusMsg.setRssi(src.readUnsignedByte());
statusMsg.setVoltage(src.readUnsignedShort());
}
// skip version
int ver = src.readUnsignedShort();
firmwareVersion = ((ver>>8)&0xFF) + "." + ((ver>>4)&0xF) + "." + (ver&0xF);
statusMsg.setTemperature((float) (src.readUnsignedShort()/10));
statusMsg.setHumidity((float) (src.readUnsignedShort()/10));
short verType = (short) ((ver >> 12) & 0xF);
firmwareVersion = ((ver >> 8) & 0xF) + "." + ((ver >> 4) & 0xF) + "." + (ver & 0xF);
if (verType > 0) firmwareVersion = firmwareVersion + " type:" + verType;
if(src.readableBytes()>=4) {
statusMsg.setTemperature((float) (src.readUnsignedShort() / 10));
statusMsg.setHumidity((float) (src.readUnsignedShort() / 10));
}
// imei
if(src.readableBytes()>=15){
imei = src.readCharSequence(15, StandardCharsets.UTF_8).toString();
}
if(src.readableBytes()>=2){
firmwareVersion = firmwareVersion +
" bVer:"+src.readUnsignedByte() +
" reboot:"+src.readUnsignedByte();
}
}

View File

@ -2,6 +2,8 @@ package com.imdroid.sideslope.sal;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 基站 & 测站设备
*
@ -49,20 +51,32 @@ public class Device {
Double longitude;
Double altitude;
public void updateD331Bytes(int bytes,int count){
LocalDateTime lastRxTime;
int lastRxHead = 0;
public void updateRx(int head, int bytes,int count){
lastRxHead = head;
lastRxTime = LocalDateTime.now();
switch (head){
case 0xd3f0:
clearStat();
break;
case 0xd3f2:
break;
case 0xd331:
d3xxCount+=count;
d3xxbytes += bytes;
}
public void updateD341Bytes(int bytes){
d341Count++;
break;
case 0xd341:
d341Count+=count;
d341bytes += bytes;
}
public void updateD342Bytes(int bytes, int d341Num){
break;
case 0xd342:
d342Count ++;
d342Bytes += bytes;
d341In42Count += d341Num;
d341In42Count += count;
break;
}
}
public void updateSatelitesNum(int num){
@ -72,7 +86,7 @@ public class Device {
}
}
public void clearStat(){
void clearStat(){
d3xxCount = 0;
d3xxbytes = 0;
d341Count = 0;