- PR -

VB2005 シリアル通信 16進データの送信について

1
投稿者投稿内容
たなたな
会議室デビュー日: 2007/05/23
投稿数: 2
投稿日時: 2007-05-23 05:54
はじめまして。
VB初心者で、基本的なことかもしれませんが書き込みさせていただきます。

16進文字列をシリアルポート(RS-232C)にて送信しようとしています。
この際、文字列が『57』の場合、データを57[Hex]で(アナライザでHex57となるように)
送りたいと思っています。
現状 ComSerialPort.Write(chr(&h57)) として57をHex57で送信しているのですが、
文字列が7Fを越えるとうまく送れません。(アナライザでモニタすると00となります。)

文字列をstringとしてではなく、Hexで送るには、どのようにしたらよいのでしょうか?
未熟者ですがどうか御教授ください。よろしくおねがいします。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2007-05-23 09:01
おはようございます。

引用:

たなたなさんの書き込み (2007-05-23 05:54) より:
文字列をstringとしてではなく、Hexで送るには、どのようにしたらよいのでしょうか?



通信相手とはどのような手順でやりとりしているのですか?
プロトコロルアナライザが通信データを誤認しているかもしれませんね。

ただベーシック手順などでは、通常では伝送制御文字をデータとして送ることができません。
文字列以外のバイナリデータを送りたい場合は、
DLE制御文字を使った透過モードで送る方法があります。


[ メッセージ編集済み 編集者: Tdnr_Sym 編集日時 2007-05-23 12:19 ]
TAD
ベテラン
会議室デビュー日: 2007/03/20
投稿数: 52
お住まい・勤務地: 海のそば
投稿日時: 2007-05-23 10:27
VB屋ではないので、一般的な線で。

文字ベースであってもShift JISの文字があったりするので80h以上のデータも通ると思いますが...
もしかして、プログラムあるいはラインモニタの通信条件が7bitになっていたりしないでしょうか。

ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-05-23 10:35
じゃあ VB 側からの意見で。

Microsoft.VisualBasic.Strings.Chr メソッドは Chr(&h81) などとす
ると、Nothing を返します。
なので、SerialPort には Nothing (たぶん &h00 )が送られているの
だと思われます。

こちらの方のオーバーロードを使うのがいいんじゃないでしょうか。

_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
TAD
ベテラン
会議室デビュー日: 2007/03/20
投稿数: 52
お住まい・勤務地: 海のそば
投稿日時: 2007-05-23 14:44
引用:
Microsoft.VisualBasic.Strings.Chr メソッドは Chr(&h81) などとす
ると、Nothing を返します。
なので、SerialPort には Nothing (たぶん &h00 )が送られているの
だと思われます。


あぁ、そういえばVBで簡易ターミナル(特定用途)を作ってみたときにそんなようなことで
ハマった記憶が...私がVBで何か作るときはグループ内で使う使い捨てツールが多いんで
一仕事終わると忘れちゃうんですよね〜(よくないな)

最近また似たようなことをやらなきゃいけない気配があるんで、思い出させていただいて
とっても助かります (ってスレ主をさしおいて)
たなたな
会議室デビュー日: 2007/05/23
投稿数: 2
投稿日時: 2007-05-23 21:27
みなさん、レスありがとうございます。
SerialPort.Write メソッド (Byte[], Int32, Int32)
にて送信することができました。助かりました。
また質問させていただく事があるかもしれませんが、
よろしくおねがいします。
1

スキルアップ/キャリアアップ(JOB@IT)