掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
グラフのリアルタイム表示は?・2 (ID:86534)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
あれから、グラフのリアルタイム表示のプログラムを組んだのですが、なかなかうまくいきません。。みなさんがのせてくれたサンプルコードをいじってやってみたのをのせます。 'フォームが立ち上がった時の処理 Option Explicit Const TTT = 113 Public fmane2 As Variant Private Sub Form_Load() Dim n As Integer Me.Width = 20 * 567 'フォーム・ピクチャボックスの大きさ設定 '幅を20cmにし、10パルス表示 Me.Height = 6720 For n = 0 To 1 Picture1(n).Width = Me.Width Picture1(n).Height = 5550 Picture1(n).Left = 0 Picture1(n).Top = 240 Picture1(n).BackColor = RGB(0, 0, 0) '背景色を黒に設定 SCALE_DRAW n Next Picture1(1).Left = Picture1(0).Left + Picture1(0).Width Timer1.Interval = 50 Timer1.Enabled = True fname2 = Receiver.DirList.path & "\Plotpart" & Format(Now, "yyyy-mm-dd_hh_mm_ss") & ".csv" Open fname2 For Output As #10 Print #10, "Plot Data", Format(Now, "mm.dd-hh.mm.ss") End Sub End Sub Sub SCALE_DRAW(n) Dim OLD_X As Integer, OLD_Y As Integer Picture1(n).AutoRedraw = True Picture1(n).DrawWidth = 1 Picture1(n).DrawStyle = 0 Picture1(n).ForeColor = RGB(50, 110, 50) For OLD_X = 0 To 10000 Step 300 Picture1(n).Line (OLD_X, 0)-(OLD_X, 5550) Next OLD_X For OLD_Y = 0 To 5550 Step 300 If OLD_Y = 2700 Then '水平位置基準線 Picture1(n).DrawWidth = 1.3 '若干太め Picture1(n).DrawStyle = 2 '鎖線 Picture1(n).ForeColor = RGB(0, 220, 0) '明るい色 Else '標準目盛線 Picture1(n).DrawWidth = 1 '標準の太さ Picture1(n).DrawStyle = 0 '目盛標準線 Picture1(n).ForeColor = RGB(50, 110, 50) '目盛標準色 End If Picture1(n).Line (0, OLD_Y)-(10000, OLD_Y) Next OLD_Y Picture1(n).ForeColor = RGB(255, 255, 255) OLD_Y = 0 OLD_X = 0 End Sub Private Sub Timer1_Timer() Draw End Sub Private Sub Draw() Dim X As Integer Dim Y As Integer Static OLD_X As Integer Static OLD_Y As Integer '描画が端に来たらPictureを切り替える If OLD_X > Picture1(0).Width Then If Picture1(0).Left < Picture1(1).Left Then Picture1(0).Left = Picture1(1).Left + Picture1(1).Width Picture1(0).Cls SCALE_DRAW (0) Else Picture1(1).Left = Picture1(0).Left + Picture1(0).Width Picture1(1).Cls SCALE_DRAW (1) End If OLD_X = 0 End If '常に右側のPictureに描画 If Picture1(0).Left < Picture1(1).Left Then OLD_X = X OLD_Y = Y X = 0.01 * 567 '標本点の間隔を0.01秒とする Y = CSng(Receiver.strData) 'Yに受信データ(strdataー文字列)を代入する Picture1(1).Line (OLD_X, OLD_Y)-(X, Y) Picture1(0).Left = Picture1(0).Left - TTT Picture1(1).Left = Picture1(0).Left + Picture1(0).Width Else OLD_X = X OLD_Y = Y X = 0.01 * 567 '標本点の間隔を0.01秒とする Y = CSng(Receiver.strData) Picture1(0).Line (OLD_X, OLD_Y)-(X, Y) Picture1(1).Left = Picture1(1).Left - TTT Picture1(0).Left = Picture1(1).Left + Picture1(1).Width End If OLD_X = OLD_X + TTT OLD_Y = Y End Sub 'アンロード Private Sub HideGraph_Click() Close #10 Unload Me End Sub こんな感じでやってみたのですが、リサンプリングのコードの書き方がわからなかったので(サンプリング個数というのがよく理解できなくて、) 完成とはいえませんが。 ファイルへの書き出しもなぜかエラーになってしまいます。 どこか、まずい場所のでしょうか? ご教授お願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.