using System;
|
using System.Text;
|
|
namespace HDL_ON.DriverLayer
|
{
|
public class A_Protocal_Common
|
{
|
public static A_Protocal_Common apc;
|
|
public A_Protocal_Common()
|
{
|
apc = new A_Protocal_Common();
|
}
|
|
|
/// <summary>
|
/// 获取13位时间戳
|
/// </summary>
|
/// <param name="time">时间</param>
|
/// <returns>long</returns>
|
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;
|
}
|
|
/// <summary>
|
/// 转换通讯数据
|
/// </summary>
|
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;
|
}
|
/// <summary>
|
/// 转换接收到的数据
|
/// </summary>
|
/// <returns></returns>
|
public string ConvertReceiveData(byte[] bytes)
|
{
|
string receiveString = "";
|
|
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<ResponsePack>(res[1]);
|
if (jt != null)
|
{
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.DeviceModule>(jt.objects.ToString());
|
//Newtonsoft.Json.Linq.JObject.FromObject(jt.objects);
|
}
|
break;
|
}
|
|
}
|
return receiveString;
|
}
|
}
|
/// <summary>
|
/// 通讯回复数据包
|
/// </summary>
|
public class ResponsePack
|
{
|
public string id;
|
public string code;
|
public string time_stamp;
|
public object objects;
|
}
|
|
/// <summary>
|
/// 通讯主题
|
/// </summary>
|
public static class CommunicationTopic
|
{
|
/// <summary>
|
/// 搜索本地网关
|
/// </summary>
|
public const string SearchLoaclGateway = "/user/all/custom/gateway/search";
|
}
|
}
|