Commit 2de43ab6 by xjp0422

no message

parent 4d59c402
No preview for this file type
...@@ -38,10 +38,15 @@ namespace Mqtt_AGI ...@@ -38,10 +38,15 @@ namespace Mqtt_AGI
} }
//由level_uid生成level_system_uid 和 //由level_uid生成level_system_uid 和
public static string SerilizeString(string level_uid, systemID system) public static string SerilizeTopic(string level_uid, systemID system)
{ {
return level_uid +"/" +((int)system).ToString(); return level_uid +"/" +((int)system).ToString();
//return Convert.ToString((Convert.ToUInt32(level_uid,2) | (((uint)system) << 16) ), 2).PadLeft(32, '0'); //return Convert.ToString((Convert.ToUInt32(level_uid,2) | (((uint)system) << 16) ), 2).PadLeft(32, '0');
} }
public static string SerilizeUid(string level_uid, systemID system)
{
//return level_uid + "/" + ((int)system).ToString();
return Convert.ToString((Convert.ToUInt32(level_uid,2) | (((uint)system) << 16) ), 2).PadLeft(32, '0');
}
} }
} }
...@@ -45,10 +45,10 @@ namespace Mqtt_AGI ...@@ -45,10 +45,10 @@ namespace Mqtt_AGI
//static string clientId = Guid.NewGuid().ToString(); //static string clientId = Guid.NewGuid().ToString();
static string ip, port; static string ip, port;
static int count = 0; static int count = 0;
static string LevelUid = getLevelUid(); static string LevelUid, LevelTopic;
static string clientId = SerializeUid.SerilizeString(LevelUid, systemID.AGI); static string clientId;
//获取配置信息中的站点等级信息 生成LevelUid //获取配置信息中的站点等级信息 生成LevelUid
static string getLevelUid() static void Level_Topic_Uid_init()
{ {
string IniPath = System.Windows.Forms.Application.StartupPath + "\\config.ini"; string IniPath = System.Windows.Forms.Application.StartupPath + "\\config.ini";
StringBuilder level1 = new StringBuilder(16); StringBuilder level1 = new StringBuilder(16);
...@@ -58,8 +58,10 @@ namespace Mqtt_AGI ...@@ -58,8 +58,10 @@ namespace Mqtt_AGI
GetPrivateProfileString("role", "level2", "0", level2, 16, IniPath); GetPrivateProfileString("role", "level2", "0", level2, 16, IniPath);
GetPrivateProfileString("role", "level3", "0", level3, 16, IniPath); GetPrivateProfileString("role", "level3", "0", level3, 16, IniPath);
//Console.WriteLine(SerializeUid.SerilizeString(Convert.ToUInt32(level1.ToString()), Convert.ToUInt32(level2.ToString()), Convert.ToUInt32(level3.ToString()))); //Console.WriteLine(SerializeUid.SerilizeString(Convert.ToUInt32(level1.ToString()), Convert.ToUInt32(level2.ToString()), Convert.ToUInt32(level3.ToString())));
return "/"+Convert.ToUInt32(level1.ToString())+"/" +Convert.ToUInt32(level2.ToString())+ "/"+Convert.ToUInt32(level3.ToString()); LevelTopic= "/" +Convert.ToUInt32(level1.ToString())+"/" +Convert.ToUInt32(level2.ToString())+ "/"+Convert.ToUInt32(level3.ToString());
LevelUid = SerializeUid.SerilizeString(Convert.ToUInt32(level1.ToString()) , Convert.ToUInt32(level2.ToString()) , Convert.ToUInt32(level3.ToString()));
clientId = SerializeUid.SerilizeUid(LevelUid, systemID.AGI);
Console.WriteLine("MqttclientId:" + clientId);
//Console.WriteLine(Convert.ToString(subTopic,2).PadLeft(32,'0'));//32位 前面补0 //Console.WriteLine(Convert.ToString(subTopic,2).PadLeft(32,'0'));//32位 前面补0
} }
...@@ -140,8 +142,8 @@ namespace Mqtt_AGI ...@@ -140,8 +142,8 @@ namespace Mqtt_AGI
{ {
client.Connect(clientId, "", "", false, 30); client.Connect(clientId, "", "", false, 30);
//level1/level2/level3/system //level1/level2/level3/system
Console.WriteLine("Subscribe:" + SerializeUid.SerilizeString(LevelUid, systemID.AGI)); Console.WriteLine("Subscribe:" + SerializeUid.SerilizeTopic(LevelTopic, systemID.AGI));
client.Subscribe(new string[] { SerializeUid.SerilizeString(LevelUid, systemID.AGI) }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); client.Subscribe(new string[] { SerializeUid.SerilizeTopic(LevelTopic, systemID.AGI) }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
//client.Subscribe(new string[] { SerializeUid.SerilizeString(LevelUid, systemID.AGI) }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); //client.Subscribe(new string[] { SerializeUid.SerilizeString(LevelUid, systemID.AGI) }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
client.Subscribe(new string[] { "xyz_topic_parameter" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); client.Subscribe(new string[] { "xyz_topic_parameter" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
...@@ -166,6 +168,7 @@ namespace Mqtt_AGI ...@@ -166,6 +168,7 @@ namespace Mqtt_AGI
try try
{ {
Level_Topic_Uid_init();
//从配置文件获取ip port //从配置文件获取ip port
StringBuilder ip_build = new StringBuilder(32); StringBuilder ip_build = new StringBuilder(32);
StringBuilder port_build = new StringBuilder(32); StringBuilder port_build = new StringBuilder(32);
...@@ -241,21 +244,23 @@ namespace Mqtt_AGI ...@@ -241,21 +244,23 @@ namespace Mqtt_AGI
//初始化包配置 //初始化包配置
TDSCmd MessageSend =new TDSCmd(); TDSCmd MessageSend =new TDSCmd();
MessageSend.InterfaceId = IID.AgiTleRespond; MessageSend.InterfaceId = IID.AgiTleRespond;
MessageSend.DstSuid = Convert.ToUInt32(SerializeUid.SerilizeString(LevelUid, systemID.SERVER)); MessageSend.DstSuid = Convert.ToUInt32(SerializeUid.SerilizeUid(LevelUid, systemID.SERVER));
MessageSend.SrcSuid = Convert.ToUInt32(SerializeUid.SerilizeString(LevelUid, systemID.AGI)); MessageSend.SrcSuid = Convert.ToUInt32(SerializeUid.SerilizeUid(LevelUid, systemID.AGI));
MessageSend.ForwardFlag = 0;//不需要转发 MessageSend.ForwardFlag = 0;//不需要转发
//加载数据段 //加载数据段
Any Parameter = Any.Pack(calctleret); Any Parameter = Any.Pack(calctleret);
MessageSend.Parameters.Add(Parameter); MessageSend.Parameters.Add(Parameter);
client.Publish(SerializeUid.SerilizeString(LevelUid, systemID.SERVER), MessageSend.ToByteArray()); client.Publish(SerializeUid.SerilizeTopic(LevelTopic, systemID.SERVER), MessageSend.ToByteArray());
Console.WriteLine("send topic:"+ SerializeUid.SerilizeTopic(LevelTopic, systemID.SERVER));
Console.WriteLine(line0);
Console.WriteLine(line1);
Console.WriteLine(line2);
Console.WriteLine("pacakge length:" + MessageSend.ToByteArray().Length); Console.WriteLine("pacakge length:" + MessageSend.ToByteArray().Length);
Console.WriteLine("Sucess send count:" + (++count)); Console.WriteLine("Sucess send count:" + (++count));
Console.WriteLine("Content:" + MessageSend);
//Console.WriteLine(line0);
//Console.WriteLine(line1);
//Console.WriteLine(line2);
//client.Publish("server/response/agi/tle", System.Text.Encoding.Default.GetBytes(line0+";"+line1+";"+line2)); //client.Publish("server/response/agi/tle", System.Text.Encoding.Default.GetBytes(line0+";"+line1+";"+line2));
...@@ -567,23 +572,25 @@ namespace Mqtt_AGI ...@@ -567,23 +572,25 @@ namespace Mqtt_AGI
//初始化包配置 //初始化包配置
TDSCmd MessageSend = new TDSCmd(); TDSCmd MessageSend = new TDSCmd();
MessageSend.InterfaceId = IID.AgiReportRespond; MessageSend.InterfaceId = IID.AgiReportRespond;
MessageSend.DstSuid = Convert.ToUInt32(SerializeUid.SerilizeString(LevelUid, systemID.SERVER)); MessageSend.DstSuid = Convert.ToUInt32(SerializeUid.SerilizeUid(LevelUid, systemID.SERVER));
MessageSend.SrcSuid = Convert.ToUInt32(SerializeUid.SerilizeString(LevelUid, systemID.AGI)); MessageSend.SrcSuid = Convert.ToUInt32(SerializeUid.SerilizeUid(LevelUid, systemID.AGI));
MessageSend.ForwardFlag = 0;//不需要转发 MessageSend.ForwardFlag = 0;//不需要转发
//加载数据段 //加载数据段
Any Parameter = Any.Pack(CalcReport); Any Parameter = Any.Pack(CalcReport);
MessageSend.Parameters.Add(Parameter); MessageSend.Parameters.Add(Parameter);
client.Publish(SerializeUid.SerilizeString(LevelUid, systemID.SERVER), MessageSend.ToByteArray()); client.Publish(SerializeUid.SerilizeTopic(LevelTopic, systemID.SERVER), MessageSend.ToByteArray());
//protobuf end //protobuf end
//CalcRetJson.Add("tasks", ReportArray); //CalcRetJson.Add("tasks", ReportArray);
Console.WriteLine("send topic:" + SerializeUid.SerilizeTopic(LevelTopic, systemID.SERVER));
Console.WriteLine("pacakge length:"+ MessageSend.ToByteArray().Length); Console.WriteLine("pacakge length:"+ MessageSend.ToByteArray().Length);
//client.Publish("server/response/agi/json", System.Text.Encoding.Default.GetBytes(CalcRetJson.ToString())); //将任务星下点信息发布出去 //client.Publish("server/response/agi/json", System.Text.Encoding.Default.GetBytes(CalcRetJson.ToString())); //将任务星下点信息发布出去
Console.WriteLine("Sucess send count:" + (++count)); Console.WriteLine("Sucess send count:" + (++count));
Console.WriteLine("Content:" + MessageSend);
//Console.WriteLine(CalcRetJson.ToString()); //Console.WriteLine(CalcRetJson.ToString());
} }
catch (Exception e) catch (Exception e)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment