private void ProcessUBXMessage()
{
try
{
// survey in
if (ubx_m8p.@class == 0x1 && ubx_m8p.subclass == 0x3b)
{
var svin = ubx_m8p.packet.ByteArrayToStructure<Utilities.ubx_m8p.ubx_nav_svin>(6);
var X = svin.meanX/100.0 + svin.meanXHP*0.0001;
var Y = svin.meanY/100.0 + svin.meanYHP*0.0001;
var Z = svin.meanZ/100.0 + svin.meanZHP*0.0001;
var pos = new double[] {X, Y, Z};
double[] baseposllh = new double[3];
Utilities.rtcm3.ecef2pos(pos, ref baseposllh);
MainV2.comPort.MAV.cs.MovingBase = new Utilities.PointLatLngAlt(baseposllh[0]*Utilities.rtcm3.R2D,
baseposllh[1]*Utilities.rtcm3.R2D, baseposllh[2]);
updateSVINLabel("Survey IN Valid: " + (svin.valid == 1) + " InProgress: " + (svin.active == 1) +
" Duration: " + svin.dur + " Obs: " + svin.obs + " Acc: " + svin.meanAcc/10000.0);
if (svin.valid == 1)
ubx_m8p.turnon_off(comPort, 0x1, 0x3b, 0);
}
//pvt
if (ubx_m8p.@class == 0x1 && ubx_m8p.subclass == 0x7)
{
var pvt = ubx_m8p.packet.ByteArrayToStructure<Utilities.ubx_m8p.ubx_nav_pvt>(6);
//MainV2.comPort.MAV.cs.MovingBase = new Utilities.PointLatLngAlt(pvt.lat / 1e7, pvt.lon / 1e7, pvt.height / 1000.0);
}
if (ubx_m8p.@class == 0x5 && ubx_m8p.subclass == 0x1)
{
this.LogInfoFormat("ubx ack {0} {1}", ubx_m8p.packet[6], ubx_m8p.packet[7]);
}
if (ubx_m8p.@class == 0x5 && ubx_m8p.subclass == 0x0)
{
this.LogInfoFormat("ubx Nack {0} {1}", ubx_m8p.packet[6], ubx_m8p.packet[7]);
}
if (ubx_m8p.@class == 0xa && ubx_m8p.subclass == 0x4)
{
this.LogInfoFormat("ubx mon-ver {0} {1}", ubx_m8p.packet[6], ubx_m8p.packet[7]);
}
}
catch
{
}
}