/// <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) { } }
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(); // } //} } }