private string ParsePara(byte[] myReadBuffer) { BSSParameter p = new BSSParameter(); byte[] b = new byte[56]; Buffer.BlockCopy(myReadBuffer, 8, b, 0, 56); if (p.Parse(b)) { StringBuilder sb = new StringBuilder(); sb.AppendLine("设备序列号:" + p.DeviceID); sb.AppendLine("左舷发射中心频率:" + p.PortCentralFq); sb.AppendLine("右舷发射中心频率:" + p.StarBoardCentralFq); sb.AppendLine("脉冲长度:" + p.Ls); sb.AppendLine("左舷发射信号带宽:" + p.PortBandWidth); sb.AppendLine("右舷发射信号带宽:" + p.StarBoardBandWidth); sb.AppendLine("接收延时:" + p.RcvDelay); sb.AppendLine("探测距离:" + p.Range); sb.AppendLine("工作周期:" + p.Period); sb.AppendLine("AD数据采样率:" + p.ADSamples); sb.AppendLine("控制标识:" + p.Flag); sb.AppendLine("TVG延时:" + p.TVGDelay); sb.AppendLine("TVG更新速率:" + p.TVGReRate); sb.AppendLine("TVG比例因子:" + p.TvgBeta); sb.AppendLine("TVG吸收衰减:" + p.TvgAlpha); sb.AppendLine("TVG起始增益:" + p.TvgG); sb.AppendLine("命令标识:" + p.Com); sb.AppendLine("返回数据类型标识:" + p.RetID); sb.AppendLine("固定TVG:" + p.FixedTVG); return(sb.ToString()); } else { return(@"参数解析不正确"); } }
public static byte[] SetupLowBSS(BSSParameter para) { byte[] pkg = new byte[65]; Buffer.BlockCopy(BitConverter.GetBytes((int)ComID.SetupLowBSS), 0, pkg, 0, 2); Buffer.BlockCopy(BitConverter.GetBytes(Version), 0, pkg, 2, 2); Buffer.BlockCopy(BitConverter.GetBytes(9), 0, pkg, 4, 4); Buffer.BlockCopy(para.Pack(), 0, pkg, 8, 56); pkg[64] = 0;//校验 return(pkg); }
private void SaveXTF(List <BSSObject> datalist, BSSParameter parameter) { if (XtfFile.WriteOpened == false) { XtfFile.Create(); XtfFile.Write(Header.pack()); } DateTime dt = DateTime.Now; PingHeader.Year = (ushort)dt.Year; PingHeader.Month = (byte)dt.Month; PingHeader.Day = (byte)dt.Day; PingHeader.Hour = (byte)dt.Hour; PingHeader.Minute = (byte)dt.Minute; PingHeader.Second = (byte)dt.Second; PingHeader.HSeconds = (byte)(dt.Millisecond / 10); PingHeader.PingNumber = datalist[0].FrameNo; PingHeader.NumbytesThisRecord = 256; foreach (var bssObject in datalist) { if (bssObject.DataBytes == 0) { continue; } PingHeader.NumbytesThisRecord += 64;//pingchannel header length PingHeader.NumbytesThisRecord += (uint)bssObject.DataBytes; } PingHeader.SensorSpeed = GPS.Speed; PingHeader.SensorHeading = GPS.Heading; PingHeader.ShipXcoordinate = GPS.Longitude; PingHeader.ShipYcoordinate = GPS.Latitude; XtfFile.Write(PingHeader.pack()); foreach (var bssObject in datalist) { if (bssObject.DataBytes == 0) { continue; } if (bssObject.ID == (uint)ObjectID.PortLowBssData) { PingchanHeader.ChannelNumber = 0; PingchanHeader.SlantRange = parameter.Range; PingchanHeader.NumSamples = (uint)bssObject.DataBytes / Header.ChanInfo[0].bytesPerSample; XtfFile.Write(PingchanHeader.Pack()); } else if (bssObject.ID == (uint)ObjectID.StartboardLowBssData) { PingchanHeader.ChannelNumber = 1; PingchanHeader.SlantRange = parameter.Range; PingchanHeader.NumSamples = (uint)bssObject.DataBytes / Header.ChanInfo[1].bytesPerSample; XtfFile.Write(PingchanHeader.Pack()); } else if (bssObject.ID == (uint)ObjectID.PortHighBssData) { PingchanHeader.ChannelNumber = 2; PingchanHeader.SlantRange = parameter.Range; PingchanHeader.NumSamples = (uint)bssObject.DataBytes / Header.ChanInfo[2].bytesPerSample; XtfFile.Write(PingchanHeader.Pack()); } else if (bssObject.ID == (uint)ObjectID.StartboardHighBssData) { PingchanHeader.ChannelNumber = 3; PingchanHeader.SlantRange = parameter.Range; PingchanHeader.NumSamples = (uint)bssObject.DataBytes / Header.ChanInfo[3].bytesPerSample; XtfFile.Write(PingchanHeader.Pack()); } XtfFile.Write(bssObject.BssBytes); } }
public BSSResultData() { Parameter = new BSSParameter(); Data = new DtObject(); }
public static byte[] SetupLowBSS(BSSParameter para) { byte[] pkg = new byte[65]; Buffer.BlockCopy(BitConverter.GetBytes((int)ComID.SetupLowBSS), 0, pkg, 0, 2); Buffer.BlockCopy(BitConverter.GetBytes(Version), 0, pkg, 2, 2); Buffer.BlockCopy(BitConverter.GetBytes(9), 0, pkg, 4, 4); Buffer.BlockCopy(para.Pack(), 0, pkg, 8, 56); pkg[64] = 0;//校验 return pkg; }
public BSSResultData() { Parameter =new BSSParameter(); Data = new DtObject(); }
private string ParsePara(byte[] myReadBuffer) { BSSParameter p =new BSSParameter(); byte[] b = new byte[56]; Buffer.BlockCopy(myReadBuffer,8,b,0,56); if (p.Parse(b)) { StringBuilder sb = new StringBuilder(); sb.AppendLine("设备序列号:"+p.DeviceID); sb.AppendLine("左舷发射中心频率:" + p.PortCentralFq); sb.AppendLine("右舷发射中心频率:" + p.StarBoardCentralFq); sb.AppendLine("脉冲长度:" + p.Ls); sb.AppendLine("左舷发射信号带宽:" + p.PortBandWidth); sb.AppendLine("右舷发射信号带宽:" + p.StarBoardBandWidth); sb.AppendLine("接收延时:" + p.RcvDelay); sb.AppendLine("探测距离:" + p.Range); sb.AppendLine("工作周期:" + p.Period); sb.AppendLine("AD数据采样率:" + p.ADSamples); sb.AppendLine("控制标识:" + p.Flag); sb.AppendLine("TVG延时:" + p.TVGDelay); sb.AppendLine("TVG更新速率:" + p.TVGReRate); sb.AppendLine("TVG比例因子:" + p.TvgBeta); sb.AppendLine("TVG吸收衰减:" + p.TvgAlpha); sb.AppendLine("TVG起始增益:" + p.TvgG); sb.AppendLine("命令标识:" + p.Com); sb.AppendLine("返回数据类型标识:" + p.RetID); sb.AppendLine("固定TVG:" + p.FixedTVG); return sb.ToString(); } else { return @"参数解析不正确"; } }
private void SaveXTF(List<BSSObject> datalist, BSSParameter parameter) { if (XtfFile.WriteOpened == false) { XtfFile.Create(); XtfFile.Write(Header.pack()); } DateTime dt = DateTime.Now; PingHeader.Year = (ushort)dt.Year; PingHeader.Month = (byte)dt.Month; PingHeader.Day = (byte)dt.Day; PingHeader.Hour = (byte)dt.Hour; PingHeader.Minute = (byte)dt.Minute; PingHeader.Second = (byte)dt.Second; PingHeader.HSeconds = (byte)(dt.Millisecond/ 10); PingHeader.PingNumber = datalist[0].FrameNo; PingHeader.NumbytesThisRecord = 256; foreach (var bssObject in datalist) { if (bssObject.DataBytes == 0) continue; PingHeader.NumbytesThisRecord += 64;//pingchannel header length PingHeader.NumbytesThisRecord += (uint)bssObject.DataBytes; } PingHeader.SensorSpeed = GPS.Speed; PingHeader.SensorHeading = GPS.Heading; PingHeader.ShipXcoordinate = GPS.Longitude; PingHeader.ShipYcoordinate = GPS.Latitude; XtfFile.Write(PingHeader.pack()); foreach (var bssObject in datalist) { if (bssObject.DataBytes==0) continue; if (bssObject.ID == (uint) ObjectID.PortLowBssData) { PingchanHeader.ChannelNumber = 0; PingchanHeader.SlantRange = parameter.Range; PingchanHeader.NumSamples = (uint)bssObject.DataBytes/Header.ChanInfo[0].bytesPerSample; XtfFile.Write(PingchanHeader.Pack()); } else if (bssObject.ID == (uint)ObjectID.StartboardLowBssData) { PingchanHeader.ChannelNumber = 1; PingchanHeader.SlantRange = parameter.Range; PingchanHeader.NumSamples = (uint)bssObject.DataBytes / Header.ChanInfo[1].bytesPerSample; XtfFile.Write(PingchanHeader.Pack()); } else if (bssObject.ID == (uint)ObjectID.PortHighBssData) { PingchanHeader.ChannelNumber = 2; PingchanHeader.SlantRange = parameter.Range; PingchanHeader.NumSamples = (uint)bssObject.DataBytes / Header.ChanInfo[2].bytesPerSample; XtfFile.Write(PingchanHeader.Pack()); } else if (bssObject.ID == (uint)ObjectID.StartboardHighBssData) { PingchanHeader.ChannelNumber = 3; PingchanHeader.SlantRange = parameter.Range; PingchanHeader.NumSamples = (uint)bssObject.DataBytes / Header.ChanInfo[3].bytesPerSample; XtfFile.Write(PingchanHeader.Pack()); } XtfFile.Write(bssObject.BssBytes); } }