用VB进行串口实时波形显示(2)

2019-01-12 18:10

Label1(2) = Format(MaxW, “0.00\ ‘显示毫米单位最大值,2位小数

Label1(3) = Format(MaxW/25.4,“0.000\ ‘显示英寸单位最大值,3位小数

End If

If WW < MinW And WW > -51 Then ‘判断最小值

MinW = WW

Label1(4) = Format(MinW, “0.00\ ‘显示毫米单位最小值,2位小数

Label1(5) = Format(MinW/25.4,“0.000\ ‘显示英寸单位最小值,3位小数 End If

.RThreshold = 1 ‘打开MSComm1事件接收 End If Case Else End Select End With End Sub

基于VB的串口数据采集

[ 来源:机电论文 | 类别:技术 | 时间:2008-6-21 14:44:00 ]

[字体:大 中 小]

要求:用VB编写一个小软件,采集电子数显千分表的数据

数显表接口参数:数显表的专用接口可与PC机的RS232(9针)相接,其波特率4800,无奇偶校检,8位数据位,1位停止位,以AcsII码发送数据

窗体设计:1个listbox,1个textbox,1个MSComm控件,2个CommandButton

程序设计:

Dim indata As Variant Dim data(100) As Single

Private Sub Command1_Click() Static i i = i + 1

data(i) = Text1.Text List1.AddItem data(i)

End Sub ‘...按键一次,采集一个数据,并存入List1中

Private Sub Command2_Click() MSComm1.PortOpen = False '….关端口 Unload Me End Sub '...退出

Private Sub Form_Load()

MSComm1.CommPort = 1 '...使用Com1口 MSComm1.Settings = \设置通讯参数 MSComm1.RThreshold = 10 MSComm1.streshold = 10

MSComm1.PortOpen = True '...打开串口 Text1.Text = \End Sub

Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive '...有接收事件发生

indata = MSComm1.Input

Text2.Text = (indata / 10) ‘…text1实时显示数显表的数据 MSComm1.InBufferCount = 0 '...清空输入寄存器 End Select End Sub

我这有一段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( \\ & Mid(buffer, 3, 2) & Str( \\ & Mid(buffer, 1, 2)) * 0.01 Else

datatemp(num)

=

Val(

\

\ & 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

问题点数:100 回复次数:10 显示所有回复修改 删除 举报 引用 回复

加为好友 发送私信 在线聊天

发表于:2007-06-25 14:44:411楼 得分:0 连点法阿

修改 删除 举报 引用 回复 ? CathySun118

失.悟 ? ? ? ?

等级:

可用分等级:富农 总技术分:88266

? ? 总技术分排名:66

2 发表于:2007-06-26 09:41:372楼 得分:0 画曲线啊,用这个吧:

'实时曲线左移函数,定义在模块中 加为好

Public

Declare

Function

BitBlt

Lib

\

\ (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal

'建立一个类,作为画实时曲线 Option Explicit

Public pCurveNUM As Integer Public pCurveName As String Public pCurveMax As Double

WintePrivate pricCurve As PictureBox rs_lePrivate priCurvePoint(6) As Integer e

Private priCurveData(6) As Double

其实Private priDrawY0(6)

友 ySrc As Long, ByVal dwRop As Long) As Long 发送私

信 在线聊

天 Public pCurvemin As Double

?

As Double

Private priDrawY1(6) As Double Private priDrawNMinute As Integer Private priDrawTMinute As Integer

等级:

Private WithEvents priTimerDraw As Timer

Public Property Let ltDrawTimer(ByRef lTimer As Timer)

? ? ?

用分等

级:中 Set priTimerDraw = lTimer 农

End Property

Public Property Let ltGiveCurveData(ByVal lDataPoint As Va Dim i%

? 总技术分:

1658 riant)

? 总

技术分 For i = 1 To pCurveNUM

排名: priCurvePoint(i) = CInt(lDataPoint(i)) 1287 Next


用VB进行串口实时波形显示(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:日语本科自考复习资料

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: