示例#1
0
        /// <summary>
        /// AddRealData
        /// </summary>
        /// <param name="realdata">NowRegistData</param>
        public static void AddRealData(SampleData realdata)
        {
            lock (lockobj_samples)
            {
                //�ŏI��M���Ԃ�X�V
                LastDataReceiveTime = realdata.SampleTime;

                //���[�h1�̏ꍇ
                if (RM_3000.Sequences.TestSequence.GetInstance().Mode == Sequences.TestSequence.ModeType.Mode1)
                {
                    //���[�h�P�̏���ɓ����Ă��邩�H
                    bMode1_Now_Record = Judge_Mode1_Condition(realdata);

                    //���ϑ���̏ꍇ
                    if (SystemSetting.MeasureSetting.Mode1_MeasCondition.MeasConditionType == Mode1_MeasCondition.EnumMeasConditionType.MEAS_AVG_SHOTS)
                    {
                        // �ۑ��^�C�~���O = ���ω��Z�����
                        if (bMode1_Now_Record)
                        {
                            for (int shotindex = 0 ; shotindex < TmpAverage_Samples.Count ; shotindex++)
                            {
                                SampleData tmp = TmpAverage_Samples[shotindex];

                                for (int i = 0; i < tmp.ChannelDatas.Length; i++)
                                {
                                    if (realdata.ChannelDatas[i] == null) continue;

                                    if (realdata.ChannelDatas[i].DataValues is Value_Standard)
                                    {
                                        //����͂܂���������ς��Ă���
                                        if (shotindex == 0)
                                        {
                                            ((Value_Standard)realdata.ChannelDatas[i].DataValues).Value /= TmpAverage_Samples.Count + 1;
                                        }

                                        ((Value_Standard)realdata.ChannelDatas[i].DataValues).Value += ((Value_Standard)tmp.ChannelDatas[i].DataValues).Value / (TmpAverage_Samples.Count + 1);

                                        ////�S�đ������񂾂Ȃ�A���ω��Z
                                        //if (shotindex + 1 == TmpAverage_Samples.Count)
                                        //    ((Value_Standard)realdata.ChannelDatas[i].DataValues).Value /= TmpAverage_Samples.Count + 1;
                                    }
                                    else if (realdata.ChannelDatas[i].DataValues is Value_MaxMin)
                                    {
                                        //����͂܂���������ς��Ă���
                                        if (shotindex == 0)
                                        {
                                            ((Value_MaxMin)realdata.ChannelDatas[i].DataValues).MaxValue /= TmpAverage_Samples.Count + 1;
                                            ((Value_MaxMin)realdata.ChannelDatas[i].DataValues).MinValue /= TmpAverage_Samples.Count + 1;
                                        }

                                        ((Value_MaxMin)realdata.ChannelDatas[i].DataValues).MaxValue += ((Value_MaxMin)tmp.ChannelDatas[i].DataValues).MaxValue / (TmpAverage_Samples.Count + 1);
                                        ((Value_MaxMin)realdata.ChannelDatas[i].DataValues).MinValue += ((Value_MaxMin)tmp.ChannelDatas[i].DataValues).MinValue / (TmpAverage_Samples.Count + 1);

                                        ////�S�đ������񂾂Ȃ�A���ω��Z
                                        //if (shotindex + 1 == TmpAverage_Samples.Count)
                                        //{
                                        //    ((Value_MaxMin)realdata.ChannelDatas[i].DataValues).MaxValue /= TmpAverage_Samples.Count + 1;
                                        //    ((Value_MaxMin)realdata.ChannelDatas[i].DataValues).MinValue /= TmpAverage_Samples.Count + 1;
                                        //}
                                    }
                                }
                            }

                            //���ߍ��ݗp��N���A
                            TmpAverage_Samples.Clear();
                            GC.Collect();
                        }
                        // �ۑ��^�C�~���O�ł͂Ȃ�
                        else
                        {
                            //���Ϗ����p�ɗ��ߍ���
                            TmpAverage_Samples.Add(realdata);
                        }
                    }
                }

                //�ۑ��w�����肩�AMode1�Ȃ�΃��[�h�P����OK���𔻕�
                if (bRecord && (bMode1_Now_Record || RM_3000.Sequences.TestSequence.GetInstance().Mode != Sequences.TestSequence.ModeType.Mode1))
                {
                    //�e�X�g�f�[�^�Ƃ��ċL��
                    RealMeasureData.SampleDatas.Add(realdata);
                }

                //���[�h1�ŕۑ��^�C�~���O�ł͂Ȃ����́A�`��ɂ���߂Ȃ��B
                if (bCond_MeasurePause)
                    return;

                SampleData realdata_sample = (SampleData)realdata.Clone();

                //���[�h�P����擾�Ȃ�΃I�t�Z�b�g�p���I�[����ݒ�
                if (SystemSetting.MeasureSetting.Mode == (int)ModeType.MODE1 && receiveCount == 0)
                {
                    //�`�����l�������[�v
                    for (int i = 1; i < realdata_sample.ChannelDatas.Length; i++)
                    {
                        if (realdata_sample.ChannelDatas[i] == null) continue;
                        if (realdata_sample.ChannelDatas[i].DataValues == null) continue;

                        //�`�����l����B��R�Ȃ��
                        if (SystemSetting.ChannelsSetting.ChannelSettingList[i - 1].ChKind == ChannelKindType.B
                            || SystemSetting.ChannelsSetting.ChannelSettingList[i - 1].ChKind == ChannelKindType.R)
                        {
                            //TagNo1�Ń`�F�b�N
                            if (SystemSetting.RelationSetting.RelationList[i].TagNo_1 != -1 &&
                                RealTimeData.DataTagSetting.GetTag(SystemSetting.RelationSetting.RelationList[i].TagNo_1).StaticZero == 0)
                            {
                                //�m�[�}���f�[�^
                                if (realdata_sample.ChannelDatas[i].DataValues is Value_Standard)
                                {
                                    RealTimeData.DataTagSetting.GetTag(SystemSetting.RelationSetting.RelationList[i].TagNo_1).StaticZero =
                                        ((Value_Standard)realdata_sample.ChannelDatas[i].DataValues).Value;
                                }
                                //MaxMin�f�[�^
                                else
                                {
                                    RealTimeData.DataTagSetting.GetTag(SystemSetting.RelationSetting.RelationList[i].TagNo_1).StaticZero =
                                        (((Value_MaxMin)realdata_sample.ChannelDatas[i].DataValues).MinValue + ((Value_MaxMin)realdata_sample.ChannelDatas[i].DataValues).MaxValue) / 2;
                                }
                            }

                            //TagNo2 �Ń`�F�b�N
                            if (SystemSetting.RelationSetting.RelationList[i].TagNo_2 != -1 &&
                                RealTimeData.DataTagSetting.GetTag(SystemSetting.RelationSetting.RelationList[i].TagNo_2).StaticZero == 0)
                            {
                                //�m�[�}���Ȃ�Ύg��Ȃ�
                                if (realdata_sample.ChannelDatas[i].DataValues is Value_Standard)
                                {
                                }
                                //MaxMin�Ńf�[�^��g��
                                else
                                {
                                    RealTimeData.DataTagSetting.GetTag(SystemSetting.RelationSetting.RelationList[i].TagNo_2).StaticZero =
                                        (((Value_MaxMin)realdata_sample.ChannelDatas[i].DataValues).MinValue + ((Value_MaxMin)realdata_sample.ChannelDatas[i].DataValues).MaxValue) / 2;
                                }
                            }
                        }
                    }
                }

                Samples.Add(realdata_sample);
                receiveCount++;

            }
        }