public ServiceForEasySocket(int runInterval)
 {
     RunInterval = runInterval;
     EasyTcpClient.Instance.TimeOut = TimeSpan.FromSeconds(30);
     //连接时采用同步方式,等待服务端返回结果,会引起阻塞,(异步方式无法判断连接状态,不采用)
     EasyTcpClient.Instance.Async = false;
     //是否开启断线重连,(在网络异常的情况,将尝试重连),
     //客户端使用时不应开启,在使用OPC或通讯中间件时为了保证通讯正常,可开启
     EasyTcpClient.Instance.ReconnectEnable = true;
     //采用序列化方式
     EasyTcpClient.Instance.Serializer = new ProtoBufSerializer();
     //委托绑定UI委托,在调用时可通过判断调用是否在同一线程内
     //不在同一线程可使用控件的Invoke方法调用MsgHandle
     MsgHandle = msg;
     EasyTcpClient.Instance.MsgHandle = msgHandle;
     //顷绑定当前程序集
     EasyTcpClient.Instance.BindService(Assembly.GetExecutingAssembly());
     //不在同一线程可使用控件的Invoke方法调用CloseHandle
     if (EasyTcpClient.Instance.Connect("127.0.0.1", 5555))
     {
         //执行注册效验
         var result = ClientProxy.Verification("opc");
     }
     else
     {
         //MessageBox.Show("服务器无法连接");
     }
 }
예제 #2
0
 /// <summary>
 /// 钩号变化后触发
 /// </summary>
 /// <param name="tag"></param>
 private void PFTagChangedExecute(Tag tag)
 {
     ClientProxy.TagEventChange(new TagSimple {
         TagName = tag.TagName, TagValue = tag.Value.ToString(), TagType = tag.DataType
     });
     Console.WriteLine(string.Format("TagName={0}, Value={1}, DataType={2}", tag.TagName, tag.Value, tag.DataTypeName));
     Log4Ex.LogHelper.Debug(string.Format("TagName={0}, Value={1}, DataType={2}", tag.TagName, tag.Value, tag.DataTypeName));
 }
예제 #3
0
 /// <summary>
 /// 连接EasySocket服务器
 /// </summary>
 public override void Connect()
 {
     //不在同一线程可使用控件的Invoke方法调用CloseHandle
     if (EasyTcpClient.Instance.Connect("172.16.6.30", 5555))
     //if (EasyTcpClient.Instance.Connect("172.22.197.45", 5555))
     {
         //执行注册效验
         var result = ClientProxy.Verification("opc");
         MsgHandle(serviceName + $">EasySocket>{EasyTcpClient.Instance.Ip}已连接");
     }
     else
     {
         MsgHandle(serviceName + ">服务器无法连接");
     }
 }
예제 #4
0
        /// <summary>
        /// 周期执行
        /// </summary>
        public override void InvokeService()
        {
            //opcClient["GroupData"]
            //  .GetTags()
            //  .ToList();
            var serverTime = ClientProxy.TimeSync().Result;

            if (SysTimeSetting.SetLocalTimeByStr(serverTime.ToString("yyyyMMddHHmmss")))
            {
                Log4Ex.LogHelper.Debug(string.Format("周期获取服务器时间={0}, 执行成功", serverTime.ToString("yyyyMMddHHmmss")));
            }
            else
            {
                Log4Ex.LogHelper.Debug(string.Format("周期获取服务器时间={0}, 执行失败,尝试用管理员启动程序", serverTime.ToString("yyyyMMddHHmmss")));
            }
        }
예제 #5
0
 public ServiceForEasySocket(IOpcClient opcClient) : base(3600000)
 {
     this.opcClient = opcClient;
     EasyTcpClient.Instance.Extra.Tag.Set("opc", opcClient);
     EasyTcpClient.Instance.TimeOut = TimeSpan.FromSeconds(30);
     //连接时采用同步方式,等待服务端返回结果,会引起阻塞,(异步方式无法判断连接状态,不采用)
     EasyTcpClient.Instance.Async = false;
     //是否开启断线重连,(在网络异常的情况,将尝试重连),
     //客户端使用时不应开启,在使用OPC或通讯中间件时为了保证通讯正常,可开启
     EasyTcpClient.Instance.ReconnectEnable = true;
     //采用序列化方式
     EasyTcpClient.Instance.Serializer = new ProtoBufSerializer();
     //委托绑定UI委托,在调用时可通过判断调用是否在同一线程内
     //不在同一线程可使用控件的Invoke方法调用MsgHandle
     EasyTcpClient.Instance.MsgHandle = Msg;
     //重连后执行注册效验
     EasyTcpClient.Instance.ReconnectCompleteHandle = () => { ClientProxy.Verification("opc"); };
     //顷绑定当前程序集
     EasyTcpClient.Instance.BindService(Assembly.GetExecutingAssembly());
     PFClientInit();
 }
예제 #6
0
 /// <summary>
 /// tag点发生变化后触发
 /// </summary>
 /// <param name="tag"></param>
 public override void TagChangedExecute(Tag tag)
 {
     ClientProxy.TagEventChange(new TagSimple {
         TagName = tag.TagName, TagValue = tag.Value.ToString(), TagType = tag.DataType
     });
 }