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

A 回答 (4件)

この「省略したコード」ならTimerに正しくイベントが割り当てられていればちゃんと動作すると思います。


これで動作しないなら、SerialPort.DataReceivedイベントハンドラの起動自体がそもそも怪しいです。
    • good
    • 1

手元の環境で試してみましたけど問題ないようです。



ここのイベントが発生していないだけではないですか。
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As
System.IO.Ports.SerialDataReceivedEventArgs) Handles
SerialPort1.DataReceived
Timer2.Enabled = True
End Sub
    • good
    • 0

Enabled=false


で、実際スタートしたい場合は、Timer1.Start()
終了させる場合は、Timer1.End()を実行する。

でなかったっけ??
    • good
    • 0

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


でないとなんとも言えません。

この回答への補足

ご回答ありがとうごさいます。
プログラムは、以外のようになります。(余計な箇所は省いてあります)
フォームを読み込んだ時にシリアルポートをオープンさせ、受信したらタイマー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

補足日時:2011/04/08 12:36
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qタイマーに時差をつけたい

こんにちは。

タイマーAとタイマーBがあって、タイマーA実行の後
時差(例:0.1秒)でタイマーBを動かす方法を教えてください。
よろしくお願いします。

Aベストアンサー

タイマーCを使ってタイマーA開始0.1秒後にタイマーBを開始する

Qカスタムコントロール作ってます(VB.NET)。VB.Net にVB.6のActiveX作成時にあったプロパティページ作成ができないようですが

タイトルどうりです。VBNETのカスタムコントロールでデザインモードにおけるフォームつまりプロパティページやビジュアルにプロパティボックスから設定できるようにしたいのですが、どうしたらできるでしょうか?VB6ではできたのですが、(Activexコントロール)。

よろしくお願いします。

Aベストアンサー

通常のプロパティと同じように、プロパティ ウィンドウに項目を表示して設定できるようにする必要があります。
具体的には、
1. カスタム コントロールのクラスに外部公開する Property プロシージャを作成して、内部で値を保存できるようにする。
2. そのプロパティの宣言部分で、プロパティ ウィンドウに表示するように指示する属性値を設定する。

こんな感じです。

参考URL:http://www.atmarkit.co.jp/fdotnet/winexp/winexp02/winexp02_01.html

Qデロンギオイルヒーターのタイマーの故障

デロンギのオイルヒーターの本体についているスイッチON・OFFをするための赤い棒を上げ下げするタイマーが故障して、常にスイッチON状態になりました。そこで電源タイマーにコンセントをさして使おうかと思うのですが、その際本体に悪影響はないでしょうか?また、電源タイマーで時間の狂いにくいのはどれでしょうか?
タイマーの修理はお金がかかると思うので電源タイマーで代用したいのです。

Aベストアンサー

No.2の方に補足ですが、
デロンギのオイルヒータと同じ24時間タイマーの製品もあります。
WH3301WPなど。
これは、別の電気ヒータのサービス品として使われているもので、
オイルヒータにも使えると思います。

また、デジタル式としては、
REVEX デジタルプログラムタイマー PT60D
というのが、Amazonにレビューが書いてありました。
抵抗負荷(ヒータ)で1500WはOKと思われます。

ご参考まで

参考URL:http://ctlg.national.jp/product/info.do?pg=04&hb=WH3301WP

QVB.net(ASP.net)でアクセスカウンターを作りたい(.net初心者)

VB.NETのWebアプリケーションでアクセスカウンターを作りたいのですが、ページがアクセスされた時にDBの値を+1するまではできたのですが、ブラウザの更新ボタンを押したときにアクセスカウントを+1させたくないのですが、その技術がわかりません。(更新ボタンで+1させないようにCache("StartFlag") = "ON"して、対応している、がこれに問題がある)

今作っている処理は以下の通りです。
Private Sub Page_Load
 If Not IsPostBack Then
  カウンタを+1する処理
  (ただしCache("StartFlag") がONなら+1しない)
