软测单独项目
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

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
}
}