授人于鱼,不如授人于渔
早已停用QQ了
Dim px(121) As Single, py(121) As Single '用来保存曲线数据的坐标值,程序中实时曲线通道为30. '仅使用前30个元素 Dim col As Integer '当前需绘制的点数 '未使用 Dim pl As Integer '判断是否画动态曲线 '未使用 Private Sub Command1_Click() Timer2.Enabled = True If Timer1.Enabled = True Then Command1.Caption = "开始" Timer1.Enabled = False Else Command1.Caption = "暂停" Timer1.Enabled = True End If End Sub Private Sub Command2_Click() End End Sub Private Sub Command3_Click() Timer2.Enabled = False End Sub Private Sub Form_Load() HScroll1.value = 1 Picture1.Scale (900, 0)-(1200, 300) '设置绘图区域坐标 '移到这里 Randomize End Sub Private Sub HScroll1_Change() Call Timer1_Timer '此段函数清空 'Picture1.Cls '清空绘图区域 'num = HScroll1.value '使绘图区域坐标和滚动条对应 'Picture1.Scale (900 - (900 - num), 0)-(1200 - (900 - num), 300) 'If pl >= 2 Then 'Picture1.PSet (px(0), py(0)) 'For i = 1 To col 'Picture1.Line -(px(i - 1), py(i - 1)), QBColor(2) ' 重绘曲线 'Next i 'End If End Sub Private Sub Timer1_Timer() Picture1.Cls Dim i As Long Dim j As Long Dim k As Long '把 list1 当作数据缓冲,直接到里面读数据 i = List1.ListCount - 1 '总数据量 j = HScroll1.value '滚动条位置,决定起始位置 If j > i Then Exit Sub '如果没读到数据,不执行读数据和绘图功能,直接退出处理 If i - j > 31 Then i = j + 31 '确保只取 31 个值 'j 是滚动条的值,也就是开始位置 'i 是终止值,list1 中的总记录数 或 比 J 大 30 For k = 0 To i - j px(k) = 900 + (k) * 10 py(k) = Val(List1.List(k + j)) Next k For i = 1 To i - j Picture1.Line (px(i - 1), py(i - 1))-(px(i), py(i)), QBColor(2) '使用省略参数进行绘图,老出错,只好用标准命令 Next i 'If col < 31 Then ' For i = 0 To col ' px(i) = 900 + i * 10 ' py(i) = Val(List1.List(i)) '利用随机数模拟实际数据 ' Next i ' col = col + 1 ' pl = pl + 1 'ElseIf col < 121 Then ' For j = 0 To col ' py(j) = Val(List1.List(j))'Picture1.Cls ' 'If List1.ListCount > 1 Then 'Call ADDDATA(List1.List(List1.ListCount - 1)) '把最后一个数据加进去。 'End If ' px(j) = 1200 - 10 * (col - j) '如果数据点数》30 《121,数据的横坐标则用这个式子赋值 ' Next j ' col = col + 1 '当数组装满时顺次前移,将数组第一个去掉 'Else ' For t = 0 To 119 ' py(t) = py(t + 1) ' px(t) = 1200 - 10 * (col - t) ' Next t ' py(120) = Val(List1.List(i)) ' '数组的最后一个元素始终存放当前最新实时数据 'End If 'If pl >= 2 Then '在两个或两个以上的数据点时,开始画动态曲线 ' Picture1.PSet (px(0), py(0)) ' For i = 1 To col ' Picture1.Line -(px(i - 1), py(i - 1)), QBColor(2) ' Next i 'End If End Sub Private Sub Timer2_Timer() Dim value As Integer value = Int(200 * Rnd + 100) List1.AddItem value 'list1中最多保存930条记录,HScroll1.max + 30 If List1.ListCount > 930 Then List1.RemoveItem 0 End If End Sub