Commit 2de43ab6 by xjp0422

no message

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