Beispiel #1
0
        public static List <object> OPC_Read(List <string> ItemNames)
        {
            if (ItemNames == null || ItemNames.Count == 0)
            {
                return(null);
            }
            int           count   = ItemNames.Count;
            List <object> readRtn = new List <object>();//设置返回值数组

            using (var srv = new OPCXML_DataAccess())
            {
                ReadRequestItemList ItemLists = new ReadRequestItemList();
                ItemLists.Items = new ReadRequestItem[count];
                for (int i = 0; i < count; i++)
                {
                    ItemLists.Items[i]          = new ReadRequestItem();
                    ItemLists.Items[i].ItemPath = "";
                    ItemLists.Items[i].ItemName = ItemNames[i + 1];
                }
                RequestOptions opt = new RequestOptions();

                ReplyItemList ItemValues = new ReplyItemList();;
                OPCError[]    Errors;
                opt.ReturnItemTime = true;
                srv.Read(opt, ItemLists, out ItemValues, out Errors);
                foreach (var p in ItemValues.Items)
                {
                    readRtn.Add(p.Value);
                }
            }
            return(readRtn);
        }
Beispiel #2
0
        public bool OPC_WritePoint(string ItemName, object value)
        {
            try
            {
                using (OPCXML_DataAccess srv = new OPCXML_DataAccess())
                {
                    WriteRequestItemList ItemLists = new WriteRequestItemList();
                    ItemLists.Items                       = new ItemValue[1];
                    ItemLists.Items[0]                    = new ItemValue();
                    ItemLists.Items[0].ItemPath           = "";
                    ItemLists.Items[0].ItemName           = ItemName;
                    ItemLists.Items[0].Value              = value;
                    ItemLists.Items[0].TimestampSpecified = false;

                    RequestOptions opt = new RequestOptions();

                    ReplyItemList ItemValues = new ReplyItemList();
                    OPCError[]    Errors;
                    opt.ReturnItemTime = true;
                    ReplyBase replay = srv.Write(opt, ItemLists, true, out ItemValues, out Errors);
                    if (replay.ServerState == serverState.failed || replay.ServerState == serverState.commFault)
                    {
                        return(false);
                    }
                    else
                    {
                        return(true);
                    }
                }
            }
            catch (Exception)
            {
                return(false);
            }
        }
Beispiel #3
0
 public bool OPC_WriteSerial(List <string> ItemNames, List <object> values)
 {
     try
     {
         using (OPCXML_DataAccess srv = new OPCXML_DataAccess())
         {
             int count = ItemNames.Count;
             WriteRequestItemList ItemLists = new WriteRequestItemList();
             ItemLists.Items = new ItemValue[count];
             for (int i = 0; i < count; i++)
             {
                 ItemLists.Items[i]                    = new ItemValue();
                 ItemLists.Items[i].ItemPath           = "";
                 ItemLists.Items[i].ItemName           = ItemNames[i];
                 ItemLists.Items[i].Value              = values[i];
                 ItemLists.Items[i].TimestampSpecified = false;
             }
             RequestOptions opt        = new RequestOptions();
             ReplyItemList  ItemValues = new ReplyItemList();
             OPCError[]     Errors;
             opt.ReturnItemTime = true;
             ReplyBase replay = srv.Write(opt, ItemLists, true, out ItemValues, out Errors);
             if (replay.ServerState == serverState.failed || replay.ServerState == serverState.commFault)
             {
                 return(false);
             }
             else
             {
                 return(true);
             }
         }
     }
     catch (Exception)
     {
         return(false);
     }
 }