- ベストアンサー
ハイパーターミナルが返す応答コード(センサ機器への応答)
あるセンサー機器を使用しています。 RS232Cを通じて数値をPCへ転送するような仕組みになっています。 ハイパーターミナルを使用し、その様子がうかがえますが、VBを使って単純にポートオープンして待っているだけでは機器がフリーズ(待ち状態?)になってしまいます。 ハイパーターミナルは、通常、信号がくると応答コードを返していますか?またそのコードは何ですか? アドバイスよろしくお願いします。m(__)m
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ハイパーターミナルでは通信が確認できているとのことですので、ケーブル等の純ハード的な接続ミスなどはないとの前提で考察してみます。(昔のPC9801に対応したモデルだとDTRとDSRをループバックしないと動かなかったりします。が、今回は関係なさそうなのでパスしておきます。) RS232Cでの通信は ビットレート、ストップビット、パリティ、ワード長、フロー制御の全てが機器とPCとの間で一致していなければなりません。 このうち、フロー制御以外の要素は、単純に出てくるビットデータの取り扱いの問題ですので、文字化けしたりするだけで、通常は「機器のフリーズ」という状況にはならないと思います。 ということで、考えられるのはRTS/CTSフロー(いわゆるハードフロー)がいずれかで異なるか、もしくはDTS信号がVB側からだされていないか、というぐらいが考えられるのではないでしょうか。 とにかく、#1さんが答えてられるように、制御設定が機器の設定に合わせてあるかを今一度確認される方がよろしいようです。
その他の回答 (3)
- mbp
- ベストアンサー率41% (95/229)
VB側の通信設定がどこか違っているのではないでしょうか?(BaudRate,DataBit,Parity等) ハイパーターミナルだとデータが送られてくると自動検出してしまうので、少々違っていても繋がってしまいます。 応答コードを勝手に返すことは無いと思います。 VBTermで設定を色々試して見られてはいかがでしょうか? VBTerm.vbp サンプル アプリケーションは、MSDN CD のSamples ディレクトリにあります。
お礼
サンプルを見たところ、違いが見つかりました。 RTS/CTS?のところでした! ツボをついたアドバイスありがとうございました。 助かりました。ありがとうございます。
- silverbear
- ベストアンサー率25% (163/639)
ハイパーターミナルは何もしてません。 もし何か原因があるとするとRTS(送信要求)、CTS(送信可)だと思います。 VBで設定できると思いました。 あとはボーレート、パリティービット等の設定が合っているか、VBから何か変な文字を出していないかを確認した方がいいと思います。 ある機器の送信コード、受信コードが分からないので俺にはこれ以上は分かりません。
お礼
ありがとうございます。 その部分をもう少し調べてみます。 通信の仕様については、メーカー側からも公表されておらず、ただわかることがハイパーターミナルで受信した場合は問題なく連続動作するということでしたので、こう書きました。 ありがとうございます。
補足
VBのサンプルにあるVBTermでテストしたところうまくいっていました。おっしゃるとおりでプロパティにあるRTSとかCTSの違いが原因のようです。 まだ表示がうまくいきませんが、根本的問題は解決したとおもいます。 お騒がせしてすみませんでした。ありがとうございます。
- marimo_cx
- ベストアンサー率25% (873/3452)
質問文内の主語が不明確なのと、用語の使い方が不明な部分があってよくわかりません。 >単純にポートオープンして待っているだけでは機器がフリーズ(待ち状態?)になってしまいます。 これは具体的にどういうことを表しているのですか? 機器とはPCですか?センサー機器のことですか? センサー機器のことであればフリーズとは具体的にどのような動作(状態)の事を指しているのですか? ところで、もしやとは思いますが、通信パラメータがターゲット機器とPCがばらばらになってるという事は無いでしょうね?(ボーレートが合っていても制御ビットやフロー制御が違えば当然通信は出来ません) >ハイパーターミナルは、通常、信号がくると応答コードを返していますか? リザルトコードというものは普通制御(センサー)機器側が吐き出すものですが、一体どういう意味でしょう? もしかしてローカルエコーの事ですか? ローカルエコーのことならハイパーターミナル内の設定上の事ですので、シリアルラインに流れる信号とは全く関係ありません。
補足
機器はセンサー(測定器)です。 ハイパーターミナルを使用して、測定値を受信する場合は問題なく連続動作します。 ただしハイパーターミナルを終了し、VB側でポートをオープンし、センサーで計測しても、1度目の測定で停止し、反応がなくなります。そういう意味で、ハイパーターミナルを使用しているときは、センサ側になにか応答が返っているのかと思い、こういうことを書きました。 ポートの設定は間違いありません。 ローカルエコーのことでもありません。
お礼
先の返事でもかきましたが、MSCommのプロパティ設定が問題だったようです。 丁寧なアドバイス助かりました。 ありがとうございました。