プロが教える店舗&オフィスのセキュリティ対策術

VB6.0でMSCommを用いてシリアル(レーダとつながってる)にデータを送りたいんですがどうもうまく送れません.outputしてすぐoutbuffercountをチェックしてもcnt=0(cntは下記プログラム参照)のままでバッファにちゃんとデータが送れていないのでは?と悩んでいます.
なにが原因なんでしょうか?もしくは,他に送信バッファにデータが届いてるかどうかをチェックする方法などご存知でないでしょうか?よろしくおねがいします.



MSComm1.CommPort = 2
MSComm1.InputMode = 1
MSComm1.InputLen = 0
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True

MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0

Dim s(16) As Byte   ’←以下のデータを送りたいんですが・・
s(0) = &H2
s(1) = &H0
s(3) = &HA
s(4) = &H0
s(5) = &H20
s(6) = &H0
s(7) = &H53
s(8) = &H49
s(9) = &H43
s(10) = &H4B
s(11) = &H5F
s(12) = &H4C
s(13) = &H4D
s(14) = &H53
s(15) = &HBE
s(16) = &HC5

For j = 0 To 16
MSComm1.Output = s(j)
cnt = MSComm1.OutBufferCount
Next j

End Sub



あと,レーザーの説明書に
・レーザーに送信する2バイト間の時間間隔は6msを超えないように
・レーザーに送信する2バイト間の最小時間は55μs以上としてください
という記述があるんですが,これを満たしてないという可能性も疑ってます.
どうやれば,この時間のタイミングで送れるんでしょうか?

長くなってすいません,なにかヒントなどおねがいします.

A 回答 (2件)

DTR が、下がってたりしてませんか?


ケーブルの結線図もありそうです。確認して下さい。

>・レーザーに送信する2バイト間の時間間隔は6msを超えないように
 だって、キャラクタ間まで注意書きつきですから・・

>どうやれば,この時間のタイミングで送れるんでしょうか?
 このボーレートで、このプログラムなら時間関係はOKと思います。

>チェックする方法などご存知でないでしょうか?

PCを2台使ったり、クロスケーブルでCOM1とCOM2を接続する手や、モデムとATコマンド/レスポンスをやりとりする方法があります。

私もはじめ、MSComm の自分勝手な動作には、参ったことがあります。
MSCommのプロパティページの内容、RTS/CTSの設定など、補足があれば、詳細に回答できるかも知れません。

とりあえず、OnCommイベントの中で、送信(した後)のイベント種類を確認してみて下さい。
また、
MSComm1.Output = chr$(s(j))
と文字列で送信した場合の結果もわかるとなおよいです。

>Output プロパティ
>送信バッファに文字列を書き込みます。
なので・・
    • good
    • 0
この回答へのお礼

どうもありがとうございます。2日ほど留守にするので、その後、ご指摘いただいた点について調べてみたいと思います。また、よろしくおねがいします。

お礼日時:2001/10/16 20:21

回答ではないですが参考までに



COMが2個あるのならCOM1とCOM2を
クロスケーブルで繋いで片方でフリーのターミナル
ソフトを動かせばデータが来てるかどうか判ります。
    • good
    • 0
この回答へのお礼

遅くなって申し訳ありません.アドバイスありがとうございました.
原因が判明しましたので締め切らせていただきます.
どうやら原因は使用していたPCカードが特注で,ボーレート設定を2150にしなければいけないということでした.
しかし,VBでどうやって2150bpsを設定するのかわからず困っています.
別の質問として「ボーレートを2150にしたい!」を投稿させてもらいました.
また,よろしくおねがいします.

お礼日時:2001/10/22 12:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!