private bool m_IsOpcStarted = false; // opc服务是否启动 private void OpcUaServerStart() { if (!m_IsOpcStarted) { m_IsOpcStarted = true; opcUaServer = new OpcUaServer(Util.SharpSettings.OpcUaStringUrl);//"opc.tcp://localhost:34561/DataTransferServer" } }
public void Stop() { using (OpcUaServer _server = server) { // Stop status thread server = null; status.Wait(); // Stop server and dispose _server.Stop(); exitCode = ExitCode.Ok; } }
private void Form1_Load(object sender, EventArgs e) { // 配置opc ua的日志输出 Opc.Ua.Utils.SetTraceLog(Application.StartupPath + @"\Logs\Opc.Ua.Huibo.txt", true); Opc.Ua.Utils.SetTraceMask(515); // http://117.48.203.204:62547/DataAccessServer // opc.tcp://localhost:62547/DataAccessServer server = new OpcUaServer("opc.tcp://localhost:62547/DataAccessServer", new DataAccessServer());//117.48.203.204 StandardServer server2 = server.AppInstance.Server as StandardServer; dataAccessServer = server.AppInstance.Server as DataAccessServer; serverDiagnosticsCtrl1.Initialize(server2, server.AppConfig); }
private void BtnConnect_Click(object sender, RoutedEventArgs e) { Button btn = sender as Button; if (btn.Content.ToString() == "连接") { if (_SelectedEndpointDes == null) { Msg("请选择要连接的终结点"); return; } if (sender == BtnConnect) { if (_OpcClient.Connect(_OpcServer)) { Msg("连接成功!"); btn.Content = "断开连接"; } else { Msg("连接失败!"); } } else { OpcUaServer uaServer = _OpcServer as OpcUaServer; if (RbNoneLogin.IsChecked == true) { //匿名登录 uaServer.UserAuth = false; } else { //使用用户名密码登录 uaServer.UserAuth = true; uaServer.UserName = TbUser.Text.Trim(); uaServer.Password = TbPass.Password; } if (_OpcClient.Connect(uaServer)) { btn.Content = "断开连接"; Msg("连接成功!"); } else { Msg("连接失败!"); } } } else if (btn.Content.ToString() == "断开连接") { _OpcClient.Disconnect(); btn.Content = "连接"; ClearUi(); } else { Msg("未知情况"); } }
static void Main(string[] args) { #region PortTest var port = new ComponentPort(); var feature = new MechanicalElectricalFeature(); port.Mechanical = new Mechanical(); //port.Mechanical.Feature.Add(feature); #endregion #region Device ((SkillParameter <CartesianCoSy>)robot.Skills.GetSkill <SkillMoveBase>().GetParameter("TargetPose", Direction.Input)).Value = new CartesianCoSy() { Unit = "mm" }; IDevice retainer = new DeviceBase(); IDeviceCompletement retainerCompletement = new RetainingCylinder._384252240Completement(); retainer = retainerCompletement.CompleteDeviceDriver(ref retainer); retainer.Identification.SerialNumber = "1"; retainer.PresentationData.BrowseName = "Retainer"; IDevice robot = new DeviceBase(); IDeviceCompletement robotCompletement = new Mh5FCompletement(); robot = robotCompletement.CompleteDeviceDriver(ref robot); robot.Identification.SerialNumber = "R145455863"; #endregion #region opc OpcUaServer server = new OpcUaServer(); OpcUaStartupParameters opcUaParams = new OpcUaStartupParameters() { RootNodeName = robot.PresentationData.BrowseName, }; OpcUaServer server2 = new OpcUaServer(); OpcUaStartupParameters opcUaParams2 = new OpcUaStartupParameters() { RootNodeName = retainer.PresentationData.BrowseName, IgnoreNullPointer = false }; var physDescr = new PhysicalDescription() { Pose = new CartesianCoSy() }; ((SkillParameter <IComponent>)retainer.Skills.FirstOrDefault().Parameters.First(x => x.Name == "Material" && x.Direction == Direction.Input)).Value = new Akomi.InformationModel.Product.ProductBase() { PhysicalDescription = physDescr }; ((SkillParameter <IComponent>)robot.Skills.FirstOrDefault().Parameters.First(x => x.Name == "Material" && x.Direction == Direction.Input)).Value = new Akomi.InformationModel.Product.ProductBase() { PhysicalDescription = physDescr }; //opcUaParams.CurrentDepth = 0; //opcUaParams.MaximumDepth = 3000; // It's more comfortable to use only OpcUaStartupParameters for server configuration and try to add missing options in it on demand //opcUaParams.TryUseAppConfigFile = false; // If this is true "AkomiServer.dll.config" properties will be used for server specifications //opcUaParams.UserCanSearchForConfigurationFile = false; opcUaParams.Ports = new[] { 48060 }; opcUaParams2.Ports = new[] { 48061 }; #endregion //opcUaParams.InheritedObjectSimplification = new List<Type>() { typeof(IDevice) }; server.StartServer(robot, opcUaParams); server2.StartServer(retainer, opcUaParams2); Console.WriteLine("press any Key to exit ..."); Console.ReadKey(); }