• 締切済み

VB.netでタイマーがスタートしません

VB.netでの質問です。serialportコントロールを使って232Cのデータを受信したらTimer1.Enabeled=Trueを実行するようにしているのですが、タイマーがスタートしません、何か、良い方法はありますでしょうか?

みんなの回答

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.4

この「省略したコード」ならTimerに正しくイベントが割り当てられていればちゃんと動作すると思います。 これで動作しないなら、SerialPort.DataReceivedイベントハンドラの起動自体がそもそも怪しいです。

回答No.3

手元の環境で試してみましたけど問題ないようです。 ここのイベントが発生していないだけではないですか。 Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Timer2.Enabled = True End Sub

回答No.2

Enabled=false で、実際スタートしたい場合は、Timer1.Start() 終了させる場合は、Timer1.End()を実行する。 でなかったっけ??

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

「タイマーが開始しない」と判断した理由をコード付きで示してください。 でないとなんとも言えません。

fujiyan200
質問者

補足

ご回答ありがとうごさいます。 プログラムは、以外のようになります。(余計な箇所は省いてあります) フォームを読み込んだ時にシリアルポートをオープンさせ、受信したらタイマー2をスタートせさて、カウントアップしたらHit!というメッセージを表示させますしかし、実際はタイマーがスタートせず、メッセージを表示しません。    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles MyBase.Load        SerialPort1.Open()    End Sub    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived        Timer2.Enabled = True    End Sub    Private Sub Timer2_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer2.Tick        MsgBox("Hit!")    End Sub

