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以上としてください
という記述があるんですが,これを満たしてないという可能性も疑ってます.
どうやれば,この時間のタイミングで送れるんでしょうか?
長くなってすいません,なにかヒントなどおねがいします.
No.2
- 回答日時:
回答ではないですが参考までに
COMが2個あるのならCOM1とCOM2を
クロスケーブルで繋いで片方でフリーのターミナル
ソフトを動かせばデータが来てるかどうか判ります。
遅くなって申し訳ありません.アドバイスありがとうございました.
原因が判明しましたので締め切らせていただきます.
どうやら原因は使用していたPCカードが特注で,ボーレート設定を2150にしなければいけないということでした.
しかし,VBでどうやって2150bpsを設定するのかわからず困っています.
別の質問として「ボーレートを2150にしたい!」を投稿させてもらいました.
また,よろしくおねがいします.
No.1ベストアンサー
- 回答日時:
DTR が、下がってたりしてませんか?
ケーブルの結線図もありそうです。確認して下さい。
>・レーザーに送信する2バイト間の時間間隔は6msを超えないように
だって、キャラクタ間まで注意書きつきですから・・
>どうやれば,この時間のタイミングで送れるんでしょうか?
このボーレートで、このプログラムなら時間関係はOKと思います。
>チェックする方法などご存知でないでしょうか?
PCを2台使ったり、クロスケーブルでCOM1とCOM2を接続する手や、モデムとATコマンド/レスポンスをやりとりする方法があります。
私もはじめ、MSComm の自分勝手な動作には、参ったことがあります。
MSCommのプロパティページの内容、RTS/CTSの設定など、補足があれば、詳細に回答できるかも知れません。
とりあえず、OnCommイベントの中で、送信(した後)のイベント種類を確認してみて下さい。
また、
MSComm1.Output = chr$(s(j))
と文字列で送信した場合の結果もわかるとなおよいです。
>Output プロパティ
>送信バッファに文字列を書き込みます。
なので・・
どうもありがとうございます。2日ほど留守にするので、その後、ご指摘いただいた点について調べてみたいと思います。また、よろしくおねがいします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
推しミネラルウォーターはありますか?
推しミネラルウォーターがあったら教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
mscommの受信バッファ異常について
Visual Basic(VBA)
-
Comポートについて
Windows 95・98
-
シリアルポート通信
Visual Basic(VBA)
-
-
4
VisualBasic6.0のFormat関数でmSecを表示したい
Visual Basic(VBA)
-
5
rs232cでの受信データ(mscomm)の受信方法VB6
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WriteFile()でのデータ送信がで...
-
UDP処理のエラーについて
-
ネットワークカメラの動画保存...
-
Macターミナルで実行中のプログ...
-
分を時間に変換するプログラム
-
アセンブラのタイマー割り込み
-
StrConvの使い方について教えて...
-
C++からCへのソース変換について
-
Windows10でDOSゲーム
-
Excel VBA で処理中断(DoEvents...
-
マイコンからプログラムを読み...
-
スーパーのレジで並んでいたら...
-
vba GetAsyncKeyState関数について
-
C言語 再帰処理のメリットとデ...
-
PHPで、日本語からアルファベッ...
-
C++でシェルを起動
-
解放と開放 漢字について
-
C言語で、文字とか入力されなく...
-
シャットダウン時のExcel強制終...
-
DOSコマンドでの文字コード変換...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
WriteFile()でのデータ送信がで...
-
winsockでソケット通信の開発を...
-
socket: recvはいつ,どれだけ...
-
シリアル通信の出力バッファと...
-
「スイッチングハブのバッファ...
-
SocketのSend関数でのCLOSEの検...
-
Connection reset by peer
-
WaitForMultipleObjects関数の...
-
RS232C通信(PC⇔PLC)
-
VB2005でWin32APIを用いてRS-23...
-
Linuxでのシリアル通信について...
-
UDP処理のエラーについて
-
シリアルポート通信
-
ソケット通信内 read関数について
-
TCP/IP通信プログラミングにお...
-
rs232cでの受信データ(mscomm)...
-
write関数でEAGAINのエラー発生...
-
シリアル通信ができません
-
【CAsyncSocket::OnReceive()呼...
おすすめ情報