public RecordDisk(string driverName) { disk = new DiskUtil(driverName); recordControl = new RecordControl(disk); if (recordControl.IsValid == false) { return; } long offset = 512; int index = 0; while (true) { RecordFile file = new RecordFile(disk, offset, index++); if (file.Length == 0) { break; } listFile.Add(file); offset += file.Length; } }
public SelectChannel(RecordDisk disk, int channel, int index) { this.file = disk.RecordList[index-1]; this.channel = channel; this.RecordIndex = index; this.BeginTime = file.BeginTime.ToString("yyyy-MM-dd HH:mm:ss"); this.EndTime = file.EndTime.ToString("yyyy-MM-dd HH:mm:ss"); int seconds = 0; if (file.EndTime > file.BeginTime) { seconds = (int)((file.EndTime - file.BeginTime).TotalSeconds); this.RecordSec = seconds; int h = seconds / (3600); int m = (seconds - h * (3600)) / 60; int s = seconds - h * (3600) - m * 60; this.TimeLength = h.ToString("00") + ":" + m.ToString("00") + ":" + s.ToString("00"); } else { this.TimeLength = "---"; } this.Channel = channel; this.ChannelName = file.Channels[channel - 1].ChannelName; this.ModuleID=file.RecordDevice.DeviceInfo.DevCode+":"+file.RecordDevice.DeviceInfo.ID; this.TimeCal = file.Channels[channel - 1].Time; }
public SignalChannel(RecordFile recordFile, AutoResetEvent autoEvent, byte[] data, int offset) { this.recordFile = recordFile; this.eventDSP = autoEvent; this.DecodeCurve = 0; this.DecodeFM = false; this.DecodeAngle = false; UInt16 crc = CRC16.ComputeCRC16(data, offset, 124 - 2); UInt16 crcCal = BitConverter.ToUInt16(data, offset + 124 - 2); if (crc != crcCal) { return; } // this.ChannnelNum = data[0 + offset]; this.State = (byte)(data[1 + offset] >> 7); this.SampleRate = data[0 + offset] + ((data[1 + offset] & 0x1f) << 8); this.ChannelType = data[2 + offset]; //时间 int year = data[3 + offset] + 2000; int month = data[4 + offset]; int day = data[5 + offset]; this.Time = new DateTime(year, month, day); //名字 int num = data[6 + offset]; if (num > 0) { num = num > 8 ? 8 : num; this.Person = ASCIIEncoding.UTF8.GetString(data, 7 + offset, num); } else { this.Person = ""; } for (int i = 0; i < 21; i++) { CalcItem calItm = new CalcItem(data, 15 + i * 5 + offset); if (calItm.IsValid) { calList.Add(calItm); } } this.TimeInterval = 40; //默认是40毫秒计算一个点 }
public SignalChannel(RecordFile recordFile, AutoResetEvent autoEvent, byte[] data, int offset) { this.recordFile = recordFile; this.eventDSP = autoEvent; this.DecodeCurve = 0; this.DecodeFM = false; this.DecodeAngle = false; UInt16 crc = CRC16.ComputeCRC16(data, offset, 124 - 2); UInt16 crcCal = BitConverter.ToUInt16(data, offset + 124 - 2); if (crc != crcCal) return; // this.ChannnelNum = data[0 + offset]; this.State = (byte)(data[1 + offset] >> 7); this.SampleRate = data[0 + offset] + ((data[1 + offset] & 0x1f) << 8); this.ChannelType = data[2 + offset]; //时间 int year = data[3 + offset] + 2000; int month = data[4 + offset]; int day = data[5 + offset]; this.Time = new DateTime(year, month, day); //名字 int num = data[6 + offset]; if (num > 0) { num = num > 8 ? 8 : num; this.Person = ASCIIEncoding.UTF8.GetString(data, 7 + offset, num); } else { this.Person = ""; } for (int i = 0; i < 21; i++) { CalcItem calItm = new CalcItem(data, 15 + i * 5 + offset); if (calItm.IsValid) { calList.Add(calItm); } } this.TimeInterval = 40; //默认是40毫秒计算一个点 }
public void Export(FileStream fs) { this.ExportOK = false; recordControl.Write(fs); for (int i = 0; i < listFile.Count; i++) { RecordFile file = listFile[i]; if (file.Select) { exportFileIndex = i; file.Write(fs); exportedSize += file.Length; } } this.ExportOK = true; }
public RecordDisk(string driverName) { disk = new DiskUtil(driverName); recordControl = new RecordControl(disk); if (recordControl.IsValid == false) return; long offset = 512; int index = 0; while (true) { RecordFile file = new RecordFile(disk, offset,index++); if (file.Length == 0) break; listFile.Add(file); offset += file.Length; } }
private void ExportProc() { try { exportTotal = 0; exportedSize = 0; for (int i = 0; i < MaxSrcs; i++) { if (selectChannels[i] != null) { exportTotal += selectChannels[i].File.Length; } } for (int i = 0; i < MaxSrcs; i += PropChannelNum) { if (selectChannels[i] != null) { exportFile = selectChannels[i].File; if (i > 0 && (selectChannels[i - PropChannelNum] != null)) { exportedSize += selectChannels[i - PropChannelNum].File.Length; } SignalChannel sigChannel = selectChannels[i].File.Channels[selectChannels[i].Channel-1]; int srcIndex = i / PropChannelNum; sigChannel.DecodeFM = false; sigChannel.DecodeCurve = 0; sigChannel.DecodeAngle = false; sigChannel.DecodeFM=selectDevice.DevGroup.SourceGroups[srcIndex].AllowFM; int allowCurve=selectDevice.DevGroup.SourceGroups[srcIndex].AllowCurve; sigChannel.DecodeCurve = allowCurve; bool allowAngle = selectDevice.DevGroup.SourceGroups[srcIndex].AllowAngle; sigChannel.DecodeAngle = allowAngle; if (allowAngle && selectChannels[i + 1] != null) //参考相位 { SignalChannel sigChannel1 = selectChannels[i + 1].File.Channels[selectChannels[i + 1].Channel - 1]; sigChannel1.DecodeAngle = true; sigChannel1.IsReference = true; selectChannels[i + 1].File.SignalArgsChanged += new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged); } else if (allowCurve>0) //解码道岔曲线 { HHDeviceProperty devBindProp= selectDevice.GetProperty(selectDevice.DevGroup.SourceGroups[srcIndex].Properties[0]); DevCurve devCurve= devBindProp.Curves[0]; sigChannel.TimeInterval = devCurve.TimeInterval; if (devCurve.MonitorType == Common.SignalType.SignalDCCurve) { sigChannel.DecodeCurve = 2; } else { sigChannel.DecodeCurve = 1; } if ((selectChannels[i + 1] == null) && (selectChannels[i + 2] == null)) //单相 { sigChannel.SignalArgsChanged += new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged); } else { curveGrp = new Common.CurveGroup(3, devCurve.Group.Type, devCurve.Index); sigChannel.SignalArgsChanged += new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedA); if (selectChannels[i + 1] != null) { selectChannels[i + 1].File.Channels[selectChannels[i + 1].Channel - 1].SignalArgsChanged += new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedB); //B相 } if (selectChannels[i + 2] != null) { selectChannels[i + 2].File.Channels[selectChannels[i + 2].Channel - 1].SignalArgsChanged += new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedC); //C相 } } } else { sigChannel.SignalArgsChanged += new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged); } exportSrcIndex = srcIndex; selectChannels[i].File.Export(); if (allowAngle && selectChannels[i + 1] != null) //参考相位 { SignalChannel sigChannel1 = selectChannels[i + 1].File.Channels[selectChannels[i + 1].Channel - 1]; sigChannel1.DecodeAngle = true; sigChannel1.SignalArgsChanged -= new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged); } else if ((allowCurve>0) && ((selectChannels[i + 1] != null) || (selectChannels[i + 2] != null))) //有2条以上曲线 { HHDeviceProperty devBindProp = selectDevice.GetProperty(selectDevice.DevGroup.SourceGroups[srcIndex].Properties[0]); DevCurve devCurve = devBindProp.Curves[0]; sigChannel.SignalArgsChanged -= new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedA); if (selectChannels[i + 1] != null) { selectChannels[i + 1].File.Channels[selectChannels[i + 1].Channel - 1].SignalArgsChanged -= new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedB); //B相 } if (selectChannels[i + 2] != null) { selectChannels[i + 2].File.Channels[selectChannels[i + 2].Channel - 1].SignalArgsChanged -= new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedC); //C相 } } else { sigChannel.SignalArgsChanged -= new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged); } } } exportOK = true; } catch (Exception) { } }