[讨论] VB 作实时数据采集曲线

rockzone   2007-6-27 09:41 楼主
我这有一段VB程序是为了画实时采集曲线的。 软件编程我不行,如果大家有看得懂得,请帮我看看。 程序不多 Private Sub MSComm1_OnComm() Dim Inbyte() As Byte Dim buffer As String Dim datatemp(1000) As Single If num > 199 Then Call renew '刷新绘图区 '读取仪表返回数据串 Select Case MSComm1.CommEvent Case comEvReceive Inbyte = MSComm1.Input'这地方看不懂,数组可以这样赋值吗? For i = LBound(Inbyte) To UBound(Inbyte) buffer = buffer + Hex(Inbyte(i)) + Chr(32) 'for语句也没看懂,尤其是buffer这赋的是什么值? Next i Case comEvSend End Select '获取十进制测量数据 ’这下面的又是没看懂,应该是将十六进制转换为十进制,怎么转换的呢? If Len(Trim(Mid(buffer, 1, 2))) = 1 Then datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Str("0") & Mid(buffer, 1, 2)) * 0.01 Else datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Mid(buffer, 1, 2)) * 0.01 End If ‘绘制曲线 Private Sub draw() Picture1.Cls Picture1.DrawWidth = 2 Picture1.BackColor = QBColor(7) ’下面的程序我看不懂,用的是什么原理画的曲线呢? Picture1.Scale (0, 50)-(200, 0) For i = 1 To num - 1 X1 = (i - 1): Y1 = datatemp(i - 1) X2 = i: Y2 = datatemp(i) Picture1.Line (X1, Y1)-(X2, Y2), QBColor(1) Next i End Sub

回复评论 (15)

回复:VB 作实时数据采集曲线

Private Sub MSComm1_OnComm() Dim Inbyte() As Byte Dim buffer As String Dim datatemp(1000) As Single '**** 最好定义为: STATIC datatemp!(1000) If num > 199 Then Call renew '刷新绘图区 '读取仪表返回数据串 Select Case MSComm1.CommEvent Case comEvReceive Inbyte = MSComm1.Input'这地方看不懂,数组可以这样赋值吗? '**** 动态字节数组可以,i.e. Inbyte = "abcdefg" For i = LBound(Inbyte) To UBound(Inbyte) buffer = buffer + Hex(Inbyte(i)) + Chr(32) 'for语句也没看懂, 尤其是buffer这赋的是什么值? '**** 应为 buffer = buffer & right$(Hex(&h100+Inbyte(i)), 2) & " " Next i Case comEvSend End Select '获取十进制测量数据 ’这下面的又是没看懂,应该是将十六进制转换为十进制,怎么转换的呢? datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Mid(buffer, 1, 2)) * 0.01 ‘绘制曲线 Private Sub draw() Picture1.Cls Picture1.DrawWidth = 2 Picture1.BackColor = QBColor(7) ’下面的程序我看不懂,用的是什么原理画的曲线呢? Picture1.Scale (0, 50)-(200, 0) '**** 定坐标系统 For i = 1 To num - 1 X1 = (i - 1): Y1 = datatemp(i - 1) X2 = i: Y2 = datatemp(i) Picture1.Line (X1, Y1)-(X2, Y2), QBColor(1) '*** 画线 Next i End Sub
点赞  2007-6-27 09:42

回复:VB 作实时数据采集曲线

烦劳楼上的详细讲讲好吗,多谢多谢了!!!!!!!!!!!
点赞  2007-6-27 09:43

回复:VB 作实时数据采集曲线

right函数后加$是什么意思? 我看好多函数后都加$
点赞  2007-6-27 09:43

回复:VB 作实时数据采集曲线

"$" 为与 ms basica 兼容,不要也可以
点赞  2007-6-27 09:44

回复:VB 作实时数据采集曲线

buffer = buffer & right$(Hex(&h100+Inbyte(i)), 2) & " " 这条语句的意思是什么? If Len(Trim(Mid(buffer, 1, 2))) = 1 Then datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Str("0") & Mid(buffer, 1, 2)) * 0.01 Else datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Mid(buffer, 1, 2)) * 0.01 End If 这是用什么方法将16进制转成10进制的数。 还有,我从AD7705里采集进来的数是2个字节,通过串口发到计算机中,这两个字节的数,我用VB怎么处理呢,上面的程序能处理2个字节吗?
点赞  2007-6-27 09:45

回复:VB 作实时数据采集曲线

没人会吗
点赞  2007-6-27 09:45

回复:VB 作实时数据采集曲线

看 Val() 的说明
点赞  2007-6-27 09:46

回复:VB 作实时数据采集曲线

很简单的东西 ,仔细看下vb就知道了。
点赞  2007-6-27 09:47

回复:VB 作实时数据采集曲线

实在看不懂,我太笨了~~!!
点赞  2007-6-27 09:48

回复:VB 作实时数据采集曲线

它能否像示波器一样显示出来???
点赞  2007-6-27 09:49

回复:VB 作实时数据采集曲线

buffer = buffer & right$(Hex(&h100+Inbyte(i)), 2) & " " 换成c语言就是 buffer+= (右两位of Hex(&h100+Inbyte(i)) )后面加了个空格。 buffer出来应该是 “00 01 25 44 77”这样的字符串。
谁想我?我想谁?
点赞  2007-6-27 09:51

回复:VB 作实时数据采集曲线

val那句就是取值。&H来看,还是16位的。其实10位,16位画出高度来都一样。转换的话没什么意义。
谁想我?我想谁?
点赞  2007-6-27 09:54
我也看不懂,我太笨了
点赞  2014-2-9 20:40
在pic控件里画
点赞  2014-2-10 13:47
应该是在PIC控件里面
点赞  2014-2-27 13:10
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复