串行端口。写不工作c#compact framwrork 2.0

时间:2014-07-30 13:29:39

标签: c#-2.0

我正在尝试为通过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);
        }

1 个答案:

答案 0 :(得分:0)

纵向冗余校验(LRC)是所有数据字节的异或(XOR),不包括STX和ETX。在您的代码中,CalculateLRC所在的行包括ETX,这是错误的。