You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
691 lines
30 KiB
691 lines
30 KiB
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace FangYar.IOT_DH_Plugin
|
|
{
|
|
public class TCPHelper
|
|
{
|
|
public static void cmd()
|
|
{
|
|
|
|
}
|
|
public static TCP_Data_Model Analysis(byte[] data)
|
|
{
|
|
TCP_Data_Model tcp_data_model = new TCP_Data_Model();
|
|
//业务流水号
|
|
byte[] dataNo = CommonHelper.SplitArray(data, 2, 3);
|
|
tcp_data_model.dataNo = CommonHelper.bytesToInt(dataNo);
|
|
|
|
//协议版本号
|
|
byte[] versionNo = CommonHelper.SplitArray(data, 4, 5);
|
|
tcp_data_model.versionNo = CommonHelper.bytesToInt(versionNo);
|
|
|
|
//时间标签
|
|
byte[] time = CommonHelper.SplitArray(data, 6, 11);
|
|
tcp_data_model.time = CommonHelper.BytestoDateTime(time);
|
|
|
|
//源地址
|
|
byte[] ydz = CommonHelper.SplitArray(data, 12, 17);
|
|
tcp_data_model.ydz = CommonHelper.byteToHexStr(ydz);
|
|
|
|
//目的地址
|
|
byte[] mddz = CommonHelper.SplitArray(data, 18, 23);
|
|
tcp_data_model.mddz = CommonHelper.byteToHexStr(mddz);
|
|
|
|
//应用数据单元长度
|
|
byte[] datalength = CommonHelper.SplitArray(data, 24, 25);
|
|
tcp_data_model.datalength = CommonHelper.bytesToInt(datalength);
|
|
|
|
//命令字节
|
|
byte[] mlzj = CommonHelper.SplitArray(data, 26, 26);
|
|
tcp_data_model.mlzj = CommonHelper.bytesToInt(mlzj);
|
|
|
|
//应用数据单元
|
|
byte[] yydata = CommonHelper.SplitArray(data, 27, data.Length - 3);
|
|
tcp_data_model.data = yydata;
|
|
//校验和 datanum
|
|
byte[] datanum = CommonHelper.SplitArray(data, data.Length - 2, data.Length - 1);
|
|
tcp_data_model.datanum = CommonHelper.bytesToInt(datanum);
|
|
return tcp_data_model;
|
|
}
|
|
|
|
|
|
//注册
|
|
public static TCP_Register_Model BytestorRegisterData(byte[] data)
|
|
{
|
|
TCP_Register_Model tcp_register_model = new TCP_Register_Model();
|
|
//类型标志
|
|
byte[] type = CommonHelper.SplitArray(data, 0, 0);
|
|
tcp_register_model.type = CommonHelper.bytesToInt(type);
|
|
|
|
//类型标志
|
|
byte[] objectNo = CommonHelper.SplitArray(data, 1, 1);
|
|
tcp_register_model.objectNo = CommonHelper.bytesToInt(objectNo);
|
|
|
|
//应用数据单元
|
|
byte[] yydata = CommonHelper.SplitArray(data, 2, 79);
|
|
tcp_register_model.data = yydata;
|
|
return tcp_register_model;
|
|
}
|
|
|
|
//注册数据包
|
|
public static TCP_RegisterPK_Model BytestoRegisterPKData(byte[] data)
|
|
{
|
|
TCP_RegisterPK_Model tcp_registerpk_model = new TCP_RegisterPK_Model();
|
|
//协议版本号
|
|
byte[] VERSION = CommonHelper.SplitArray(data, 0, 1);
|
|
tcp_registerpk_model.VERSION = CommonHelper.bytesToInt(VERSION);
|
|
|
|
//BCD码ID编号
|
|
byte[] ID = CommonHelper.SplitArray(data, 2, 9);
|
|
tcp_registerpk_model.ID = CommonHelper.bytesToInt(ID);
|
|
|
|
//保留
|
|
byte[] Reserve = CommonHelper.SplitArray(data, 10, 17);
|
|
tcp_registerpk_model.Reserve = CommonHelper.byteToHexStr(Reserve);
|
|
|
|
//ASCII码
|
|
byte[] SN = CommonHelper.SplitArray(data, 18, 33);
|
|
tcp_registerpk_model.SN = CommonHelper.byteToHexStr(SN);
|
|
//BCD码ID编号
|
|
byte[] CCID = CommonHelper.SplitArray(data, 34, 43);
|
|
tcp_registerpk_model.CCID = CommonHelper.bytesToInt(CCID);
|
|
//保留
|
|
byte[] Reserve2 = CommonHelper.SplitArray(data, 44, 75);
|
|
tcp_registerpk_model.Reserve2 = CommonHelper.byteToHexStr(Reserve2);
|
|
//系统类型
|
|
byte[] dvcType = CommonHelper.SplitArray(data, 76, 76);
|
|
tcp_registerpk_model.dvcType = CommonHelper.byteToHexStr(dvcType);
|
|
//重连接扩展标志
|
|
byte[] Ext = CommonHelper.SplitArray(data, 77, 77);
|
|
tcp_registerpk_model.Ext = CommonHelper.bytesToInt(Ext);
|
|
return tcp_registerpk_model;
|
|
}
|
|
|
|
//系统状态
|
|
public static TCP_Sysstate_Model BytestoSysstateData(byte[] data)
|
|
{
|
|
TCP_Sysstate_Model tcp_sysstate_model = new TCP_Sysstate_Model();
|
|
//类型标志
|
|
byte[] typesign = CommonHelper.SplitArray(data, 0, 0);
|
|
tcp_sysstate_model.typesign = CommonHelper.byteToHexStr(typesign);
|
|
//信息对象数目
|
|
byte[] dataNo = CommonHelper.SplitArray(data, 1, 1);
|
|
tcp_sysstate_model.dataNo = CommonHelper.bytesToInt(dataNo);
|
|
//系统类型
|
|
byte[] sysType = CommonHelper.SplitArray(data, 2, 2);
|
|
tcp_sysstate_model.sysType = CommonHelper.byteToHexStr(sysType);
|
|
//系统地址
|
|
byte[] sysAddr = CommonHelper.SplitArray(data, 3, 3);
|
|
tcp_sysstate_model.sysAddr = CommonHelper.byteToHexStr(sysAddr);
|
|
//系统状态
|
|
byte[] status = CommonHelper.SplitArray(data, 4, 5);
|
|
tcp_sysstate_model.sysState = new BitArray(status);
|
|
//时间标签
|
|
byte[] time = CommonHelper.SplitArray(data, 6, 11);
|
|
tcp_sysstate_model.time = CommonHelper.BytestoDateTime(time);
|
|
return tcp_sysstate_model;
|
|
}
|
|
//部件状态
|
|
public static TCP_Dvcstate_Model BytestoDvcstateData(byte[] data)
|
|
{
|
|
TCP_Dvcstate_Model tcp_dvcstate_model = new TCP_Dvcstate_Model();
|
|
//类型标志
|
|
byte[] typesign = CommonHelper.SplitArray(data, 0, 0);
|
|
tcp_dvcstate_model.typesign = CommonHelper.byteToHexStr(typesign);
|
|
//信息对象数目
|
|
byte[] dataNo = CommonHelper.SplitArray(data, 1, 1);
|
|
tcp_dvcstate_model.dataNo = CommonHelper.bytesToInt(dataNo);
|
|
//信息对象
|
|
byte[] dvcObject = CommonHelper.SplitArray(data, 2, data.Length - 3);
|
|
tcp_dvcstate_model.dvcObject = dvcObject;
|
|
|
|
return tcp_dvcstate_model;
|
|
}
|
|
//部件状态信息对象
|
|
public static TCP_Dvcobject_Model BytestoDvcobjectData(byte[] data)
|
|
{
|
|
TCP_Dvcobject_Model tcp_dvcobject_model = new TCP_Dvcobject_Model();
|
|
//系统类型
|
|
byte[] sysType = CommonHelper.SplitArray(data, 0, 0);
|
|
tcp_dvcobject_model.sysType = CommonHelper.byteToHexStr(sysType);
|
|
//系统地址
|
|
byte[] sysAddr = CommonHelper.SplitArray(data, 1, 1);
|
|
tcp_dvcobject_model.sysAddr = CommonHelper.byteToHexStr(sysAddr);
|
|
//部件类型
|
|
byte[] dvcType = CommonHelper.SplitArray(data, 2, 2);
|
|
tcp_dvcobject_model.dvcType = CommonHelper.bytesToInt(dvcType);
|
|
//部件地址
|
|
byte[] dvcAddr = CommonHelper.SplitArray(data, 3, 7);
|
|
tcp_dvcobject_model.dvcAddr = CommonHelper.byteToHexStr(dvcAddr);
|
|
//部件状态
|
|
byte[] status = CommonHelper.SplitArray(data, 8, 9);
|
|
tcp_dvcobject_model.dvcState = new BitArray(status);
|
|
|
|
//部件说明
|
|
byte[] dvcExplain = CommonHelper.SplitArray(data, 10, 40);
|
|
tcp_dvcobject_model.dvcExplain = CommonHelper.byteToHexStr(sysAddr);
|
|
//时间标签
|
|
byte[] DateTime = CommonHelper.SplitArray(data, 41, 45);
|
|
tcp_dvcobject_model.time = CommonHelper.BytestoDateTime(sysAddr);
|
|
|
|
return tcp_dvcobject_model;
|
|
}
|
|
|
|
//模拟量
|
|
public static TCP_Dvcnum_Model BytestoDvcnumData(byte[] data)
|
|
{
|
|
TCP_Dvcnum_Model tcp_dvcnum_model = new TCP_Dvcnum_Model();
|
|
//类型标志
|
|
byte[] typesign = CommonHelper.SplitArray(data, 0, 0);
|
|
tcp_dvcnum_model.typesign = CommonHelper.byteToHexStr(typesign);
|
|
//信息对象数目
|
|
byte[] dataNo = CommonHelper.SplitArray(data, 1, 1);
|
|
tcp_dvcnum_model.dataNo = CommonHelper.bytesToInt(dataNo);
|
|
//信息对象
|
|
byte[] dvcObject = CommonHelper.SplitArray(data, 2, data.Length - 3);
|
|
tcp_dvcnum_model.dvcObject = dvcObject;
|
|
return tcp_dvcnum_model;
|
|
|
|
}
|
|
//模拟量信息对象
|
|
public static TCP_Dvcnumobject_Model BytestoDvcnumobjectData(byte[] data)
|
|
{
|
|
TCP_Dvcnumobject_Model tcp_dvcnumobject_model = new TCP_Dvcnumobject_Model();
|
|
//系统类型
|
|
byte[] sysType = CommonHelper.SplitArray(data, 0, 0);
|
|
tcp_dvcnumobject_model.sysType = CommonHelper.byteToHexStr(sysType);
|
|
//系统地址
|
|
byte[] sysAddr = CommonHelper.SplitArray(data, 1, 1);
|
|
tcp_dvcnumobject_model.sysAddr = CommonHelper.byteToHexStr(sysAddr);
|
|
//部件类型
|
|
byte[] dvcType = CommonHelper.SplitArray(data, 2, 2);
|
|
tcp_dvcnumobject_model.dvcType = CommonHelper.bytesToInt(dvcType);
|
|
//部件地址
|
|
byte[] dvcAddr = CommonHelper.SplitArray(data, 3, 7);
|
|
tcp_dvcnumobject_model.dvcAddr = CommonHelper.byteToHexStr(dvcAddr);
|
|
//模拟量类型
|
|
byte[] numState = CommonHelper.SplitArray(data, 8, 9);
|
|
tcp_dvcnumobject_model.numState = CommonHelper.byteToHexStr(numState);
|
|
//部件说明
|
|
byte[] numdata = CommonHelper.SplitArray(data, 10, 11);
|
|
tcp_dvcnumobject_model.numValue = CommonHelper.byteToHexStr(numdata);
|
|
//时间标签
|
|
byte[] DateTime = CommonHelper.SplitArray(data, 11, 15);
|
|
tcp_dvcnumobject_model.time = CommonHelper.BytestoDateTime(sysAddr);
|
|
return tcp_dvcnumobject_model;
|
|
}
|
|
|
|
//部件模拟量扩展包
|
|
public static TCP_Dvcnumext_Model BytestoDvcnumextData(byte[] data)
|
|
{
|
|
TCP_Dvcnumext_Model tcp_dvcnumext_model = new TCP_Dvcnumext_Model();
|
|
//类型标志
|
|
byte[] typesign = CommonHelper.SplitArray(data, 0, 0);
|
|
tcp_dvcnumext_model.typesign = CommonHelper.byteToHexStr(typesign);
|
|
//信息对象数目
|
|
byte[] dataNo = CommonHelper.SplitArray(data, 1, 1);
|
|
tcp_dvcnumext_model.dataNo = CommonHelper.bytesToInt(dataNo);
|
|
//系统类型
|
|
byte[] sysType = CommonHelper.SplitArray(data, 2, 2);
|
|
tcp_dvcnumext_model.sysType = CommonHelper.byteToHexStr(sysType);
|
|
//系统地址
|
|
byte[] sysAddr = CommonHelper.SplitArray(data, 3, 3);
|
|
tcp_dvcnumext_model.sysAddr = CommonHelper.byteToHexStr(sysAddr);
|
|
//部件类型
|
|
byte[] dvcType = CommonHelper.SplitArray(data, 4, 4);
|
|
tcp_dvcnumext_model.dvcType = CommonHelper.bytesToInt(dvcType);
|
|
//部件地址
|
|
byte[] dvcAddr = CommonHelper.SplitArray(data, 5, 8);
|
|
tcp_dvcnumext_model.dvcAddr = CommonHelper.byteToHexStr(dvcAddr);
|
|
//模拟量数目
|
|
byte[] numdata = CommonHelper.SplitArray(data, 9, 9);
|
|
tcp_dvcnumext_model.numdata = CommonHelper.bytesToInt(numdata);
|
|
//模拟量
|
|
byte[] numvalue = CommonHelper.SplitArray(data, 10, data.Length - 7);
|
|
tcp_dvcnumext_model.numvalue = numvalue;
|
|
//时间标签
|
|
byte[] time = CommonHelper.SplitArray(data, data.Length - 6, data.Length - 1);
|
|
tcp_dvcnumext_model.time = CommonHelper.BytestoDateTime(time);
|
|
return tcp_dvcnumext_model;
|
|
|
|
|
|
|
|
}
|
|
//部件模拟量扩展包模拟量
|
|
public static TCP_Dvcnumextobject_Model BytestoDvcnumextobjectData(byte[] data)
|
|
{
|
|
TCP_Dvcnumextobject_Model tcp_dvcnumextobject_model = new TCP_Dvcnumextobject_Model();
|
|
//模拟量类型
|
|
byte[] numType = CommonHelper.SplitArray(data, 0, 1);
|
|
tcp_dvcnumextobject_model.numType = CommonHelper.byteToHexStr(numType);
|
|
//模拟量值
|
|
byte[] numValue = CommonHelper.SplitArray(data, 2, 3);
|
|
tcp_dvcnumextobject_model.numValue = CommonHelper.bytesToInt(numValue);
|
|
|
|
return tcp_dvcnumextobject_model;
|
|
|
|
}
|
|
|
|
|
|
//命令
|
|
public static TCP_Order_Model BytestoOrdermData(byte[] data)
|
|
{
|
|
TCP_Order_Model tcp_order_model = new TCP_Order_Model();
|
|
//类型标志
|
|
byte[] typesign = CommonHelper.SplitArray(data, 0, 0);
|
|
tcp_order_model.typesign = CommonHelper.byteToHexStr(typesign);
|
|
//信息对象数目
|
|
byte[] dataNo = CommonHelper.SplitArray(data, 1, 1);
|
|
tcp_order_model.dataNo = CommonHelper.bytesToInt(dataNo);
|
|
//信息对象
|
|
byte[] orderObject = CommonHelper.SplitArray(data, 2, data.Length - 1);
|
|
tcp_order_model.orderObject = orderObject;
|
|
return tcp_order_model;
|
|
}
|
|
//命令信息对象
|
|
public static TCP_Orderobject_Model BytestoOrderobjectData(byte[] data)
|
|
{
|
|
TCP_Orderobject_Model tcp_orderobject_model = new TCP_Orderobject_Model();
|
|
//系统类型
|
|
byte[] sysType = CommonHelper.SplitArray(data, 0, 0);
|
|
tcp_orderobject_model.sysType = CommonHelper.byteToHexStr(sysType);
|
|
//系统地址
|
|
byte[] sysAddr = CommonHelper.SplitArray(data, 1, 1);
|
|
tcp_orderobject_model.sysAddr = CommonHelper.byteToHexStr(sysAddr);
|
|
//部件类型
|
|
byte[] dvcType = CommonHelper.SplitArray(data, 2, 2);
|
|
tcp_orderobject_model.dvcType = CommonHelper.bytesToInt(dvcType);
|
|
//部件地址
|
|
byte[] dvcAddr = CommonHelper.SplitArray(data, 3, 7);
|
|
tcp_orderobject_model.dvcAddr = CommonHelper.byteToHexStr(dvcAddr);
|
|
//参数类型
|
|
byte[] parmType = CommonHelper.SplitArray(data, 8, 8);
|
|
tcp_orderobject_model.parmType = CommonHelper.byteToHexStr(parmType);
|
|
//参数值
|
|
byte[] parmValue = CommonHelper.SplitArray(data, 9, 12);
|
|
tcp_orderobject_model.parmValue = CommonHelper.byteToHexStr(parmValue);
|
|
return tcp_orderobject_model;
|
|
}
|
|
|
|
//请求固件升级
|
|
public static void BytestoUpdateData(byte[] data)
|
|
{
|
|
TCP_Update_Model tcp_update_model = new TCP_Update_Model();
|
|
//类型标志
|
|
byte[] typesign = CommonHelper.SplitArray(data, 0, 0);
|
|
tcp_update_model.typesign = CommonHelper.byteToHexStr(typesign);
|
|
//信息对象数目
|
|
byte[] dataNum = CommonHelper.SplitArray(data, 1, 1);
|
|
tcp_update_model.dataNum = CommonHelper.bytesToInt(dataNum);
|
|
//系统类型
|
|
byte[] sysType = CommonHelper.SplitArray(data, 2, 2);
|
|
tcp_update_model.sysType = CommonHelper.byteToHexStr(sysType);
|
|
//系统地址
|
|
byte[] sysAddr = CommonHelper.SplitArray(data, 3, 3);
|
|
tcp_update_model.sysAddr = CommonHelper.byteToHexStr(sysAddr);
|
|
//部件类型
|
|
byte[] dvcType = CommonHelper.SplitArray(data, 4, 4);
|
|
tcp_update_model.dvcType = CommonHelper.byteToHexStr(dvcType);
|
|
//部件地址
|
|
byte[] dvcAddr = CommonHelper.SplitArray(data, 5, 36);
|
|
tcp_update_model.dvcAddr = CommonHelper.byteToHexStr(dvcAddr);
|
|
//软件类型
|
|
byte[] softType = CommonHelper.SplitArray(data, 37, 37);
|
|
tcp_update_model.softType = CommonHelper.byteToHexStr(softType);
|
|
//软件版本
|
|
byte[] softVersion = CommonHelper.SplitArray(data, 38, 41);
|
|
tcp_update_model.softVersion = CommonHelper.byteToHexStr(softVersion);
|
|
//地址类型
|
|
byte[] addrType = CommonHelper.SplitArray(data, 42, 42);
|
|
tcp_update_model.addrType = CommonHelper.byteToHexStr(addrType);
|
|
//升级文件地址长度
|
|
byte[] addrLength = CommonHelper.SplitArray(data, 43, 46);
|
|
tcp_update_model.addrLength = CommonHelper.byteToHexStr(addrLength);
|
|
//升级文件地址长度
|
|
byte[] fileAddr = CommonHelper.SplitArray(data, 46, data.Length - 1);
|
|
tcp_update_model.fileAddr = CommonHelper.byteToHexStr(fileAddr);
|
|
|
|
}
|
|
|
|
//请求固件升级
|
|
public static void BytestoUpdatebeginData(byte[] data)
|
|
{
|
|
TCP_Updatebegin_Model tcp_updatebegin_model = new TCP_Updatebegin_Model();
|
|
//类型标志
|
|
byte[] typesign = CommonHelper.SplitArray(data, 0, 0);
|
|
tcp_updatebegin_model.typesign = CommonHelper.byteToHexStr(typesign);
|
|
//信息对象数目
|
|
byte[] dataNum = CommonHelper.SplitArray(data, 1, 1);
|
|
tcp_updatebegin_model.dataNum = CommonHelper.bytesToInt(dataNum);
|
|
//系统类型
|
|
byte[] sysType = CommonHelper.SplitArray(data, 2, 2);
|
|
tcp_updatebegin_model.sysType = CommonHelper.byteToHexStr(sysType);
|
|
//系统地址
|
|
byte[] sysAddr = CommonHelper.SplitArray(data, 3, 3);
|
|
tcp_updatebegin_model.sysAddr = CommonHelper.byteToHexStr(sysAddr);
|
|
//部件类型
|
|
byte[] dvcType = CommonHelper.SplitArray(data, 4, 4);
|
|
tcp_updatebegin_model.dvcType = CommonHelper.byteToHexStr(dvcType);
|
|
//部件地址
|
|
byte[] dvcAddr = CommonHelper.SplitArray(data, 5, 36);
|
|
tcp_updatebegin_model.dvcAddr = CommonHelper.byteToHexStr(dvcAddr);
|
|
//软件类型
|
|
byte[] softType = CommonHelper.SplitArray(data, 37, 37);
|
|
tcp_updatebegin_model.softType = CommonHelper.byteToHexStr(softType);
|
|
//软件版本
|
|
byte[] state = CommonHelper.SplitArray(data, 38, 38);
|
|
tcp_updatebegin_model.state = CommonHelper.byteToHexStr(state);
|
|
|
|
}
|
|
|
|
//请求固件升级
|
|
public static void BytestoUpdaterequestData(byte[] data)
|
|
{
|
|
TCP_Updaterequest_Model tcp_updaterequest_model = new TCP_Updaterequest_Model();
|
|
//类型标志
|
|
byte[] typesign = CommonHelper.SplitArray(data, 0, 0);
|
|
tcp_updaterequest_model.typesign = CommonHelper.byteToHexStr(typesign);
|
|
//信息对象数目
|
|
byte[] dataNum = CommonHelper.SplitArray(data, 1, 1);
|
|
tcp_updaterequest_model.dataNum = CommonHelper.bytesToInt(dataNum);
|
|
//系统类型
|
|
byte[] sysType = CommonHelper.SplitArray(data, 2, 2);
|
|
tcp_updaterequest_model.sysType = CommonHelper.byteToHexStr(sysType);
|
|
//系统地址
|
|
byte[] sysAddr = CommonHelper.SplitArray(data, 3, 3);
|
|
tcp_updaterequest_model.sysAddr = CommonHelper.byteToHexStr(sysAddr);
|
|
//部件类型
|
|
byte[] dvcType = CommonHelper.SplitArray(data, 4, 4);
|
|
tcp_updaterequest_model.dvcType = CommonHelper.byteToHexStr(dvcType);
|
|
//部件地址
|
|
byte[] dvcAddr = CommonHelper.SplitArray(data, 5, 36);
|
|
tcp_updaterequest_model.dvcAddr = CommonHelper.byteToHexStr(dvcAddr);
|
|
//软件类型
|
|
byte[] softType = CommonHelper.SplitArray(data, 37, 37);
|
|
tcp_updaterequest_model.softType = CommonHelper.byteToHexStr(softType);
|
|
|
|
|
|
}
|
|
|
|
|
|
//部件模拟量值定义表
|
|
public static TCP_Numtype_Model Numtype(int data)
|
|
{
|
|
TCP_Numtype_Model tcp_numtype_model = new TCP_Numtype_Model();
|
|
switch (data)
|
|
{
|
|
case 0:
|
|
tcp_numtype_model.numType = 0;
|
|
tcp_numtype_model.explain = "未用";
|
|
tcp_numtype_model.unit = "/";
|
|
tcp_numtype_model.valueRange = "/";
|
|
tcp_numtype_model.minunit = "/";
|
|
break;
|
|
case 2:
|
|
tcp_numtype_model.numType = 2;
|
|
tcp_numtype_model.explain = "高度";
|
|
tcp_numtype_model.unit = "m";
|
|
tcp_numtype_model.valueRange = "0~320";
|
|
tcp_numtype_model.minunit = "0.01m";
|
|
break;
|
|
case 3:
|
|
tcp_numtype_model.numType = 3;
|
|
tcp_numtype_model.explain = "温度";
|
|
tcp_numtype_model.unit = "℃";
|
|
tcp_numtype_model.valueRange = "-273~+3200";
|
|
tcp_numtype_model.minunit = "0.1℃";
|
|
break;
|
|
case 4:
|
|
tcp_numtype_model.numType = 4;
|
|
tcp_numtype_model.explain = "压力";
|
|
tcp_numtype_model.unit = "Mpa(兆帕)";
|
|
tcp_numtype_model.valueRange = "0~3200";
|
|
tcp_numtype_model.minunit = "0.1Mpa";
|
|
break;
|
|
case 5:
|
|
tcp_numtype_model.numType = 5;
|
|
tcp_numtype_model.explain = "压力";
|
|
tcp_numtype_model.unit = "Kpa(千帕)";
|
|
tcp_numtype_model.valueRange = "0~3200";
|
|
tcp_numtype_model.minunit = "0.1Kpa";
|
|
break;
|
|
case 8:
|
|
tcp_numtype_model.numType = 8;
|
|
tcp_numtype_model.explain = "电压";
|
|
tcp_numtype_model.unit = "V";
|
|
tcp_numtype_model.valueRange = "0~3200";
|
|
tcp_numtype_model.minunit = "0.1V";
|
|
break;
|
|
case 9:
|
|
tcp_numtype_model.numType = 9;
|
|
tcp_numtype_model.explain = "电流";
|
|
tcp_numtype_model.unit = "A";
|
|
tcp_numtype_model.valueRange = "0~3200";
|
|
tcp_numtype_model.minunit = "0.1A";
|
|
break;
|
|
case 129:
|
|
tcp_numtype_model.numType = 129;
|
|
tcp_numtype_model.explain = "湿度";
|
|
tcp_numtype_model.unit = "%RH";
|
|
tcp_numtype_model.valueRange = "0~100";
|
|
tcp_numtype_model.minunit = "0.1%RH";
|
|
break;
|
|
}
|
|
return tcp_numtype_model;
|
|
}
|
|
|
|
//部件模拟量值定义表
|
|
public static string Dvctype(int data)
|
|
{
|
|
string result = "";
|
|
switch (data)
|
|
{
|
|
case 128:
|
|
result = "压力传感器";
|
|
break;
|
|
case 131:
|
|
result = "液位传感器";
|
|
break;
|
|
case 132:
|
|
result = "湿度传感器";
|
|
break;
|
|
case 133:
|
|
result = "温度传感器";
|
|
break;
|
|
}
|
|
return result;
|
|
}
|
|
//系统类型定义表
|
|
public static string Systype(int data)
|
|
{
|
|
string result = "";
|
|
switch (data)
|
|
{
|
|
case 133:
|
|
result = "物联网数据采集终端";
|
|
break;
|
|
case 135:
|
|
result = "组合式探测器";
|
|
break;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
|
|
|
|
public static TCP_Paratype_Model Paramtype(int data)
|
|
{
|
|
TCP_Paratype_Model result = new TCP_Paratype_Model ();
|
|
switch (data)
|
|
{
|
|
case 201:
|
|
result.paramValue = 201;
|
|
result.paramType = "上报间隔";
|
|
result.paramFormat = "Hex";
|
|
result.paramR_W = "r/w";
|
|
result.paramLength = "4B";
|
|
result.paramUnit = "s";
|
|
result.paramDimension = "/";
|
|
result.paramRange = "全F不上报";
|
|
break;
|
|
case 203:
|
|
result.paramValue = 203;
|
|
result.paramType = "心跳时间间隔";
|
|
result.paramFormat = "Hex";
|
|
result.paramR_W = "r/w";
|
|
result.paramLength = "4B";
|
|
result.paramUnit = "s";
|
|
result.paramDimension = "/";
|
|
result.paramRange = "/";
|
|
break;
|
|
case 204:
|
|
result.paramValue = 204;
|
|
result.paramType = "通道接口类型";
|
|
result.paramFormat = "Hex";
|
|
result.paramR_W = "r/w";
|
|
result.paramLength = "4B";
|
|
result.paramUnit = "/";
|
|
result.paramDimension = "/";
|
|
result.paramRange = "/";
|
|
break;
|
|
case 205:
|
|
result.paramValue = 204;
|
|
result.paramType = "传感器量程设置";
|
|
result.paramFormat = "Hex";
|
|
result.paramR_W = "r/w";
|
|
result.paramLength = "4B";
|
|
result.paramUnit = "水位:m水压:Mpa";
|
|
result.paramDimension = "100";
|
|
result.paramRange = "/";
|
|
break;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
|
|
//确认
|
|
public static byte[] Confirm(byte[] dataNo, byte[] versionNo, byte[] ydz, byte[] mddz, int mlzj)//确认0x03 否认0x06 注册0x00
|
|
{
|
|
byte[] result = new byte[0];
|
|
|
|
byte[] byteArrayFirst = new byte[] { 40, 40 };
|
|
//业务流水号
|
|
|
|
result = CommonHelper.MergerArray(result, dataNo);
|
|
//版本号
|
|
|
|
result = CommonHelper.MergerArray(result, versionNo);
|
|
//时间
|
|
|
|
result = CommonHelper.MergerArray(result, DatetimeTobyte());
|
|
//源地址
|
|
|
|
result = CommonHelper.MergerArray(result, ydz);
|
|
//目的地址
|
|
|
|
result = CommonHelper.MergerArray(result, mddz);
|
|
//应用数据长度 2字节
|
|
result = CommonHelper.MergerArray(result, new byte[] { 0,0});
|
|
|
|
//命令字节
|
|
result = CommonHelper.MergerArray(result, new byte[] { (byte)mlzj });
|
|
//校验和
|
|
int checkNum = CommonHelper.CalcSum(result);
|
|
result = CommonHelper.MergerArray(result, new byte[] { (byte)checkNum });
|
|
//结束符
|
|
result = CommonHelper.MergerArray(result, new byte[] { 23, 23 });
|
|
|
|
byteArrayFirst = CommonHelper.MergerArray(byteArrayFirst, result);
|
|
return byteArrayFirst;
|
|
}
|
|
|
|
//确认
|
|
public static byte[] Confirm2(int dataNo,int versionNo,string ydz,string mddz,int mlzj)//确认0x03 否认0x06 注册0x00
|
|
{
|
|
byte[] result = new byte[0];
|
|
|
|
byte[] byteArrayFirst =new byte[] { 40,40};
|
|
//业务流水号
|
|
byte[] byteArray = intTobyte(dataNo);
|
|
result = CommonHelper.MergerArray(result, byteArray);
|
|
//版本号
|
|
byteArray = intTobyte(versionNo);
|
|
result = CommonHelper.MergerArray(result, byteArray);
|
|
//时间
|
|
byteArray = DatetimeTobyte();
|
|
result = CommonHelper.MergerArray(result, byteArray);
|
|
//源地址
|
|
byteArray = CommonHelper.HexStrTobyte(ydz);
|
|
result = CommonHelper.MergerArray(result, byteArray);
|
|
//目的地址
|
|
byteArray = CommonHelper.HexStrTobyte(mddz);
|
|
result = CommonHelper.MergerArray(result, byteArray);
|
|
//应用数据长度 2字节
|
|
byteArray = new byte[0];
|
|
result = CommonHelper.MergerArray(result, byteArray);
|
|
byteArray = new byte[0];
|
|
result = CommonHelper.MergerArray(result, byteArray);
|
|
//命令字节
|
|
byteArray = intTobyte(mlzj);
|
|
result = CommonHelper.MergerArray(result, byteArray);
|
|
//校验和
|
|
int checkNum=CommonHelper.CalcSum(result);
|
|
byteArray = intTobyte(checkNum);
|
|
result = CommonHelper.MergerArray(result, byteArray);
|
|
//结束符
|
|
byteArray = new byte[] { 23, 23 };
|
|
result = CommonHelper.MergerArray(result, byteArray);
|
|
|
|
byteArrayFirst = CommonHelper.MergerArray(byteArrayFirst, result);
|
|
return byteArrayFirst;
|
|
}
|
|
|
|
|
|
#region 公共方法
|
|
|
|
//int 转 bite[]
|
|
public static byte[] intTobyte(int num)
|
|
{
|
|
byte[] byteArray = new byte[] { (byte)(0XFF & num) }; // 将 int 转换成字节数组(str);
|
|
return byteArray;
|
|
}
|
|
|
|
//将当前时间 转 bite[]
|
|
public static byte[] DatetimeTobyte()
|
|
{
|
|
byte[] result = new byte[0];
|
|
|
|
DateTime currentTime = DateTime.Now;
|
|
int year= currentTime.Year%100;
|
|
int month = currentTime.Month;
|
|
int day = currentTime.Day;
|
|
int hour = currentTime.Hour;
|
|
int minute = currentTime.Minute;
|
|
int second = currentTime.Second;
|
|
byte[] b = new byte[] { (byte)second, (byte)minute, (byte)hour, (byte)day, (byte)month, (byte)year };
|
|
//byte[] byteArray = intTobyte(second);
|
|
//result = CommonHelper.MergerArray(result, byteArray);
|
|
//byteArray = intTobyte(minute);
|
|
//result = CommonHelper.MergerArray(result, byteArray);
|
|
//byteArray = intTobyte(hour);
|
|
//result = CommonHelper.MergerArray(result, byteArray);
|
|
//byteArray = intTobyte(day);
|
|
//result = CommonHelper.MergerArray(result, byteArray);
|
|
//byteArray = intTobyte(month);
|
|
//result = CommonHelper.MergerArray(result, byteArray);
|
|
//byteArray = intTobyte(year);
|
|
//result = CommonHelper.MergerArray(result, byteArray);
|
|
|
|
return b;
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|