1,317
社区成员
发帖
与我相关
我的任务
分享
//格式:[STX][ADDRESS][COMMAND][PARA][LONG][ETX]
int __fastcall MOD_Encode(const unsigned char *InBuf,int InLen,unsigned char *OutBuf,char ADD);
{
int OutLen = 0;
int CheckSum=0;
OutBuf[OutLen] = STX;
OutLen++;
OutBuf[OutLen] = ADD;
OutLen++;
CheckSum = CheckSum ^ ADD;
for (int i = 0; i <= InLen-1; i++)
{
if ((InBuf[i] == DLE) || (InBuf[i] == STX) || (InBuf[i] == ETX))
{
OutBuf[OutLen] = DLE;
OutLen++;
OutBuf[OutLen] = 0xff-InBuf[i];
OutLen++;
}
else
{
OutBuf[OutLen] = InBuf[i];
OutLen++;
}
CheckSum = CheckSum ^ InBuf[i];
}
OutBuf[OutLen] = CheckSum;
OutLen++;
OutBuf[OutLen] = ETX;
OutLen++;
return OutLen;
}