Cache("StartFlag") = "ON"
End If
End Sub
 
ですが Cache("StartFlag") が"ON"を保持したままになってしまうので、どこのPCからアクセスしてもカウンタが+1されません。
なにか良いアイデアはないでしょうか?
例えば
1)クライアントの情報を保持しておき、
  クライアントが変化したら+1する
(クライアントの情報の取得の仕方がわかりません)
2)Cache("StartFlag") をクライアント毎のセッション変数に変えて、セッションが切れて再びアクセスされたら+1する(やり方がわかりません)

その他、参考になりそうなURLも教えていただきたいのですが、お願いいたします。

VB.NETのWebアプリケーションでアクセスカウンターを作りたいのですが、ページがアクセスされた時にDBの値を+1するまではできたのですが、ブラウザの更新ボタンを押したときにアクセスカウントを+1させたくないのですが、その技術がわかりません。(更新ボタンで+1させないようにCache("StartFlag") = "ON"して、対応している、がこれに問題がある)

今作っている処理は以下の通りです。
Private Sub Page_Load
 If Not IsPostBack Then
  カウンタを+1する処理
  (ただしCache("StartFlag")...続きを読む

Aベストアンサー

2が妥当でしょう。

Cache("StartFlag") → Session("StartFlag")

Qオイルヒーター用後付タイマー

タイマー無しのオイルヒーターをタイマー制御したいのですが
ホームセンターなどで販売しておる
タイマー 1000円から4000円ぐらいまでのもの
すべてにオイルヒーターには使用できませんとの記述があります。
オイルヒーターにもつかえるタイマーはございませんでしょうか?

Aベストアンサー

オイルヒーターは最大1500W(15A)も消費する製品です。
ヒーター使用中に電源コードをさわると微熱を持つのが判ると思います。
電源コードは当然抵抗値が小さいのですが、15Aという電流はそれでも熱するほどの大電流です。


簡素なタイマーで15Aも流すと内部が発熱して溶解、発火の原因となります。
1500Wまで対応を謳ったタイマーでなければなりません。

一応1500Wに対応した製品を紹介します。
 デジタルプログラムタイマーII グレーPT50DG
 http://www.amazon.co.jp/dp/B002YWD0ZE

アマゾンのレビューでもオイルヒーターに利用している方がいるようです。

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

VB.NET(2005)の"SerialPort" RTSラインを制御したいです。

やりたい事は、「パソコンから通信相手の機器へデータを送信している間だけ、RTSをHIGHにする」ということです。データ送信完了と共に、RTS信号をLOWにしなくてはなりません。

SerialPortにあるRtsEnableをTrueにして、オシロで確認してみたのですが、RTS信号はHIGHに張り付いてしまっていて、全く動いていませんでした。

同じくDtrEnableをTrueにしても、同じでした。

Handshakeプロパティを"RequestToSend"に設定してみたのですが、これもまた同じ結果でした。

どなたかご存知の方がおられましたら、解決策をご教授いただければ幸いです。

Aベストアンサー

VBのRtsEnable,DtrenableはTrueにするとシリアルポートをOpenするとHiになりCloseするとLoになるだけです。
一番簡単なのは送信直前にOpenし送信完了でCloseですがちゃんとした制御をするのならAPIを使用することになります。

Qキッチンタイマーについて

キッチンタイマーについて教えてください。

複数の料理を並行して行う時にどうしてもタイマーが一つでは足りない場合があるのですが、複数の時間を設定できるタイマーって売っていますか?

例:10分後と20分後・40分後と1つのタイマーで複数の時間設定ができるものを探しています。

もしそのような商品がありましたら、教えてください。
キッチンタイマーでなくても複数設定できるものでしたら教えてください。

宜しくお願いします。

Aベストアンサー

下記にようなタイマーがありますよ。

タイマー3つ設定
http://www.amazon.co.jp/dp/B0002ZLCNM/ref=nosim/?tag=biglobe06-src-link-22&linkCode=as1

タイマー2つ設定
http://www.amazon.co.jp/s/ref=nb_ss_k?__mk_ja_JP=%83J%83%5E%83J%83i&url=search-alias%3Dkitchen&field-keywords=T-177BK&x=19&y=16

QVB6からの移行したいけど、VB.NETのコントロール配列は?

VB6ではフォーム上にボタンコントロールとかを配列で作成できクリックされた時にはボタンイベントのインデックス値によってどのボタンを押されたが判断できて各処理を記述できていましたが、VB.NETでは同じようにはできないようです。オブジェクト指向的?にはこちらがいいのでしょうが、どうも面倒くさくなったなぁというイメージしかわかず、なぜこの方がいいのかという納得いく書籍とかも見つけることができていません。
どなたか、ご教授頂きたいのですがよろしくお願いします。参考になる書籍やWEBとかもありましたらお教えいただければ幸いです。

Aベストアンサー

VB6のように、コントロール配列はありません。
イベントモデルの変更によるものです。
コントロール配列の代わりとして、オブジェクト配列を使います。
残念ながら、デザイン画面でindexによる配列処理はできません。
コード画面から、Newでインスタンスを生成させる方法です。
Dim MyButton(10) As New Button

イベント処理は、
WithEventで発生させるイベントを宣言し、Handlesによって処理の定義をします。
Private Sub( … )Handles MyButton.Click
イベントプロシージャ内の配列の区別は、TabIndexか、Tagを使用します。

VB.NETへの移行の必要性は分かりませんが、
現状のVB.NETでは不便な点が多々あるようです。
また、リバースエンジニアリングの懸念が心配な言語です。私的に、2005のバージョンに期待したいです。

Qテレビをオンタイマーでつけたい。

家に2台(リビング・寝室)テレビがあるのですが、
配置を変えようと思います。

現在、寝室に置いてあるテレビはオン&オフタイマー付のもので
リビングのものには、オフタイマーしかありません。
メーカーは、どちらも同じなのですが・・・(関係ないですね。)

このオンタイマーの付いていないテレビを
オンタイマーでつける方法は、ないでしょうか?

オンタイマーでテレビが朝つかないと起きれないのです。。。

宜しくお願いします。

Aベストアンサー

>コンセントにつなぐタイマー類を使うときには、
寝るときは、テレビを消して布団に入らないといけないのでしょうか??

オンオフを何種類も設定できるので付けておいても大丈夫ですよ。

QVB.NET とドットNET(.NET)と違うのですか

Cをこれから勉強しようと思って、
「VISUL STUDIO 2005」という本を買って勉強中です
.NETというのが出てきて
VB、、C++、C##、J#を扱っているようです
そして
この、教えて、なんかで
よく出てくるのが、VB.NETで
.NETはあまりでてきません
そこで、この違いを知りたいのですが
よろしくお願いします

Aベストアンサー

ドットNET(.NET)というのはもっと広い概念です。
例えていうならスポーツという概念がドットNET(.NET)なら、VB.NETは巨人(C++が阪神で、C##がソフトバンクス...)というような関係になります。

.NETの概念をマイクロソフトの言葉で説明するならこちらのページの通りです。
http://www.microsoft.com/japan/net/basics/whatis.asp
噛み砕いて説明するなら.NETとは「製品」そのもののことを指す場合もありますし、「技術」のことでもあるし、「ガイドライン」や「指標」だったりもします。

つまりドットNETの話題が無いというのは、それ自体の概念が広すぎて話題にしようがないのです。
野球や巨人の問題で議論することはできても、スポーツについて語りましょうと言われてもとっかかりがありすぎて逆にないでしょ。

でVB.NETというのはそういった.NETの概念のもとで作られたプログラミング用のソフトのことで、C++.NETやJ#.NETと兄弟関係にあります。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報