Beispiel #1
0
        private void AnimateSeries(Steema.TeeChart.TChart chart, YBData ydata)
        {
            double newX, newY;

            chart.AutoRepaint = false;

            /// <summary>
            /// 绘画坐标点超过100个时将实时更新X时间坐标
            /// </summary>
            while (this.line1.Count > 100)
            {
                this.line1.Delete(0);
                line1.GetHorizAxis.SetMinMax(DateTime.Now.AddSeconds(-50), DateTime.Now.AddSeconds(60));
            }

            newX = DateTime.Now.ToOADate();
            if (ydata.flVot == null)
            {
                newY = 0;
            }
            else
            {
                newY = (double)ydata.flVot;
            }

            line1.Add(newX, newY);

            chart.AutoRepaint = true;
            chart.Refresh();
        }
Beispiel #2
0
 private void timer3_Tick(object sender, EventArgs e)
 {
     lock (m_lock)
     {
         YBData ydata = m_DataList.Where(m => m.ChannType == m_NowChannleType && m.ChannID == m_NowChannel).SingleOrDefault();
         AnimateSeries(tChart2, ydata);
     }
 }
Beispiel #3
0
        private void InsertDataToList(YBData ydata)
        {
            List <YBData> ChannelListData = m_DataList.Where(m => m.ChannID == ydata.ChannID && m.ChannType == ydata.ChannType).ToList();

            if (ChannelListData.Count >= 1)
            {
                m_DataList.Remove(ChannelListData.ElementAt(0));
            }
            lock (m_lock)
            {
                m_DataList.Add(ydata);
            }
        }
Beispiel #4
0
        public void WriteToMemFile(List <YBData> WriteList)
        {
            try {
                if (accessor != null)
                {
                    position = 0;
                    //accessor.CanWrite = true;
                    for (int i = 0; i < WriteList.Count; i++)
                    {
                        YBData fd = WriteList[i];

                        accessor.Write <YBData>(position, ref fd);
                        //accessor.Write(position,12);
                        position += Marshal.SizeOf(fd);
                    }

                    accessor.Flush();
                }
            }
            catch { }
        }
Beispiel #5
0
        public List <YBData> ReadFromMemFile()
        {
            List <YBData> returnList = new List <YBData>();

            try {
                if (accessor != null)
                {
                    YBData fd = new YBData();
                    PerSize = Marshal.SizeOf(fd);
                    long TCount = accessor.Capacity / PerSize;

                    for (long i = 0; i < TCount; i++)
                    {
                        YBData fdk = new YBData();
                        accessor.Read <YBData>(i * PerSize, out fdk);
                        returnList.Add(fdk);
                    }
                    // double rValue = 0;
                    // accessor.Read(4, out rValue);
                }
            }
            catch { }
            return(returnList);
        }
Beispiel #6
0
        private void ReadData(int EclipsTime)
        {
            try
            {
                List <FucntionChannelInfo> chList = GetStepChannelList();

                foreach (var info in chList)
                {
                    int PerRread1 = 5;
                    //foreach (var info_i in info.YBList)
                    {
                        int    Hz          = GetChannelHz(info.ChannelNumber, info.FunctionName, ref PerRread1);
                        string ChannelType = GetNowChannelType(info.FunctionName);
                        double flVolt      = 0;
                        double dfFreq      = 0;
                        double dfDuty      = 0;

                        if ((EclipsTime % Hz) == 0)
                        {
                            switch (ChannelType)
                            {
                            case "AI":
                                int      retRead = 0;
                                double[] bBuffer = new double[PerRread1];
                                BordDll.GetDataFromBord(info.ChannelNumber, bBuffer, PerRread1, ref retRead);

                                for (int i = 0; i < retRead; i++)
                                {
                                    YBData ydata = new YBData();
                                    ydata.ChannID    = info.ChannelNumber;
                                    ydata.ChannType  = ChannelType;
                                    ydata.DTTime     = EclipsTime;
                                    ydata.flVot      = bBuffer[i];
                                    ydata.YBName     = info.YBNumber.ToString();
                                    ydata.GNFunction = info.FunctionName;

                                    int returnValue = JudageAlarmData(EclipsTime, info.YBNumber, info.FunctionName, flVolt);
                                    ydata.DataInfo = returnValue;
                                    InsertDataToList(ydata);
                                    if (returnValue == 0)
                                    {
                                        lock (m_diskLock)
                                        {
                                            m_YBDataList.Add(ydata);
                                        }
                                    }
                                    else
                                    {
                                        lock (m_AlarmDiskLock)
                                        {
                                            m_AlarmList.Add(ydata);
                                        }
                                        lock (m_AlarmShowLock)
                                        {
                                            m_AlarmListShow.Add(ydata);
                                        }
                                    }
                                }

                                break;

                            case "CNT":
                                BordDll.GetCNTData((uint)info.ChannelNumber, ref flVolt, ref dfDuty);
                                YBData ydataCNT = new YBData();
                                ydataCNT.ChannID    = info.ChannelNumber;
                                ydataCNT.ChannType  = ChannelType;
                                ydataCNT.DTTime     = EclipsTime;
                                ydataCNT.flVot      = flVolt;
                                ydataCNT.YBName     = info.YBNumber.ToString();
                                ydataCNT.GNFunction = info.FunctionName;

                                int returnValueCNT = JudageAlarmData(EclipsTime, info.YBNumber, info.FunctionName, flVolt);
                                ydataCNT.DataInfo = returnValueCNT;
                                InsertDataToList(ydataCNT);
                                if (returnValueCNT == 0)
                                {
                                    lock (m_diskLock)
                                    {
                                        m_YBDataList.Add(ydataCNT);
                                    }
                                }
                                else
                                {
                                    lock (m_AlarmDiskLock)
                                    {
                                        m_AlarmList.Add(ydataCNT);
                                    }
                                    lock (m_AlarmShowLock)
                                    {
                                        m_AlarmListShow.Add(ydataCNT);
                                    }
                                }
                                break;
                            }
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
            }
        }