using System; using System.Collections.Generic; using System.Text; using ICPDAS.SmartQ; using System.Threading; using System.IO; namespace WCSPubExample { class Publish { static void Main(string[] args) { /* Initial Setting */ PSPARMS psparms = new PSPARMS(); try { long clienidMaxlength = MQTTDotNet.CLIENT_ID_MAXLENGTH; string idstr = "QP-8x1(2)_Pub"; if (idstr.Length < clienidMaxlength) { psparms.clientID = idstr; } else { throw new Exception("clientID is too long."); } psparms.pBroker = "192.168.100.58"; psparms.port = 1883; psparms.Topic = "MyTopic"; psparms.keepAliveTime = 32000; psparms.qos = 1; psparms.retain = 0; psparms.lwtTopic = "MyTopic"; psparms.lwtQos = 1; psparms.lwtRetain = 0; psparms.lwtData = "QP-8x1(2)_Pub terminated."; /* Output predefined info */ Console.WriteLine("QP-8x1(2) ID : " + psparms.clientID.ToString()); Console.WriteLine("QP-500 : " + psparms.pBroker); Console.WriteLine("Port : " + psparms.port); Console.WriteLine("Topic : " + psparms.Topic); Console.WriteLine("QoS : " + psparms.qos); Console.WriteLine("Retain : " + ((psparms.retain == 1) ? "true" : "false")); Console.WriteLine("LWTTopic : " + psparms.lwtTopic); Console.WriteLine("LWTQos : " + psparms.lwtQos); Console.WriteLine("LWTRetain : " + ((psparms.retain == 1) ? "true" : "false")); Console.WriteLine("LWTData : " + psparms.lwtData); Console.WriteLine("******************************************************"); /* Connect to QP-500 */ if (MQTTDotNet.ICPDAS_MQIsdpConnect(ref psparms) != 0) { Console.WriteLine("Failed to connnect to QP-500\n"); string s = Console.ReadLine(); return; } Console.WriteLine("Connected to QP-500 Successfully."); /* Initial and publish data*/ string usrstr; while (true) { Console.WriteLine("<< Enter data: >>"); usrstr = Console.ReadLine(); if (usrstr != null) { if (usrstr.Length <= 0) { MQTTDotNet.ICPDAS_MQIsdpPublish(ref psparms, "\0", 1); break; } MQTTDotNet.ICPDAS_MQIsdpPublish(ref psparms, usrstr, usrstr.Length); Console.WriteLine("The published message: TOPIC:{0},DATA:{1}",psparms.Topic,usrstr); } } /* Disconnect the protocol*/ MQTTDotNet.ICPDAS_MQIsdpDisconnect(ref psparms); Console.WriteLine("Disconnect to QP-500."); /* Terminate and Release memory */ MQTTDotNet.ICPDAS_MQIsdpTerminate(ref psparms); /* Wait for ending */ Console.Write("\nWait a second to exit...\n"); Thread.Sleep(1000); Console.ReadLine(); return; } catch (Exception ex) { MQTTDotNet.ICPDAS_MQIsdpTerminate(ref psparms); Console.WriteLine("**********************EXCEPTION MESSAGE*************************"); Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); Console.Write(ex.ToString()); string str = Console.ReadLine(); return; } } private static void ByteArrayToString(byte[] strbytes, ref StringBuilder strbuilder, Encoding strencoding) { strbuilder.Remove(0, strbuilder.Length); strbuilder.Append(strencoding.GetString(strbytes, 0, strbytes.Length)); } } }