バイナリでのシリアル送信方法 (再)

ある装置をコマンドをシリアルで送信し移動させたく、
VisualC#にてシリアル送信ソフトを作成しています。

public static string command_str2;
command_str2 = "A001";   ←固定で入れてますが、本来はGUIで選択したコマンドが文字列(string型)で入ります。
byte[] buf = Encoding.GetEncoding("Shift_JIS").GetBytes(command_str2);
short size = (short)buf.Length;
serialPort1.Write(buf, 0, size);

#コマンド
0xA0 上移動
0x01 1マス

上記コマンド「A001」をバイナリーで送信したいのですが、ASCII文字「41303031」で送信されてしまいます。
文字変換されずに送信する為にはどのように変更すれば良いでしょうか?
※String型をどう処理すれば良いかが判っていません。

どなたか、ご教示をお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/08/08 15:41:16
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4968ベストアンサー獲得回数2151

ポイント100pt

こんなのが落ちてました。
http://d.hatena.ne.jp/tilfin/20070923/1190528490

    public static byte[] FromHexString(string str) {
        int length = str.Length / 2;
        byte[] bytes = new byte[length];
        int j = 0;
        for (int i = 0; i < length; i++) {
            bytes[i] = Convert.ToByte(str.Substring(j, 2), 16);
            j += 2;
        }
        return bytes;
    }

このメソッドで返される byte[] を Write に渡せば良いんじゃないでしょうか。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません