現在system.timers.timerを使用しています。
仕様としては、タイムアウト内に電文がこなければ再送するというものです。
Timerの使い方はわかったのですが、その途中で電文受信のイベントを走らすことって無理なのでしょうか?
今、わからないのはタイムアウトになるのを待ってから受信イベントが走っているので、
どうにかタイマーが動いている時でも中止して受信イベントを走らせたいです。
何か方法はありますか?
また、どういうふうにした方がいいとかあれば教えてください。
わかりにくい説明になったと思いますがよろしくお願いします。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
Dim rcvBytes As Byte() = udp.Receive(remoteEP)
を直接呼ばず、タイマをもう一個用意して、タイマイベントで実行するようにしたらどうかな?
この回答への補足
すみません・・・。
初心者なものでどうしたら良いのかちょっとわからないです。
ご迷惑おかけします。
下記のページを見つけました。
でも、実際どうしたら良いか・・・って感じで調べてみます・・・。
http://www.users.gr.jp/ml/archive/viewer.aspx?na …
No.4
- 回答日時:
ここが参考になりませんか?
この回答への補足
お返事ありがとうございます!
URLを参照したんですが、
Dim rcvBytes As Byte() = udp.Receive(remoteEP)
のときに待機状態になるので、作業ができなくなると思うんです。
No.3
- 回答日時:
すいません、レスがあるのを知りませんでした。
遅れましたが書いておきます
------------------------------------------------------------------
※TimerEventの変更箇所
------------------------------------------------------------------
TimerEvent関数をステータスを返すように変更
Public Sub TimerEvent(ByVal sender As Object, ByVal interval As Integer)
↓
Public Function TimerEvent(ByVal sender As Object, ByVal interval As Integer) as boolean
内部のループ内で、受信を行う
Do
Windows.Forms.Application.DoEvents()
If Not Status = TimerStatus.timRun Then
TimeOutFlgA = True
Exit Do
End If
'ここで受信チェック
'If 受信ステータス が正常 Then
TimerEvent = True
'End If
Loop
------------------------------------------------------------------
※OutouMachiの変更箇所
------------------------------------------------------------------
Do While TimeOutFlgA
If TimerEvent(Me, ini.TimeOut) Then
'正常終了
'さらにループ抜け
Else
'タイムアウトカウントを1増やす
TMaxCnt += 1
End If
If ini.MaxCount = TMaxCnt Then
TimeOutFlgA = False
Return
End If
Loop
この回答への補足
たくさん書いていただきありがとうございます!
ひとつわからないことがあるのですが、UDPで通信している場合、受信ステータスのチェックってできるでしょうか?
TCPだったらわかったのですが、UDPはわかりません。
どうしたら良いか知っていたら教えて下さい!
No.2
- 回答日時:
以前サンプルを載せた者です。
>Timerの使い方はわかったのですが、その途中で電文受信のイベントを走らすことって無理なのでしょうか?
以前のサンプルそのまんまで、判定処理を通るはずなのですが、、、
DO~LOOPを使用していますか?
ループ内で、タイムアウト判定を行っていますか?
ループ内に、判定処理を入れてますか?
DO~LOOPがタイマイベント内のコードになっていませんよね?
もし、以前のサンプルと作りが違うのであれば、現在どうなっているかが想像できません。
現在のコードを公開した方が、解決が早いと思います。
この回答への補足
お返事ありがとうございます。
Public Class ClsDa01
Public TimeOutFlgA As Boolean
Private TMaxCnt As Integer
''応答電文待ち Timer開始
Private Sub OutouMachi()
Dim ini As New IniData
Dim cls As New ClsUDP
TimeOutFlgA = True
ini = cls.GetIniData
Try
Do While TimeOutFlgA
Call TimerEvent(Me, ini.TimeOut)
''リトライ
TMaxCnt += 1
If ini.MaxCount = TMaxCnt Then
TimeOutFlgA = False
Return
End If
Loop
Catch ex As Exception
Return
End Try
End Sub
''Timer開始
Public Sub TimerEvent(ByVal sender As Object, ByVal interval As Integer)
Call TimerStart(interval)
TimeOutFlgA = False
Do
Windows.Forms.Application.DoEvents()
If Not Status = TimerStatus.timRun Then
TimeOutFlgA = True
Exit Do
End If
Loop
End Sub
End Class
これでわかるでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ガラケー・PHS SMSメールの受信遅延原因はガラケー自体の欠陥では 8 2022/08/06 11:46
- Windows Me・NT・2000 教えてほしいです! ガレリアPCを使用してます。 最近、起動してから少し経つと画面が暗くなりシグナル 1 2022/04/28 11:27
- その他(メールソフト・メールサービス) hotmail タイムアウトエラー 2 2023/04/16 18:48
- 国産バイク レギュレーター交換してもまたパンク。 ヤマハのTMAX500(sj04j)です。 電圧計を付けてるの 5 2023/02/03 22:02
- 通信費・水道光熱費 実家の家電なんですが、昨夜20時頃知人から電話があったそうです。母は子機の方でとり電話を切ったつもり 3 2022/09/03 11:13
- タブレット 10インチ中華タブレットで公衆フリーWiFiの受信が弱いのはなぜ? 5 2022/10/14 12:06
- その他(悩み相談・人生相談) この場合どうしたらいいのでしょうか。 経緯を説明したいので長文になってしまいました。 話の中で、イベ 1 2023/01/29 07:09
- その他(メールソフト・メールサービス) メールサーバーは「PC側がメールをDL済みか否か?」を何を以て感知するのか? 2 2022/12/20 14:56
- iPhone(アイフォーン) ショートメールの文字数制限について。 3 2023/01/24 11:37
- デート・キス 趣味繋がりで知り合った男性を落としたい 3 2023/07/03 13:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
アクティブセルから、A列最終行...
-
VBAで3秒だけ時間を止めたい
-
CSVファイルの特定の行だけを読...
-
エクセルの当番表を作っていま...
-
「偶数・奇数の和」のフローチ...
-
エクセル関数で1〜12の数字がル...
-
DoEventsが必要な理由について
-
vbscriptでIE自動入力(途中で...
-
VBA Dir関数でファイルをループ...
-
UWSCの終了の仕方
-
フラグについて
-
.Netのタイマーについて
-
レインボー色ってどうやって表...
-
c++ ランダムウォーク
-
VB.NETで素因数分解のプログラ...
-
GIFアニメをループさせたくない
-
WHILE (CHKIMG(”A.bmp”)=FALSE)...
-
ListBox 複数選択 で オートフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
VBAで3秒だけ時間を止めたい
-
範囲指定したセルを1つずつ飛...
-
Escキーを押すと、中断する時と...
-
DOSコマンドのループ内のTIMEコ...
-
vbscriptでIE自動入力(途中で...
-
乱数の桁数指定、または範囲指定。
-
GIFアニメをループさせたくない
-
プログラミングについて。 1つ...
-
エクセルの当番表を作っていま...
-
テキストボックスの名前に変数...
-
ループフリー
-
vb.netからエクセル関数書き込み
-
CSVファイルの特定の行だけを読...
-
VBA for i=1 to lastrow
-
どなたかこのプログラミングを...
-
Do whileでExitせず、ループの...
おすすめ情報