// this was added public void StoreEvent(string timestamp, string deviceName, string dataItemName, string value, string workPieceId, string partId, string alarm_code, string alarm_severity, string alarm_nativecode, string alarm_state) { try { agent.StoreEvent(timestamp, deviceName, dataItemName, value, workPieceId, partId, alarm_code, alarm_severity, alarm_nativecode, alarm_state); } catch (Exception e) { LogMessage("StoreEvent Exception: " + e.Message, LogLevel.INFORMATION); // If its bad MTConnect device data or similar break gracefully int hr = Marshal.GetHRForException(e); if (hr == AgentException.E_INVALIDARG || hr == AgentException.E_BADCATEGORY || hr == AgentException.E_BADALARMDATA) { return; } throw e; } }
public void Cycle() { oStopWatch.Reset(); oStopWatch.Start(); try { while (true) { Thread.Sleep(nSimCycleTime); if ((index + 1) > csvDataTable.Rows.Count) { index = 0; } index++; DateTime t1 = Convert.ToDateTime(csvDataTable.Rows[index][0]); DateTime t2 = Convert.ToDateTime(csvDataTable.Rows[index + 1][0]); TimeSpan ts = t2 - t1; if ((ts.TotalMilliseconds / dTimeDivisor) > oStopWatch.ElapsedMilliseconds) { continue; } System.Diagnostics.Debug.Print(DataTableUtils.DataRow2CSV(csvDataTable.Rows[index], ",", false) + "\n"); oStopWatch.Reset(); oStopWatch.Start(); String nowtimestamp = System.DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffffff", System.Globalization.CultureInfo.InvariantCulture); // and see if column name mapping exists //store sample or event - must lookup type in devices.xml for (int i = 1; i < csvDataTable.Columns.Count; i++) { string colname = Convert.ToString(csvDataTable.Columns[i]); if (!this.dataitems.ContainsKey(colname)) { continue; } if (dataitems[colname] == "Sample") { agent.StoreSample(nowtimestamp, deviceId, colname, Convert.ToString(csvDataTable.Rows[index][i]), "", ""); } else if (dataitems[colname] == "Event") { agent.StoreEvent(nowtimestamp, deviceId, colname, Convert.ToString(csvDataTable.Rows[index][i]), "", "", null, null, null, null); } else if (dataitems[colname] == "Alarm") { string[] items = Convert.ToString(csvDataTable.Rows[index][i]).Split(':'); // Problem need severity and state with alarm... if (items.Count() < 3) { continue; } agent.StoreEvent(nowtimestamp, deviceId, colname, items[0], "", "", "", items[1], "", items[2]); } } } } catch (Exception e) { string msg = "Exception: " + e.Message + "\n"; Logger.LogMessage(msg, 3); } }