示例#1
0
        private void processInputTag(object inputTagID)
        {
            string tagID = (string)inputTagID;

            while (true)
            {
                //Iscitaj vrednost sa uredjaja
                int scannedVal = 0;

                if (!tags.ContainsKey(tagID))
                {
                    return;
                }

                //Proveri koji drajver je u pitanju
                if (tags[tagID].Driver is RealTimeDriver)
                {
                    lock (rt_driver)
                    {
                        scannedVal = rt_driver.readValue(tags[tagID].IOAddress);
                    }
                }
                else
                {
                    //ako je simulacioni moramo proveriti koje skeniranje je ukljuceno
                    if (((TagInput)tags[tagID]).Read == readType.AUTO)
                    {
                        lock (sim_driver)
                        {
                            scannedVal = sim_driver.readValue(tags[tagID].IOAddress);
                        }
                    }
                    else
                    {
                        lock (sim_driver)
                        {
                            scannedVal = sim_driver.manualRead(tags[tagID].IOAddress); //scan manual value
                            sim_driver.manualWrite(tags[tagID].IOAddress, 0);          //put back default value
                        }
                    }
                }


                //provera za alarm da li se dogodio
                foreach (Alarm alarm in ((TagInput)tags[tagID]).Alarms)
                {
                    if (scannedVal < alarm.LowLimit || scannedVal > alarm.HightLimit)
                    {
                        if (alarmDisplayProxy != null)
                        {
                            DateTime currentTime = DateTime.Now;
                            alarm.AlarmTime = currentTime;

                            //ispisi na konzolu ako je ukljuceno skeniranje
                            if (((TagInput)tags[tagID]).Scan == scanType.ON)
                            {
                                alarmDisplayProxy.logAlarmToConsole(alarm, scannedVal);
                            }

                            lock (alarmIO)
                            {
                                alarmIO.writeAlarmToFile(alarm);
                            }
                        }
                    }
                }

                //Posalji podatke na trending

                if (trendingProxy != null)
                {
                    trendingProxy.addNewValue(tagID, scannedVal);
                }

                Thread.Sleep(((TagInput)tags[tagID]).ScanTime * 1000);
            }
        }