- ベストアンサー
VBでRS232Cの制御について。
通信のデータ長やパリティ、ポーレート等の設定を”SETTINGS”でおこない、ポートをオープンして外部機器にデータを送る際、ここでは、データをバイナリデータで送らなければなりません。 STX,アドレス,チェックサム,ETXの順にそれぞれアスキーコードで16進数に変換して送ってますが、うまく通信できません。 教えて頂けませんか。 素人でごめんなさい。 この部分のサンプルプログラムがあれば最高なんですが・・・。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>送信してデータが送られているようです。 >(RS232C→RS485変換にて計測機器に送信。その際LEDが瞬間的に点灯します) 送信できている証拠として、LED点灯ですか... 確かに計測機器に何らかの信号は送られているのでしょうが、 これでは正しいデータかどうかがわかりませんね。 一つずつつぶしていきましょう。 まずラインモニタ等で、本当にパソコンから正しい信号を送っているかどうかの 検証をして下さい。 ラインモニタがなければ別のパソコンでバイナリ通信ができる通信プログラム でもいいです。その場合バイナリをASCIIコードなどで文字表示できるソフトで。 私は確か簡単なプログラムを作って検証しました。 またソフト的に気になる点を書きます。 1)バイナリ通信では、Byte変数を使う 2)透過コードの扱い バイナリ通信ではテキスト通信の時のようにSTX(Start of Text)のような 特定の1バイトのコードに意味を持たせることができないので、 透過コードといって、有効データの通信の始まり、終わりを数バイトの コードで表します。 これは機器によって異なるので、機器の仕様書を見てください。 私が扱った機器では、10Hと02Hが連続するとSTX、10Hと03Hが連続するとETX、 その間のコードが有効データでした。 有効データの中にはデータバイト長やチェックサムが入るので、例えば 偶然にノイズで10H+02Hと10H+03Hが入っても、有効かノイズかの判断が できます。 以上のことを確かめて見てください。
その他の回答 (1)
- prome
- ベストアンサー率32% (64/196)
私も9766さんと同じようなバイナリデータの通信プログラムをVB で作りました。 9766さんの場合、どの部分がどのようにうまく通信できないでしょうか? それを教えていただければ何かお役に立てるかもしれません。 基本的なことですが、InputModeプロパティは大丈夫でしょうね? ComInputModeBinary(=1)にしないとダメですから。
補足
どうもありがとうございます。 MSComm1.CommPort=1 MSComm1.Settings="9600,n,8,1" MSComm1.PortOpen=True MSComm1.InputMode=comInputModeBinary 送信してデータが送られているようです。 (RS232C→RS485変換にて計測機器に送信。その際LEDが瞬間的に点灯します) データが間違っていても何らかの信号が帰ってくるはずなんですが・・・。 メールを出しても返事のない人みたい。(おこられてしまうかな) 接続は間違いありません。 ヒントをおしえてください。
お礼
バイナリ形式とメーカーから教えられたのに、再度確認するとテキスト形式でコマンドを送ることが判明しました。 ヒントのラインモニタで確認しながら接続。 通信はうまくいきました。 お騒がせいたしました。 どうもありがとうございました。