0

我正在开发一个将串行命令写入 NEC 投影仪的 C# 应用程序。我可以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# 端向端口发送什么?希望有人能尽快提供帮助:)

4

2 回答 2

1

您可以使用 Write 方法,它需要一个字符串作为参数:

SerialPort.Write

于 2012-11-29T12:04:37.460 回答
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);
}
于 2012-11-29T13:57:09.897 回答