public void AsynchReadListenerForPVL(object sender, OPCDA.NET.RefreshEventArguments arg)
        {
            OPCDA.NET.OPCItemState res = arg.items[0].OpcIRslt;

            try
            {
                if (arg.Reason == OPCDA.NET.RefreshEventReason.DataChanged)
                {            // data changes
                    if (HRESULTS.Succeeded(res.Error))
                    {
                        OPCDA.NET.ItemDef opcItemDef = (OPCDA.NET.ItemDef)arg.items.GetValue(0);

                        string[] iterateItemName = opcItemDef.OpcIDef.ItemID.Split(new Char[] { '.' });

                        if (iterateItemName.Length == 3)
                        {
                            // string machineCode = iterateItemName[1].ToString();
                            string command = iterateItemName[2].ToString();
                            if (command.Equals(OpcTags.PVL_Deck_Pallet_Present))
                            {
                                bool resValue = bool.Parse(res.DataValue.ToString());
                                pallet.Dispatcher.BeginInvoke(new InvokeDelegate(SetPalletPresentStatus), resValue);
                            }
                        }
                    }
                }
            }
            catch (Exception errMsg)
            {
                Console.WriteLine(errMsg.Message);
            }
        }
 public void AsynchReadListenerForCM(object sender, OPCDA.NET.RefreshEventArguments arg)
 {
 }