したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

VB2005でDelay(Wait)タイマーを作るには

1こじら:2010/03/15(月) 22:29:04
こんばんは。RS232Cではお世話になりました。おかげ様で送受信
できるようになりました。ありがとうございました。
 次に起こった問題なんですが、現在のRS232Cの通信はTX,RX端子のみ
でおこなっているので、PCからの送信時、相手のバッファオーバーフロー
が分かりません。
 しかし、バッファサイズは分かっているので、それを見越した
送信データ数とWaitタイマーで現在はしのいでみようと考えて
います。しかし、VB6の時のようにタイマーがうまく動きません。
Form_Load
Timer1.Interval = 1000
Timer1.Enable = False
:
:
Loadのエンド

Dim Acount as integer
Dim TimerCount as integer

:
送信処理
ACount = 2

For i as integer=0 To X
送信関数(data(i)) 'data配列に送信したいデータを設定
TimerCount = 0
Timer1.Enable =True
Do while Acount>TimerCount
(空)
Loop

Timer1.Enable =False

Next



Private Sub Timer_Tick 〜
 TimerCount = TimerCount+1
end Sub


というようにしているのですが、Do While文で帰ってこなくなります
処理がないことがだめなのかと、この文の中に仮演算 a=a+TimerCountとしても
かえってこなくなりました。
ちなみに、VB6の時につかっていたプログラムで動いていたのですが
正しい書き方かどうか知らず動いたので使っていました。

ネットとかで調べると、VB2005などではマルチタスク処理にすべき
とありましたが、Waitをどのように改造すればよいのでしょうか。

題目とことなるのですが、ICのレジスタアクセスを行うのに
Classプロパティを使用すると良い(質問14)と以前アドバイス頂いた
のですが、例えば512アドレス(レジスタ)あれば、512個のプロパティー
を作る必要があるのでしょうか?

1つのプロパティーを何とか512個のインスタンス化処理みたいな
ことでうまくできないでしょうか。
 プロパティーの中身を替えた時など、全てのプロパティー記述
を直すのが一苦労なので、なにかうまい方法あれば教えていただけ
ないでしょうか

よろしくお願いします

2igoten:2010/03/16(火) 10:52:53
プログラムの構成が良いか悪いかは提示されたコードが
部分的なので判りませんが、Do while Acountに関しては
このループの中に
Application.DoEvents()
を入れて見て下さい。

3igoten:2010/03/16(火) 14:23:18
Whileは単にタイマーとして使用しているんですね。
それなら
Private Sub timeWaiteTime(ByVal waiteTime As DateInterval)
Dim startTime As DateTime = Now
While (Now.Subtract(startTime).TotalMilliseconds < waiteTime)
System.Threading.Thread.Sleep(1)
Application.DoEvents()
End While
End Sub
と言う関数を作っておいて
timeWaiteTime(5000)
と呼びだした方がいいかも知れません。

4こじら:2010/03/20(土) 00:39:46
有難うございます。(お礼の挨拶遅くなりすみませんでした)
おかげさまで、 PICとPCとで通信させ、操作することができるように
なりました。
HPと、掲示板でアドバイス頂いたおかげです。
ありがとうございました。

現在、そのソースは色々デバッグして、ソースが非常に乱雑で見にくいので、
関数のモジュール参照化と、RS232Cをモジュール化をこころみて整理しよう
としています。
RS232Cモジュールに関しては、また他のソフトでもこの通信モジュールのファイル
を読ませれば簡単に使用できるようにしたいとも思っています。

そこで御相談なのですが、GUI作成時、Form1にSerialPort1を追加
してForm1クラス上に全て記述して使用していますが、
独自関数や、UART操作関数関係を別ファイルに作成し、FORM1では
それらのファイルから使用する、参照するといった方法はないでしょうか
クラスでできるかと思ったのですがSerialPort1なんかは、参照ファイル
(クラスファイル)のなかでFORM1.SerialPort1.〜というような形にし
なければ、エラーになりました。

度々で申し訳ありませんがアドバイスお願いします。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板