- - PR -
VB2005 シリアル通信 16進データの送信について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-05-23 05:54
はじめまして。
VB初心者で、基本的なことかもしれませんが書き込みさせていただきます。 16進文字列をシリアルポート(RS-232C)にて送信しようとしています。 この際、文字列が『57』の場合、データを57[Hex]で(アナライザでHex57となるように) 送りたいと思っています。 現状 ComSerialPort.Write(chr(&h57)) として57をHex57で送信しているのですが、 文字列が7Fを越えるとうまく送れません。(アナライザでモニタすると00となります。) 文字列をstringとしてではなく、Hexで送るには、どのようにしたらよいのでしょうか? 未熟者ですがどうか御教授ください。よろしくおねがいします。 | ||||
|
投稿日時: 2007-05-23 09:01
おはようございます。
通信相手とはどのような手順でやりとりしているのですか? プロトコロルアナライザが通信データを誤認しているかもしれませんね。 ただベーシック手順などでは、通常では伝送制御文字をデータとして送ることができません。 文字列以外のバイナリデータを送りたい場合は、 DLE制御文字を使った透過モードで送る方法があります。 [ メッセージ編集済み 編集者: Tdnr_Sym 編集日時 2007-05-23 12:19 ] | ||||
|
投稿日時: 2007-05-23 10:27
VB屋ではないので、一般的な線で。
文字ベースであってもShift JISの文字があったりするので80h以上のデータも通ると思いますが... もしかして、プログラムあるいはラインモニタの通信条件が7bitになっていたりしないでしょうか。 | ||||
|
投稿日時: 2007-05-23 10:35
じゃあ VB 側からの意見で。
Microsoft.VisualBasic.Strings.Chr メソッドは Chr(&h81) などとす ると、Nothing を返します。 なので、SerialPort には Nothing (たぶん &h00 )が送られているの だと思われます。 こちらの方のオーバーロードを使うのがいいんじゃないでしょうか。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||
|
投稿日時: 2007-05-23 14:44
あぁ、そういえばVBで簡易ターミナル(特定用途)を作ってみたときにそんなようなことで ハマった記憶が...私がVBで何か作るときはグループ内で使う使い捨てツールが多いんで 一仕事終わると忘れちゃうんですよね〜(よくないな) 最近また似たようなことをやらなきゃいけない気配があるんで、思い出させていただいて とっても助かります (ってスレ主をさしおいて) | ||||
|
投稿日時: 2007-05-23 21:27
みなさん、レスありがとうございます。
SerialPort.Write メソッド (Byte[], Int32, Int32) にて送信することができました。助かりました。 また質問させていただく事があるかもしれませんが、 よろしくおねがいします。 |
1