using System;
using System.Text;
using Newtonsoft.Json.Linq;
namespace HDL_ON.Common
{
public class A_Protocal_Common
{
public static A_Protocal_Common apc;
public A_Protocal_Common()
{
apc = new A_Protocal_Common();
}
///
/// 获取13位时间戳
///
/// 时间
/// long
public long Get_time_stamp()
{
//DateTime startTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
long t = DateTime.Now.Ticks / 10000; //除10000调整为13位
return t;
}
///
/// 转换通讯数据
///
public byte[] ConvertSendBodyData(string topic, string bodyDataString)
{
string topicString = "Topic:" + topic + "/r/n";
byte[] bodyBytes = Encoding.ASCII.GetBytes(bodyDataString);
string lenghtString = "Length:" + bodyBytes.Length.ToString() + "/r/n" + "/r/n";
string sendDataString = topicString + lenghtString + bodyDataString;
byte[] sendDataBytes = Encoding.ASCII.GetBytes(sendDataString);
return sendDataBytes;
}
///
/// 转换接收到的数据
///
///
public string[] ConvertReceiveData(byte[] bytes)
{
string topic = "";
int lenght = 0;
var reString = System.Text.Encoding.UTF8.GetString(bytes);
var res = reString.Split("/r/n/r/n");
if (res.Length == 2)
{
var topics = res[0].Split("/r/n");
foreach (var ts in topics)
{
var key = ts.Split(":");
switch (key[0])
{
case "Topic":
topic = key[1];
break;
case "Lenght":
lenght = Convert.ToInt32(key[1]);
break;
}
}
switch (topic)
{
case CommunicationTopic.SearchLoaclGateway:
var jt = Newtonsoft.Json.JsonConvert.DeserializeObject(res[1]);
if (jt != null)
{
var device = Newtonsoft.Json.JsonConvert.DeserializeObject(jt.objects.ToString());
//Newtonsoft.Json.Linq.JObject.FromObject(jt.objects);
}
break;
}
}
}
}
///
/// 通讯回复数据包
///
public class ResponsePack
{
public string id;
public string code;
public string time_stamp;
public object objects;
}
///
/// 通讯主题
///
public static class CommunicationTopic
{
///
/// 搜索本地网关
///
public const string SearchLoaclGateway = "/user/all/custom/gateway/search";
}
}