VB6.0のMS-comコントロールを使ってシリアル機器と通信するには?

解決


きくち  2004-11-22 21:55:06  No: 86812

こんにちは。最近VB6.0を使い始めた者です。よろしくお願いします。

PCからシリアル機器にアクセスしてデータをやり取りするプログラムを作りたいのですが、どうも私が作ったプログラムでは機器の方が反応してくれません。

【ハイパーターミナルでは通信は出来ましたので機器やケーブルには異常はないかと思います。】

となるとプログラムの方ですが、VB初心者の私には何処が悪いのか分かりません。コードを載せておきます。
---------------------------------------------------------------------
Private Sub Command1_Click()
    MSComm1.PortOpen = True
    MSComm1.Output = Text1.Text
    Text2.Text = MSComm1.Input
End Sub

Private Sub Form_unLoad(cansel As Integer)
    MSComm1.PortOpen = False
End Sub

もしかしたらすごい勘違いをしてこのコードを書いているのかも知れません。
もしよろしければアドバイスおねがいします。または勉強になるサイトのアドレスでもかまわないのでお教えいただければ幸いです。

すいませんがよろしくおねがいします。


GOD  2004-11-23 00:46:04  No: 86813

ざっと見たところ明示的に使用するポート番号、通信速度とかの設定はしていない
ようですが大丈夫でしょうか?
あと、送信した後にすぐに受信していますが、きっとそんなに早くデータは来ない
ですよ。ウェイトを入れた後、受信、OnCommイベントで受信、Timer等でポーリン
グして受信のいずれかの処理をしないと。


きくち  2004-11-25 07:27:45  No: 86814

ご返答ありがとうございます。

comの設定やデリミタのことを何もしてないのが原因でした。
おっしゃるとおりです。送信した後にすぐ受信ではデータがこないので、Command1ではポートを空けて送信バッファにコマンドを入れ、機器に送信するだけにして、新しくCommand2とText2を設けてクリック時に受信バッファからText2にデータが来るようにしました。

しかしこれだと二度手間なのでボタン一つで出来るようにウェイトを入れようかと思っています。とりあえずググッてみます。

ありがとうございました。VB初心者ですのでまたここにおじゃまさせていただくことがあると思います。そのときはよろしくおねがいします。/(__)/


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

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






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