通讯协议字符转义
发送前数据转义函数:
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; }
注意:封帧过程中,所涉及校验的数据皆是转义之前的数据,所涉及的数据长度皆是转义之前的数据长度。