串行命令 - NEC投影仪

时间:2012-11-29 12:01:24

标签: c# com serial-port

我正在开发一个C#应用程序,它将串行命令写入NEC投影机。我可以使用“发送号码”功能使用RealTerm发送命令,但似乎无法通过我的应用程序使用它。

命令的格式为

POWER ON - 02H 00H 00H 00H 00H 02H

POWER OFF - 02H 01H 00H 00H 00H 03H

我尝试使用WriteLine(command)发送 - 作为字符串,并使用以下代码将其转换为字节数组:

public static byte[] ToByteArray(string StringToConvert)
{
    char[] CharArray = StringToConvert.ToCharArray();
    byte[] ByteArray = new byte[CharArray.Length];
    for (int i = 0; i < CharArray.Length; i++)
    {
        ByteArray[i] = Convert.ToByte(CharArray[i]);
    }

    return ByteArray;
}

似乎什么都没有用,我应该从C#端向下发送什么?希望有人能尽快帮助:)

2 个答案:

答案 0 :(得分:1)

您可以使用Write方法,它将字符串作为参数:

SerialPort.Write

答案 1 :(得分:1)

尝试从字符串转换这些命令没有什么意义。它们不是字符串。因此,只需以原生格式在代码中编写它们:

private byte[] powerOnCmd  = new byte[] { 0x02, 0x00, 0x00, 0x00, 0x02 };
private byte[] powerOffCmd = new byte[] { 0x02, 0x01, 0x00, 0x00, 0x03 };

现在很简单:

private void sendCommand(byte[] cmd) {
   serialPort1.Write(cmd, 0, cmd.Length);
}
private void PowerOn() {
   sendCommand(powerOnCmd);
}