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 に答える