RS-232Cで”00”を送信するには?


75  2005-01-27 21:41:19  No: 88043

RS-232Cで測定機器を制御しようと思っているのですがうまくいきません。

    MSComm1.PortOpen = True
    PR$ = Chr$(&HAB)
    AD$ = Chr$(&H5S)
    FD$ = Chr$(&HFD)
    MC$ = Chr$(&H18)
    SC$ = Chr$(&H0)
    INS$ = PR$ + AD$ + MC$ + SC$ + FD$
    MSComm1.Output = INS$
    MSComm1.PortOpen = False

この形式で命令を送っていまして基本的に正しく動作はするのですが、Chr$(&H00)というのを私は送りたいのですがそのように入力すると自動的にChr$(&H0)と0が1つになってしまいます。
測定機器の使用上、0が2つないと認識しないらしく正しく動作しません。
過去の質問を見ても分からなかったので質問させて頂きました。
VBを始めて間もない初心者ですがどうかよろしくお願いします。


.net初心者  2005-01-27 22:14:10  No: 88044

>    AD$ = Chr$(&H5S)
「&H5S」って何ですか?単なる記述ミス?
以下のように変更してみて

    Dim bytSnd(4) As Byte
    
    bytSnd(0) = &HAB
    bytSnd(1) = &H5?  '<----5Sの本当のコードを打ち込んで下さい
    bytSnd(2) = &HFD
    bytSnd(3) = &H18
    bytSnd(4) = &H0
    MSComm1.Output = bytSnd

それでもうまくいかない場合はポートを開いたり閉じたりするのを
別のタイミングでやってみてください。


75  2005-01-27 22:30:07  No: 88045

>>.net初心者

  早速の返信ありがとうございます。
  【5S】は記述ミスですね。本当は【5D】でした。
  このようなソースの書き方もあるんですね。参考になりました。
  
  先ほども書いたのですがChr$(&H00)というのを送ろうとするとChr$(&H0)になっ  てしまうんですよね。
  これはformat関数などを使えばいいんですかね?


L/D  2005-01-27 22:39:14  No: 88046

もう一つchr$(&h0)を送ればいーんじゃないの?
そーゆー話じゃない?


75  2005-01-27 22:46:36  No: 88047

>> L/Dさん

    それではダメみたいなんですよね。
    私もそう思って、

          MSComm1.Output = Chr$(&H0) + Chr$(&H0)

    と送ってみたのですがまったく反応はありませんでした。
    測定機器の仕様上、2桁ずつでないと認識しないみたいなのかな?


.net初心者  2005-01-27 23:05:42  No: 88048

75さんがいってるのは
「VBのエディタ上でChr$(&H00)と書いたのに、次の行にカーソルを
移したらChr$(&H0)に勝手に直されてしまった。」
ということだと思うんですが。
それが0が1つになるとか2つになるとかは関係ありません。
その0を何ビットで表現しているのかが問題なんだと思います。

Dim bytA As Byte

bytA=&H00
bytA=&H0

上記2つの値はどちらも0です。
なんか文字と数値を混同されているようですね。

それで私の提示したものでもだめだったのでしょうか?


75  2005-01-28 00:08:19  No: 88049

>>.net初心者 さん

  先ほどの教えてもらったプログラムでも動きました!
  ただ、
    Dim bytSnd(4) As Byte
    bytSnd(0) = &H00
    bytSnd(1) = &H00
    bytSnd(2) = &H00
    bytSnd(3) = &H00
    bytSnd(4) = &HAB
    MSComm1.Output = bytSnd

  ならちゃんと動くんですけど、
    Dim bytSnd(4) As Byte
    bytSnd(0) = &HAB
    bytSnd(1) = &H00
    bytSnd(2) = &H00
    bytSnd(3) = &H00
    bytSnd(4) = &H00
    MSComm1.Output = bytSnd

   だと認識しないんですよね。
   データの最後が0だと動かないのかな?


.net初心者  2005-01-28 01:27:26  No: 88050

その質問に関しては、制御機器側の通信仕様が分からないので
なんとも答えようがありません。

それに最初に書いている上記で送ってるデータが全然ちがうのですが。。。
何を送ったらいいかは仕様書見てください。


.net初心者  2005-01-28 01:28:19  No: 88051

>それに最初に書いている上記で送ってるデータが全然ちがうのですが。。。
それに最初に書いているデータと上記で送ってるデータが全然ちがうのですが。。。

誤文失礼しました。


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

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






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