関連するQ&A

  • vb.netのタイマーについて

    こんにちわ。 vb.netのタイマー機能についての質問です。 私の理解ではタイマーをオンにし、設定時間立つとタイマーに設定してあるルーチンが「割り込み実行」される。 なんですが、 その割り込み実行した後、割り込み元のルーチンを終了させるにはどうしたらよいでしょうか? イメージは↓ Public Sub main_test() Dim aaa As Integer = 0 time_count.Enabled = True time_count.Interval = 5000 For i = 0 To 10000 Step 1 aaa += 1 Next i End Sub '切断タイマー Private Sub time_count_Tick(sender As Object, e As EventArgs) Handles time_count.Tick 'ここでmain_test()を終了させたい。 End Sub 他のやり方でも構いませんが、アドバイスのほどよろしくお願いいたします。 使用しているのは win7 VB.net2012 です。

  • VB タイマーコントロールをインデックスを使用し130個作成しました。

    VB タイマーコントロールをインデックスを使用し130個作成しました。 タイマーイベントの表記はどのようにするのでしょうか。 Private Sub Timer(0)_Timer()  ~ End Sub とするとエラーになります。タイマーコントロールのインデックスの使い方が分かりません。よろしくお願いします。

  • 続・タイマーとShowdialog(VB2010)

    タイマーコントロールについて の続きになります。 一つ方法を考えました。いくつか問題ありですが・・。 ApplicationEvent.vbの部分を Namespace My Partial Friend Class MyApplication Protected Overrides Function OnInitialize( _ ByVal commandLineArgs As _ System.Collections.ObjectModel.ReadOnlyCollection(Of String) _ ) As Boolean 'スプラッシュウィンドウを表示する最短時間を0.5秒にする Me.MinimumSplashScreenDisplayTime = 500 Return MyBase.OnInitialize(commandLineArgs) End Function      'スプラッシュスクリーンのタイマーコントロール設定 Friend Sub Splash() With SplashScreen1.Timer1 .Enabled = True .Interval = 500 End With SplashScreen1.Timer1.Start() End Sub ' この書き方あってますか?とりあえずは反映されてるようですけれど・・・ End Class End Namespace SplashScreen1の部分を Public Class SplashScreen1 Friend Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click     ' クリックで閉じる DialogResult = DialogResult.OK Me.Close() End Sub Friend Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick ' タイマーコントロール発動時、瞬時に停止させる。スクリーンは消えないように。 Me.Timer1.Enabled = False Me.ShowDialog() End Sub End Class と、してみましたが・・・問題が発生するのです。 この時、スクリーンフォームがMe.ShowDialog()と書いてあるにもかかわらず、 メインフォームとともに操作可能・・つまりモードレスであるShowで表示されるのです。上記のコードを実行してもらえれば分かると思いますが・・。 また、メインフォームが前方に、スクリーンフォームが後方に行ってしまいます。これはどのようにすれば良いでしょうか? Me.TopMost = True としても駄目でした。 BringToFrontを使っても同じでした。

  • VB.NETでタイマー作成

    タイトルのとおり、VB.NETで、指定した時間(分単位)を過ぎたときにアラームをならし、メッセージを出すというアプリを作成しています。 はじめは「Sleep」を使っていたのですが、スリープしている間は操作が利かなくなってしまうため、「Timer」コントロールを使って、数えたいと思っています。 どのようなコードが考えられるでしょうか?教えてください。

  • タイマーがうまく動かない

    VB6.0(SP5)で、バッチファイルを実行後、5秒待つようにしたいのですが、うまく動きません。 Dim ping_count As Long Private Sub Command1_Click() Shell ("executeping.bat") Timer1.Interval = 1000 Timer1.Enabled = True Do Text1.Text = "ただいま実行中" Timer1_Timer Loop Until ping_count = 5 Text1.Text = "終了" Timer1.Enabled = False End Sub Private Sub Timer1_Timer() ping_count = ping_count + 1 Text1.Text = "ただいま実行中" End Sub デバックで動かすと、ちゃんとループを5回繰り返してテキストボックスに「終了」と表示するのですが、実行するといきなり「終了」を表示してしまいます。 ループの中のTimer1_Timerをコメントにすると、デバックでは延々ループを続け、実行するとフリーズしてしまいます。 そもそもタイマーの使い方が間違っているのでしょうか? 教えてください。よろしくお願いします。

  • VBのタイマーコントロールについて

    VB2005のタイマーコントロールで疑問があります。 ピクチャーボックスコントロールにラベルを貼り付けて タイマーコントロールで文字がスクロールする プログラムを作ったのですが、 タイマーコントロールのインターバルを10msから120msまで 500回タイマーのイベントをカウントしたタイムとストップウォッチで 計ったタイムを比べたらズレが生じることが分かりました。 人間の手で計っていますが、計測方法としては、タイマーをスタートするボタンと同時にストップウォッチのスタートを押し、カウンターが500回で止まった時点でストップウォッチを止める方法でWindowXPでCPUがCore2 DuoのパソコンとWindowsMeでCPUがPentiumIIIのノートパソコンで下記のように計測しました。 WindowsXP 10ms…8秒24、20ms…15秒84、30ms…15秒82、40ms…24秒64、50ms…31秒60、60ms…31秒72、70ms…41秒21、80ms…47秒40、90ms…47秒32 後省略 WindowsMe 10ms…28秒25、20ms…28秒21、30ms…28秒10、40ms…28秒23、50ms…28秒28、60ms…57秒20、70ms…57秒43、以下ほぼ一緒なので省略110ms…56秒93でした。 その後、VBのヘルプの検索で、Windowsのタイマーの精度は55msとあるのを発見したのですが、WindowsMeのノートパソコンでは、55msの精度にあったデータが帰ってきたのですが、 WindowsXPのパソコンは、どう見ても内部精度は違うような結果に見えます。 どなたかタイマーの精度について知っておられる方、教えてもらえますか? よろしくお願いします。

  • VB6.0とVB.NETの違い

    学校の実習での復習で分からないところがありまして 文献を調べたのですが、解決しなかったので教えてください。 最近VB.NETを使う機会が多くなりまして、VB6.0との違いについて悩んでおります。 かつて、VB6.0で基礎的な参考書にデータコントロールを使用してのデータベース(エクセルを用いての)を作成したことがあったのですが、VB.NETにしてからは、同じ方法でのアプリケーションの作り方(データコントロールとエクセルを使っての方法)がわからなくなってしまいました。 どなたか、教えてください。おねがいします。

  • VB.NETで精巧なタイマーを使いたいのですが……。

    VB.NETで精巧なタイマーを使いたいのですが……。 Environment.TickCountを使っても上手くいかずで。 システムから分秒を取得して、どうたらこうたらとしてみましたが 結局、私やネット知識だけではどうしようもなく、ここに来ました。 音楽の繰り返し再生のために使いたいのですが どなたか教えて頂ければと、思い質問しました。 ソフトは .NETの2008です。

  • VB.NET(2005)の"SerialPort" RTSラインを制御

    VB.NET(2005)の"SerialPort" RTSラインを制御したいです。 やりたい事は、「パソコンから通信相手の機器へデータを送信している間だけ、RTSをHIGHにする」ということです。データ送信完了と共に、RTS信号をLOWにしなくてはなりません。 SerialPortにあるRtsEnableをTrueにして、オシロで確認してみたのですが、RTS信号はHIGHに張り付いてしまっていて、全く動いていませんでした。 同じくDtrEnableをTrueにしても、同じでした。 Handshakeプロパティを"RequestToSend"に設定してみたのですが、これもまた同じ結果でした。 どなたかご存知の方がおられましたら、解決策をご教授いただければ幸いです。

  • vb.net タイマーに引数を渡す

    vb.net(visual studio 2010)です。趣味(もちろん素人です。)でソフトを作ってます。timerに引数を渡すことはできるのでしょうか。integer型の引数を渡したいです。的外れな質問かもしれませんが、実現できたらうれしいです。よろしくお願いします。

専門家に質問してみよう