我正在尝试为通过RS232连接到计算机的设备编写命令,但它似乎没有成功写入命令,请帮忙。
我的代码
char stx = (char)0x02;
char etx = (char)0x03;
char data = '2';
char lrc = CalculateLRC(data.ToString() + etx.ToString());
char[] outputBuffer = {stx, data, etx, lrc };
mySerialPort.Write(outputBuffer, 0, outputBuffer.Length);
方法
public static char CalculateLRC(string toEncode)
{
byte[] bytes = Encoding.ASCII.GetBytes(toEncode);
byte LRC = 0;
for (int i = 0; i < bytes.Length; i++)
{
LRC ^= bytes[i];
}
return Convert.ToChar(LRC);
}
答案 0 :(得分:0)
纵向冗余校验(LRC)是所有数据字节的异或(XOR),不包括STX和ETX。在您的代码中,CalculateLRC所在的行包括ETX,这是错误的。