public override void OnCurDataProcessed(int[] cnlNums, SrezTableLight.Srez curSrez) { // the method executes when new current data have been processed by the server, // the channel numbers are sorted in ascending order // метод выполняется после обработки новых текущих данных сервером, // номера каналов упорядочены по возрастанию const int MyCnlNum = 1; const int MyKpNum = 1; const int MyCmdNum = 1; const double MyCmdVal = 1.0; // send a command if the value of MyCnlNum channel greater than 200 WriteToLog("Process current data by the module " + Name, Log.ActTypes.Action); SrezTableLight.CnlData cnlData; if (curSrez.GetCnlData(MyCnlNum, out cnlData) && cnlData.Val > 200) { WriteToLog("Send command by the module " + Name, Log.ActTypes.Action); Command cmd = new Command(BaseValues.CmdTypes.Standard); cmd.KPNum = MyKpNum; cmd.CmdNum = MyCmdNum; cmd.CmdVal = MyCmdVal; PassCommand(cmd); } }
/// <summary> /// Экспортировать срез /// </summary> private void ExportSrez(DbCommand cmd, SrezTableLight.Srez srez) { DataSource.SetCmdParam(cmd, "dateTime", srez.DateTime); foreach (int cnlNum in srez.CnlNums) { SrezTableLight.CnlData cnlData; if (srez.GetCnlData(cnlNum, out cnlData)) { DataSource.SetCmdParam(cmd, "cnlNum", cnlNum); DataSource.SetCmdParam(cmd, "val", cnlData.Val); DataSource.SetCmdParam(cmd, "stat", cnlData.Stat); cmd.ExecuteNonQuery(); } } }
/// <summary> /// Создать срез с заданными номерами каналов, используя данные из исходного среза /// </summary> private SrezTableLight.Srez CreateSrez(DateTime srezDT, int[] cnlNums, SrezTableLight.Srez sourceSrez) { int cnlCnt = cnlNums.Length; SrezTableLight.Srez srez = new SrezTableLight.Srez(srezDT, cnlCnt); for (int i = 0; i < cnlCnt; i++) { int cnlNum = cnlNums[i]; SrezTableLight.CnlData cnlData; sourceSrez.GetCnlData(cnlNum, out cnlData); srez.CnlNums[i] = cnlNum; srez.CnlData[i] = cnlData; } return srez; }