예제 #1
0
        // 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;
            }
        }
예제 #2
0
        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);
            }
        }