C#
基本样例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DLT645D
{
class DLT645
{
public DLT645()
{
}
enum RTNDATA
{
DATA_OK = 0,
ERR_DATALEN,
ERR_STARTPOS,
ERR_CHECKSUM,
DATA_NULL,//无标识符
}
int packet(DataPacketFrame inBuf, ushort len, out byte[] outBuf)
{
ushort i = 0;
ushort pos = 0;
ushort j = 0;
byte checkSum = 0;
outBuf = new byte[256];
outBuf[i++] = 0xfe;
outBuf[i++] = 0xfe;
outBuf[i++] = 0xfe;
outBuf[i++] = 0xfe;
pos = i;
//起始符
outBuf[i++] = 0x68;
//地址域
for (j = 0; j < 6; j++)
{
outBuf[i++] = inBuf.addr[j];
}
//起始符
outBuf[i++] = 0x68;
//控制码
outBuf[i++] = inBuf.ctr_Code;
//数据长度
outBuf[i++] = inBuf.DataLen;
//数据
for (j = 0; j < len; j++)
{
outBuf[i++] = (byte)(inBuf.Data[j] + 0x33);
}
//检验和
for (j = pos; j < i; j++)
{
&n
DLT645协议帧处理

本文介绍了一个基于C#实现的DLT645协议数据包处理类,包括数据包的打包与解包过程。该类通过枚举定义了不同的返回状态,并实现了具体的打包与解包逻辑。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



