using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WindowsFormsApplication1.Properties;
namespace WindowsFormsApplication1
{
public class OPCHelper
{
///
/// 读取指定地址的OPC的值
///
/// 需要读取的地址列表
/// 输入地址对应的值
public static List OPCRead(List ItemNames)
{
//输入地址为空时输出空
//if (ItemNames == null || ItemNames.Count == 0)
//{
// return null;
//}
//int count = ItemNames.Count;
//List readRtn = new List();//设置返回值数组
//try
//{
// 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];
// }
// 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);
// }
// }
//}
//catch (Exception ex)
//{
// LogTextHelper.WriteLine(Resources.LogDir, "在类{0}中执行方法{1}时出现异常:{2}", "FLTKOPCHelper", "OPCRead", ex.Message);
//}
//return readRtn;
return new List();
}
///
/// 单值写入OPCServer
///
/// 地址块
/// 值
/// 是否写入成功
public static bool OPCWritePoint(string ItemName, object value)
{
//try
//{
// using (var 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);
// return !serverState.failed.Equals(replay.ServerState) && !serverState.commFault.Equals(replay.ServerState);
// }
//}
//catch (Exception ex)
//{
// LogTextHelper.WriteLine(Resources.LogDir, "在类{0}中执行方法{1}时出现异常:{2}", "FLTKOPCHelper", "OPCWritePoint", ex.Message);
// return false;
//}
return true;
}
///
/// 写入准入信息
///
///
///
public static bool SSJLicences(int ssj_Number)
{
//string LOCALSERVER = "S7:[S7 connection_1]";
//string StackerWrite = "DB540,";
//string WRITE_SSJ_1_Allow = LOCALSERVER + StackerWrite + "B17";//1号输送机入库许可
//string WRITE_SSJ_2_Allow = LOCALSERVER + StackerWrite + "B18";//2号输送机入库许可
//string WRITE_SSJ_3_Allow = LOCALSERVER + StackerWrite + "B19";//3号输送机入库许可
//if (ssj_Number == 1)
//{
// return OPCWritePoint(WRITE_SSJ_1_Allow, 1);
//}
//else if (ssj_Number == 2)
//{
// return OPCWritePoint(WRITE_SSJ_2_Allow, 1);
//}
//else
//{
// return OPCWritePoint(WRITE_SSJ_3_Allow, 1);
//}
return true;
}
///
/// 集合值写入OPC服务器
///
/// 地址块集合
/// 地址块对应的值
/// 是否写入成功
public static bool OPCWriteSerial(List ItemNames, List values)
{
//try
//{
// using (var 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);
// return !serverState.failed.Equals(replay.ServerState) && !serverState.commFault.Equals(replay.ServerState);
// }
//}
//catch (Exception ex)
//{
// LogTextHelper.WriteLine(Resources.LogDir, "在类{0}中执行方法{1}时出现异常:{2}", "FLTKOPCHelper", "OPCWriteSerial", ex.Message);
// return false;
//}
return true;
}
}
}