public void ShowPLCPack(PLCDataPack plcdp) { switch (plcdp.ConnectionState) { case 0: COM_connect_stat_lbl.Text = StrNMess.COMDevConnectOK; break; default: COM_connect_stat_lbl.Text = StrNMess.COMDevConnectErr; break; } COM_pack_counter_lbl.Text = plcdp.CounterPack.ToString(); Current_val_lbl.Text = plcdp.CurrValue.ToString(); if (plcdp.CurrValue != 0) { PrintHistogram(plcdp); } TimeSpan RepInterval = DateTime.Now - ReportDateTime; if (RepInterval.TotalMinutes >= ProgSett.ProgSettFlds.RepInterval) { DataBuff.GetReport(ReportDateTime); ReportDateTime = DateTime.Now; for (int j = 0; j < Summ_arr.Max(); j++) { Summ_arr[j] = 0; } } }
private void ParsData(byte[] buff) { uint PackCount = (uint)(buff[9] * 256) + buff[10]; byte Devstate = buff[12]; if ((PackCount != CurrentDP.CounterPack) || (Devstate != CurrentDP.ConnectionState)) // Если данные регистров изменились, то новый пакет { CurrentDP.CounterPack = PackCount; CurrentDP.ConnectionState = Devstate; CurrentDP.CurrValue = buff[11]; PLCDataPack NewPLCdp = new PLCDataPack(); NewPLCdp.CopyFrom(CurrentDP); GMF.Invoke(ExportData, new Object[] { NewPLCdp }); } }
private void PrintHistogram(PLCDataPack plcdp) { for (int i = 0; i < ProgSett.ProgSettFlds.NHist; i++) { if ((plcdp.CurrValue >= X_arr[i]) && (plcdp.CurrValue < X_arr[i + 1])) { Summ_arr[i]++; } } PLC_chart.Series[SeriesName].Points.Clear(); int ValueCount = DataBuff.PLCPackBuff.Count; for (int i = 0; i < ProgSett.ProgSettFlds.NHist; i++) { PLC_chart.Series[SeriesName].Points.AddXY(X_arr[i], (Summ_arr[i] + 0.0) / ValueCount); } }
private void NewData(PLCDataPack dataPack) { DataBuff.PLCPackBuff.Add(dataPack); ShowPLCPack(dataPack); }
public void CopyFrom(PLCDataPack plcdp) { ConnectionState = plcdp.ConnectionState; CounterPack = plcdp.CounterPack; CurrValue = plcdp.CurrValue; }