开发发布者 NetLogic 和接口
开发 NetLogic 并将其与接口集成。
- 开发 NetLogic
- 在项目视图中,展开UI。
- 右键单击MainWindow (type),然后选择 。
- 将光标悬停在 NetLogic 上,选择 并输入PublisherLogic。
- 双击 NetLogic。外部代码编辑器将打开。
- 在代码编辑器中,使用以下代码替换现有代码:#region StandardUsing using System; using FTOptix.CoreBase; using FTOptix.HMIProject; using UAManagedCore; using OpcUa = UAManagedCore.OpcUa; using FTOptix.NetLogic; using FTOptix.UI; using FTOptix.OPCUAServer; #endregion using uPLibrary.Networking.M2Mqtt; using uPLibrary.Networking.M2Mqtt.Messages; public class PublisherLogic : BaseNetLogic { public override void Start() { var brokerIpAddressVariable = Project.Current.GetVariable("Model/BrokerIpAddress"); // Create a client connecting to the broker (default port is 1883) publishClient = new MqttClient(brokerIpAddressVariable.Value); // Connect to the broker publishClient.Connect("PublisherClient"); // Assign a callback to be executed when a message is published to the broker publishClient.MqttMsgPublished += PublishClientMqttMsgPublished; } public override void Stop() { publishClient.Disconnect(); publishClient.MqttMsgPublished -= PublishClientMqttMsgPublished; } private void PublishClientMqttMsgPublished(object sender, MqttMsgPublishedEventArgs e) { Log.Info("Message " + e.MessageId + " - published = " + e.IsPublished); } [ExportMethod] public void PublishMessage() { var variable1 = Project.Current.GetVariable("Model/Variable1"); variable1.Value = new Random().Next(0, 101); // Publish a message ushort msgId = publishClient.Publish("/my_topic", // topic System.Text.Encoding.UTF8.GetBytes(((int)variable1.Value).ToString()), // message body MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, // QoS level false); // retained } private MqttClient publishClient; }提醒事项: 上述代码将检索要从稍后创建的变量发布的值。
- 保存代码。
- 创建界面元素
- 在项目视图中,右键单击模型,然后选择 。如果需要,请将变量重命名为Variable1。将创建Variable1。可通过PublisherLogic脚本检索变量值。
- 通过执行以下操作添加发布按钮:
- 在项目视图中,右键单击MainWindow (type),然后选择 。
- 将光标悬停在按钮上,选择 并输入PublishButton。
- 在属性中,将文本设置为Publish
- 在事件中,选择MouseClick 事件旁边的 ,然后选择 。
提供反馈