public static new DataRecord_Base CreateData(byte[] srcdata) { Mode3Record ret = new Mode3Record(); ret.Data = srcdata; return ret; }
/// <summary> /// モード3データのセット /// </summary> /// <param name="reserveData"></param> /// <param name="sampleData"></param> private void SetMode3Data(Mode3Record reserveData, ref SampleData sampleData) { sampleData.SampleTime = DateTime.Now; sampleData.ChannelDatas = new ChannelData[11]; Value_Standard valuedata = null; //データ取得用オフセット int dataoffset = 0; //チャンネル分+回転数分ループ for (int channelIndex = 0; channelIndex < channelEnables.Length + 1; channelIndex++) { if (channelIndex != 0 && !ChannelEnables[channelIndex - 1]) continue; sampleData.ChannelDatas[channelIndex] = new ChannelData(); sampleData.ChannelDatas[channelIndex].Position = channelIndex; //回転数の場合 if (channelIndex == 0) { } else { //モード3データを生成 //センサ種により処理分け switch (channelsSetting.ChannelSettingList[channelIndex - 1].ChKind) { case ChannelKindType.B: valuedata = new Value_Standard(); //補償演算 valuedata.Value = CalcOperator.Calc(channelIndex - 1 , reserveData.MeasData.chData[dataoffset + 2] , reserveData.MeasData.chData[dataoffset] , (reserveData.MeasData.chData[dataoffset + 1] == 0xFFFF ? -1 : reserveData.MeasData.chData[dataoffset + 1])); //valuedata.Value = SystemSetting.CalibrationTables[channelIndex - 1].Calc( // reserveData.MeasData.chData[dataoffset + 2] // , reserveData.MeasData.chData[dataoffset] // , reserveData.MeasData.chData[dataoffset + 1]); //温度補償必要 //chData[dataoffset] == 最大振幅 //chData[dataoffset + 1] == 温度データ //chData[dataoffset + 2] == AD値 //臨時 //valuedata.Value = reserveData.MeasData.chData[dataoffset + 2]; sampleData.ChannelDatas[channelIndex].DataValues = valuedata; break; case ChannelKindType.R: valuedata = new Value_Standard(); //補償演算 valuedata.Value = CalcOperator.Calc(channelIndex - 1 , reserveData.MeasData.chData[dataoffset + 1] , tempValue:(reserveData.MeasData.chData[dataoffset] == 0xFFFF ? -1 : reserveData.MeasData.chData[dataoffset])); ////温度補償 //valuedata.Value = SystemSetting.CalibrationTables[channelIndex - 1].Calc( // reserveData.MeasData.chData[dataoffset + 1] // , -1 // , reserveData.MeasData.chData[dataoffset]); //温度補償必要 //chData[dataoffset] == 温度データ //chData[dataoffset + 1] == AD値 //臨時 //valuedata.Value = reserveData.MeasData.chData[dataoffset + 1]; sampleData.ChannelDatas[channelIndex].DataValues = valuedata; break; default: //B,Rセンサ以外は1つ目がデータ valuedata = new Value_Standard(); //LセンサでChannelの0要求があった場合 if (channelsSetting.ChannelSettingList[channelIndex - 1].ChKind == ChannelKindType.L && channelIndex == L_ZeroSettingRequestNo) { SystemSetting.DataTagSetting.GetTag(SystemSetting.RelationSetting.RelationList[channelIndex].TagNo_1).StaticZero = reserveData.MeasData.chData[dataoffset]; L_ZeroSettingRequestNo = 0; } //補償演算 valuedata.Value = CalcOperator.Calc(channelIndex - 1, reserveData.MeasData.chData[dataoffset]); //valuedata.Value = reserveData.MeasData.chData[dataoffset]; sampleData.ChannelDatas[channelIndex].DataValues = valuedata; break; } //次チャンネルのデータに移動 dataoffset += 3; } } }