Chr()で表示できないバイナリ値をMSCommで送信するには?

解決


エフ  2004-01-22 09:10:21  No: 81631

VB6で、RS232経由の双方向制御アプリを作成しています。
しかし、Chr(128)〜(160)のように、印字できないバイナリ値を送信できずに
悩んでいます。なお印字できない文字は、イミディエイトで調べるとヌル値になっていました。
送信の形式はMSComm.output = Chr(128)のように行っています。
MSComm.outputは、バイナリ値での送信も可能とのヘルプの表記ですが、
値の設定のどこが悪いのか、ご存知の方はご教授いただけないでしょうか。
おバカな事で恐縮ですが、よろしくお願い申し上げます。


k.k  2004-01-22 10:14:00  No: 81632

バイナリデータを送信することも可能ということでしたら、
MSComm.output = 128
とするのではないのかな?


副長官  2004-01-22 10:26:30  No: 81633

InputModeプロパティーの値はどうなっていますか?


エフ  2004-01-22 16:22:59  No: 81634

早速のご助言ありがとうござます。

>副長官 2004/01/22(木) 01:26:30
>InputModeプロパティーの値はどうなっていますか?
InputModeは宣言していません。受信はASCIIのみで充分な為です。
これももしや?とは考えたのですが、未試行です。早速やってみます。

>バイナリデータを送信することも可能ということでしたら、
>MSComm.output = 128
>とするのではないのかな?
これは気づきませんでした。試してみます。Hex()は試したのですが、Chr()構文でないと受信側が受け付けませんでした。

なお、Chr()で送信できない文字は、文字コード表ではwindowsで扱えないとされている領域でした。

貴重なご助言をいただきましたご両名様に、深く御礼申し上げます。


batchman  2004-01-22 17:58:26  No: 81635

いぜん、MSCommでBinary送信の説明をしたときのログです。
参考になりますでしょうか...

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200310/03100030.txt


sugi  2004-01-22 18:15:41  No: 81636

Dim OutChr() As Byte
OutChr = StrConv(Chr(2) & Chr(80) & Chr(84), vbFromUnicode)
MSComm1.Output = OutChr

VBのバグだか何だかよくわからないのですが、StrConvを使用して文字列変換を行った後にバイト配列に入れてから送信してやれば出来たはずです。
上のコードは以前作ったものからの抜粋なんですが、こんな感じで問題ないと思います。


sugi  2004-01-22 18:18:47  No: 81637

あ、バグと言うのは、そのままだと送信できないこと、のことです。


GOD  2004-01-22 19:22:19  No: 81638

>OutChr = StrConv(Chr(2) & Chr(80) & Chr(84), vbFromUnicode)
StrConvは使用しないほうがいいでしょう。
&HE0〜&HFCの領域が0になってしまいますので。
やるなら
Dim OutChr(2) As Byte
OutCHr(0) = 2
OutCHr(1) = 80
OutCHr(2) = 84
MSComm1.Output = OutChr
のほうがいいですよ。


エフ  2004-01-24 15:05:00  No: 81639

送れました。
奥が深いですね。
ご教授いただきました皆様、
まことにありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加