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を始めて間もない初心者ですがどうかよろしくお願いします。
> 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
それでもうまくいかない場合はポートを開いたり閉じたりするのを
別のタイミングでやってみてください。
>>.net初心者
早速の返信ありがとうございます。
【5S】は記述ミスですね。本当は【5D】でした。
このようなソースの書き方もあるんですね。参考になりました。
先ほども書いたのですがChr$(&H00)というのを送ろうとするとChr$(&H0)になっ てしまうんですよね。
これはformat関数などを使えばいいんですかね?
もう一つchr$(&h0)を送ればいーんじゃないの?
そーゆー話じゃない?
>> L/Dさん
それではダメみたいなんですよね。
私もそう思って、
MSComm1.Output = Chr$(&H0) + Chr$(&H0)
と送ってみたのですがまったく反応はありませんでした。
測定機器の仕様上、2桁ずつでないと認識しないみたいなのかな?
75さんがいってるのは
「VBのエディタ上でChr$(&H00)と書いたのに、次の行にカーソルを
移したらChr$(&H0)に勝手に直されてしまった。」
ということだと思うんですが。
それが0が1つになるとか2つになるとかは関係ありません。
その0を何ビットで表現しているのかが問題なんだと思います。
Dim bytA As Byte
bytA=&H00
bytA=&H0
上記2つの値はどちらも0です。
なんか文字と数値を混同されているようですね。
それで私の提示したものでもだめだったのでしょうか?
>>.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だと動かないのかな?
その質問に関しては、制御機器側の通信仕様が分からないので
なんとも答えようがありません。
それに最初に書いている上記で送ってるデータが全然ちがうのですが。。。
何を送ったらいいかは仕様書見てください。
>それに最初に書いている上記で送ってるデータが全然ちがうのですが。。。
それに最初に書いているデータと上記で送ってるデータが全然ちがうのですが。。。
誤文失礼しました。
ツイート | ![]() |