[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/04/19(Tue) 11:38
投稿者名:まな
URL :
タイトル:
データ送信の方法について
質問です。下記の【その1】だとうまく200msecで通信
してくれたのですが、【その2】の5個を一括で200msec
で送信しようと試みた方はうまくいきませんでした。

どのような方法が良いのか知っていましたら教えてください。

その1:
Private Sub Timer2_Timer()
'    Timer2.Interval = 200
    MSComm1.Output = Chr(1) & "AAAAA" & Chr(4)
    Do
        DoEvents
    Loop Until MSComm1.OutBufferCount = 0
End Sub

その2:
Private Sub Timer2_Timer()
'    Timer2.Interval = 200
    MSComm1.Output = Chr(1) & "AAAAA" & Chr(4)
    MSComm1.Output = Chr(1) & "BBBBB" & Chr(4)
    MSComm1.Output = Chr(1) & "CCCCC" & Chr(4)
    MSComm1.Output = Chr(1) & "12521" & Chr(4)
    MSComm1.Output = Chr(1) & "TS322" & Chr(4)
    Do
        DoEvents
    Loop Until MSComm1.OutBufferCount = 0
End Sub

よろしくお願いします。

投稿時間:2005/04/19(Tue) 12:53
投稿者名:NDK
Eメール:
URL :
タイトル:
Re: データ送信の方法について
> 質問です。下記の【その1】だとうまく200msecで通信
> してくれたのですが、【その2】の5個を一括で200msec
> で送信しようと試みた方はうまくいきませんでした。
>
> どのような方法が良いのか知っていましたら教えてください。

 設定された速度が遅いとか...
ちなみに、タイマー処理内で「DoEvents」を使うと、永久ループに
なりませんか?

投稿時間:2005/04/19(Tue) 12:55
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: データ送信の方法について
1.なぜ、Timerイベントを使っておられるのですか?
2.送る文字列を連結して一度で送ればいいのでは?

投稿時間:2005/04/19(Tue) 13:42
投稿者名:まな
URL :
タイトル:
Re^2: データ送信の方法について
Chr(1)とChr(4)の間に5byteデータの合計7byteしか送れない
仕組みになっています。受信側はこの仕様で作成してしま
っており、連結が出来ないのです。

DoEventsは使用しても永久ループにはなってないと思うのですが。
また、タイマーイベントは、周期送信を行いたいと思い使いました。

たまに取りこぼしが起きたり(送りこぼし?)もしてしまい
ます。

タイマーイベント内で周期送信し、OnCommイベント内で、受信したデータ
は表示するようにしています。

投稿時間:2005/04/19(Tue) 14:18
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: データ送信の方法について
> DoEventsは使用しても永久ループにはなってないと思うのですが。
タイマーイベント 自体が永久ループでは

> また、タイマーイベントは、周期送信を行いたいと思い使いました。
貴方が言っている周期送信とはどのような事ですか?
通信速度 7バイト送信毎の間隔。
今の使い方ならCommandButton の Click イベントに書いて処理を1秒間に5回以上の速さで
CommandButtonのクリックを繰り返しているのと同じ事かと思うのですが。

タイマーイベントを使用するならインターバルの範囲内に処理が完了するような処理が
必要で、今回のような一回きりの処理にタイマーイベントを使っても意味がないのでは。
それとも同じデータを延々と送る必要があるのでしょうか?
実際に使っているコードと質問されたコードでは違う物なら、質問される以前の問題ですが。

CommandButton の Click イベントで For 〜 Next 等でデータの個数分ループすればいいの
では、その中で送信待ち時間が必要なら設けたらどうですか?
(通信速度の設定は、Settings プロパティで)

投稿時間:2005/04/19(Tue) 18:24
投稿者名:NDK
Eメール:
URL :
タイトル:
Re^3: データ送信の方法について
> Chr(1)とChr(4)の間に5byteデータの合計7byteしか送れない
> 仕組みになっています。受信側はこの仕様で作成してしま
> っており、連結が出来ないのです。

 推測ですが、Chr(1)とChr(4)を先頭文字、終了文字の判別に使われていますか?
それだったら、花ちゃんさんがおっしゃる通り連結可能だと思われます。

> DoEventsは使用しても永久ループにはなってないと思うのですが。
> また、タイマーイベントは、周期送信を行いたいと思い使いました。
 タイマーイベントの処理中に、又タイマーイベンドが発生...と
繰り返してる可能性がある様に思います。
受信側のPGが1行毎に読み込んで何らかの処理を行なっていませんか?

投稿時間:2005/04/20(Wed) 08:13
投稿者名:まな
URL :
タイトル:
Re^4: データ送信の方法について
間の5byteのデータをChr(1)とChr(4)で検出するということにしております。
それ以上又はそれ以外の情報が乗ってきたらNAKを返すという仕組みにし
ています。

確かにタイマーイベント内に書くと、終了前に発生することがありそうです。

受信側は、「AAAAAアドレス内の情報をください」という命令に対し、情報を
乗せた返信を送ってくるのですが、送る前に別のアドレスの情報を返信しな
さいという命令がきた時の処理がされていませんでした。

投稿時間:2005/04/20(Wed) 08:46
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: データ送信の方法について
ひょっとして受信処理もタイマーイベント内に書いていませんか?

投稿時間:2005/04/20(Wed) 13:44
投稿者名:まな
URL :
タイトル:
Re^6: データ送信の方法について
いえ、もちろん受信はOnCommonイベントに記述しています。
通信は、思ったよりも大変な気がしてきました。。。

後、10進から2進、又は16進から2進への変換関数ってない
気がするのですが、自分で変換ルールを作るしかないのでしょうか?

データを2進で表示するスベが見つかりません。教えていただけないでしょうか?
お願いします。

投稿時間:2005/04/20(Wed) 14:16
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^7: データ送信の方法について
hhttp://www.google.co.jp/search?q=10%90i+2%90i+16%90i+%95%CF%8A%B7+VB&hl=ja&ie=Shift_JIS&btnG=Google+%8C%9F%8D%F5

hhttp://www.google.co.jp/search?q=MSComm&hl=ja&ie=Shift_JIS&btnG=Google+%8C%9F%8D%F5

hhttp://www.bcap.co.jp/hanafusa/hazimeni.htm#no2

投稿時間:2005/04/20(Wed) 14:59
投稿者名:まな
URL :
タイトル:
Re^8: データ送信の方法について
ありがとうございます!解決です。