none
シリアルポートでバイナリデータを1バイトだけ送る方法を教えて下さい RRS feed

回答

  • 外池と申します。

    SerialPortクラスのWriteメソッドには

    Write(Byte[], Int32, Int32)

    というのもありますが?

    2012年10月5日 7:50
  •  スタートビットやパリティを付けたくない、という意図かと思っていたのですが、Option Strict Off にしているためですね。

     SerialPort.Write メソッドには、String 1つを取るメソッド、Byte[], int, int の3つの引き数を取るメソッド、Char[], int, int の3つの引き数を取るメソッドの3つのオーバーロードがあります。ここで「SerialPort1.Write(a)」と引き数を1つだけ指定したために Byte 型の変数 a の内容が '1' という String 型に変換されてしまった、と。もし、Option Strict On にしていたら、「SerialPort1.Write(a)」がコンパイル段階で「一致するオーバーロードがない」というエラーになって、指定の仕方が不味いとわかったでしょう。

     というか、説明書を読みましょう。そうしたら、1週間以上も解決しないままなんてことはなかったと思いますよ。


    Jitta@わんくま同盟

    2012年10月11日 13:01

すべての返信

  • 1バイトだけ指定してください。それで何か問題がありますか?

    Jitta@わんくま同盟

    2012年9月22日 14:46
  • 申し訳ありません。質問の仕方が悪かったようです。

    シリアルポートからは、基本的に文字列が送られるようになっているようです。

    DIM a AS Byte=1

    SerialPort1.Write(a)

    のようにすると「 31 」がおくられます。

    これを「 01 」として送るようにしたいのです。


    • 編集済み kan1946 2012年10月5日 5:18
    2012年10月5日 5:13
  • 外池と申します。

    SerialPortクラスのWriteメソッドには

    Write(Byte[], Int32, Int32)

    というのもありますが?

    2012年10月5日 7:50
  • 福島と申します。

    ありがとうございました。うまく行きました。

    vb に不慣れで申し訳ありません。

    2012年10月11日 6:45
  •  スタートビットやパリティを付けたくない、という意図かと思っていたのですが、Option Strict Off にしているためですね。

     SerialPort.Write メソッドには、String 1つを取るメソッド、Byte[], int, int の3つの引き数を取るメソッド、Char[], int, int の3つの引き数を取るメソッドの3つのオーバーロードがあります。ここで「SerialPort1.Write(a)」と引き数を1つだけ指定したために Byte 型の変数 a の内容が '1' という String 型に変換されてしまった、と。もし、Option Strict On にしていたら、「SerialPort1.Write(a)」がコンパイル段階で「一致するオーバーロードがない」というエラーになって、指定の仕方が不味いとわかったでしょう。

     というか、説明書を読みましょう。そうしたら、1週間以上も解決しないままなんてことはなかったと思いますよ。


    Jitta@わんくま同盟

    2012年10月11日 13:01
  • 解決されているようでしたので、こちらで勝手ながら参考になると思われる投稿に回答としてマークをさせていただきました。
    解決された際は、役に立った投稿に対して回答としてマークを設定していただければ、解決済みと言うことがほかの方にもわかりやすくなりますし、同じ問題に困ったほかの方にも役に立った投稿というのがわかりやすくなりますので、ぜひ設定していただければと思います。

    2012年10月11日 14:14
    モデレータ