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(); }
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); } }
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); } }
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 { } }
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); }
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) { } }