通讯协议字符转义
发送前数据转义函数:
public static byte[] set_PHY(byte[] da)
{
int i = 0;
byte[] data = new byte[1024];
if (da[0] == 0xa5 && da[da.Length - 1] == 0x5a)
{
int select = 0;
for (int a = 0; a < da.Length - 1; a++)
{
if (da[a] == 0xa5 && select == 0)
{
data[i] = da[a];
i++;
continue;
}
else { select = 1; }
if (da[a] == 0xA5 && select == 1)
{data[i] = 0xA6;
i++;
data[i] = 0x02;
i++;
continue;
}
else if (da[a] == 0xA6 && select == 1)
{
data[i] = 0xA6;
i++;
data[i] = 0x01;
i++;
continue;
}
else if (da[a] == 0x5A && select == 1)
{
data[i] = 0x5B;
i++;
data[i] = 0x02;
i++;
continue;
}
else if (da[a] == 0x5B && select == 1)
{
data[i] = 0x5B;
i++;
data[i] = 0x01;
i++;
continue;
}
else
{
data[i] = da[a];
i++;
continue;
}
}
data[i] = da[da.Length - 1];
}
else
{
Console.WriteLine("Data error!");
}
byte[] Set_data = new byte[i + 1];
for (int c = 0; c < i + 1; c++)
{
Set_data[c] = data[c];
}
return Set_data;
}注意:封帧过程中,所涉及校验的数据皆是转义之前的数据,所涉及的数据长度皆是转义之前的数据长度。

