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("服务器无法连接"); } }
/// <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)); }
/// <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 + ">服务器无法连接"); } }
/// <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"))); } }
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(); }
/// <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 }); }