예제 #1
0
        /// <summary>
        /// 监听测点数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void DataChangeHandler(object sender, HaiGrang.Package.OpcNetApiChs.DaNet.RefreshEventArguments e)
        {
            try
            {
                for (int i = 0; i < e.items.Length; ++i)
                {
                    int      hnd = e.items[i].OpcIDef.HandleClient;
                    object   val = e.items[i].OpcIRslt.DataValue;
                    string   qt  = myRefreshGroup.GetQualityString(e.items[i].OpcIRslt.Quality);
                    DateTime dt  = DateTime.FromFileTime(e.items[i].OpcIRslt.TimeStamp);

                    ItemDef item = myRefreshGroup.FindClientHandle(hnd);
                    string  name = item.OpcIDef.ItemID;

                    IDataPoint p = (from points in ItemPoints
                                    where points.Item_name == name
                                    select points).LastOrDefault();

                    ///将结果封装到一个POINT对象中,触发事件

                    p.val = val.ToString();
                    OnDataReceiveEvent(p);
                }
            }
            catch (Exception exc)
            {
            }
        }
예제 #2
0
        private void RefreshEvent(object sender, RefreshEventArguments e)
        {
            for (int i = 0; i < e.items.Length; i++)
            {
                ItemDef theItem     = e.items[i];
                string  itemName    = theItem.OpcIDef.ItemID;
                string  itemQuality = refreshGroup.GetQualityString(theItem.OpcIRslt.Quality);
                object  itemValue   = theItem.OpcIRslt.DataValue;

                double doubleValue;
                if (double.TryParse(itemValue.ToString(), out doubleValue))
                {
                    itemValue = Math.Round(doubleValue, 2);
                }

                DateTime ItemDateTime = theItem.OpcIRslt.TimeStampNet;
                Console.WriteLine("RefreshEvent ……");

                BusRefreshEventArgs ea = new BusRefreshEventArgs();
                ea.RefreshData     = itemValue;
                ea.RefreshDeviceId = itemName;
                BusRefreshEvent?.Invoke(this, ea);

                //// SendRealData?.Invoke(da, itemValue.ToString());
                //// 向数据中心发送数据
                //if (da != null)
                //{
                //    string[] deviceIdAndParamId = SendDataIDMap[itemName];
                //    if (string.IsNullOrEmpty(deviceIdAndParamId[0]) || string.IsNullOrEmpty(deviceIdAndParamId[1]) || string.IsNullOrEmpty(itemValue.ToString()))
                //    {
                //        string info = string.Format("[deviceId:{0}, paramId:{1}, paramValue:{2}]", deviceIdAndParamId[0], deviceIdAndParamId[1], itemValue.ToString());
                //        LogPrint.WriteLog("OPC", "发送数据为空: " + info, 1);
                //        continue;
                //    }

                //    lock (lockObj)
                //    {
                //        da.DataPackager.Device = deviceIdAndParamId[0];
                //        da.DataPackager.Add(Convert.ToInt32(deviceIdAndParamId[1]), itemValue.ToString());
                //        da.Send();
                //    }
                //}
            }
        }