?? form1.frm
字號:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
Begin VB.Form Form1
BorderStyle = 3 'Fixed Dialog
Caption = "PC機與智能儀器串口通信"
ClientHeight = 4515
ClientLeft = 45
ClientTop = 435
ClientWidth = 7710
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 4515
ScaleWidth = 7710
ShowInTaskbar = 0 'False
StartUpPosition = 3 '窗口缺省
Begin VB.Frame Frame1
Caption = "統(tǒng)計計算"
Height = 1395
Left = 120
TabIndex = 5
Top = 3060
Width = 6150
Begin VB.TextBox TempText
BeginProperty Font
Name = "宋體"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1320
TabIndex = 9
Top = 300
Width = 1290
End
Begin VB.TextBox MinText
BeginProperty Font
Name = "宋體"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1320
TabIndex = 8
Top = 840
Width = 1290
End
Begin VB.TextBox MaxText
BeginProperty Font
Name = "宋體"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 4200
TabIndex = 7
Top = 840
Width = 1290
End
Begin VB.TextBox AverText
BeginProperty Font
Name = "宋體"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 4200
TabIndex = 6
Top = 300
Width = 1290
End
Begin VB.Label Label8
Caption = "℃"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 285
Left = 5580
TabIndex = 17
Top = 960
Width = 240
End
Begin VB.Label Label7
Caption = "℃"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 285
Left = 2700
TabIndex = 16
Top = 960
Width = 240
End
Begin VB.Label Label6
Caption = "℃"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 285
Left = 2700
TabIndex = 15
Top = 420
Width = 240
End
Begin VB.Label Label5
Caption = "℃"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 285
Left = 5580
TabIndex = 14
Top = 420
Width = 240
End
Begin VB.Label Label2
Caption = "最小值:"
Height = 255
Left = 300
TabIndex = 13
Top = 960
Width = 795
End
Begin VB.Label Label3
Caption = "最大值:"
Height = 255
Left = 3360
TabIndex = 12
Top = 960
Width = 795
End
Begin VB.Label Label1
Caption = "當前值:"
Height = 255
Left = 300
TabIndex = 11
Top = 420
Width = 855
End
Begin VB.Label Label4
Caption = "平均值:"
Height = 255
Left = 3360
TabIndex = 10
Top = 420
Width = 780
End
End
Begin VB.CommandButton Cmdstart
Caption = "開始采集"
Height = 375
Left = 6480
TabIndex = 4
Top = 600
Width = 1095
End
Begin VB.CommandButton Cmdstop
Caption = "停止采集"
Height = 375
Left = 6480
TabIndex = 3
Top = 1620
Width = 1095
End
Begin MSCommLib.MSComm MSComm1
Left = 7020
Top = 3660
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
End
Begin VB.Timer Timer1
Enabled = 0 'False
Interval = 1000
Left = 6420
Top = 3780
End
Begin VB.CommandButton Cmdquit
Caption = "關 閉"
Height = 375
Left = 6480
TabIndex = 0
Top = 2580
Width = 1095
End
Begin VB.PictureBox Picture1
BackColor = &H00FFFFFF&
Height = 2895
Left = 105
ScaleHeight = 2835
ScaleWidth = 4035
TabIndex = 1
Top = 105
Width = 4095
End
Begin MSFlexGridLib.MSFlexGrid Grid
Height = 2955
Left = 4260
TabIndex = 2
Top = 60
Width = 2010
_ExtentX = 3545
_ExtentY = 5212
_Version = 327680
Rows = 200
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'定義窗體級變量
'在顯示、繪圖、報警等過程中使用
Dim datatemp(1000) As Single '用于存儲溫度采樣值
Dim num As Integer '用于存儲采樣值個數(shù)
'串口初始化
'在窗體的Load事件中加入下列代碼對串口進行初始化:
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.InputMode = 1
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.Settings = "4800,n,8,2"
MSComm1.PortOpen = True
Call tabinit '調用表格初始化子程序
End Sub
'開始采集
Private Sub Cmdstart_Click()
Timer1.Enabled = True
End Sub
'停止采集
Private Sub Cmdstop_Click()
Timer1.Enabled = False
End Sub
'每隔1000ms向儀表發(fā)送讀數(shù)據(jù)命令串
'每臺儀表有一個儀表號,PC機通過儀表號來識別網(wǎng)上的多臺儀表
'程序中儀表號(即地址代號)要與儀表設定值一致,否則不能返回數(shù)據(jù)。
Private Sub Timer1_Timer()
MSComm1.Output = Chr(&H8282) & Chr(&H52) & Chr(&HC)
End Sub
'獲取溫度測量值并顯示
'每發(fā)送一次指令,觸發(fā)下面事件,返回數(shù)據(jù)串
Private Sub MSComm1_OnComm()
Dim Inbyte() As Byte
Dim buffer As String
Dim datatemp2a, datatemp2b As String
Dim datatemp2 As String
If num > 199 Then Call renew
'讀取儀表返回數(shù)據(jù)串
Select Case MSComm1.CommEvent
Case comEvReceive
Inbyte = MSComm1.Input
For i = LBound(Inbyte) To UBound(Inbyte)
buffer = buffer + Hex(Inbyte(i)) + Chr(32)
Next i
Case comEvSend
End Select
'獲取十進制測量數(shù)據(jù)
If Len(Trim(Mid(buffer, 1, 2))) = 1 Then
datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Str("0") & Mid(buffer, 1, 2)) * 0.1
Else
datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Mid(buffer, 1, 2)) * 0.1
End If
'獲取十六進制測量數(shù)據(jù)
If Len(Trim(Mid(buffer, 1, 2))) = 1 Then
datatemp2a = Str("0") & Trim(Mid(buffer, 1, 2))
Else
datatemp2a = Mid(buffer, 1, 2)
End If
If Len(Trim(Mid(buffer, 3, 2))) = 1 Then
datatemp2b = Str("0") & Trim(Mid(buffer, 3, 2))
Else
datatemp2b = Mid(buffer, 3, 2)
End If
datatemp2 = datatemp2a & " " & datatemp2b
'顯示測量溫度值
If datatemp(num) <> 0 Then
Grid.Col = 1: Grid.Row = num + 1
Grid.Text = Format$(datatemp(num), "0.0")
TempText = Format$(datatemp(num), "0.0") '10進制顯示,保留一位小數(shù)
'Text2.Text = datatemp2 '16進制顯示
num = num + 1
Call cal '調用計算極值、平均值子程序
Call draw '調用繪曲線過程
End If
End Sub
'計算極值、平均值
Sub cal()
On Error GoTo hh
Sum = 0
Max = datatemp(0): Min = Max
For i = 0 To num - 1
If datatemp(i) >= Max Then Max = datatemp(i)
If datatemp(i) <= Min Then Min = datatemp(i)
Sum = Sum + datatemp(i)
Next i
aver = Sum / num
MaxText.Text = Format$(Max, "0.0")
MinText.Text = Format$(Min, "0.0")
AverText.Text = Format$(aver, "0.0")
hh: Exit Sub
End Sub
'繪制溫度實時變化曲線
Private Sub draw()
Picture1.Cls
Picture1.DrawWidth = 1
Picture1.BackColor = QBColor(15)
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(0)
Next i
End Sub
'刷新
Private Sub renew()
If num = 0 Then Exit Sub
TempText.Text = "": AverText.Text = ""
MinText.Text = "": MaxText.Text = ""
Grid.Clear
Picture1.Cls
For i = 0 To num - 1
datatemp(i) = 0
Next i
num = 0
Call tabinit
End Sub
'數(shù)據(jù)表格初始化
Public Sub tabinit()
Grid.Cols = 2
Grid.Rows = 200 + 1
Grid.ColWidth(0) = 700
Grid.ColWidth(1) = 950
Grid.Col = 0
For i = 1 To 200
Grid.Row = i
Grid.Text = " " + Str$(i)
Next i
Grid.Row = 0
Grid.Col = 0: Grid.Text = " 序號"
Grid.Col = 1: Grid.Text = " 溫度值"
Grid.TopRow = 1 '置在第一頁
Grid.LeftCol = 1
End Sub
'當退出程序時,關閉串行口
Private Sub Cmdquit_Click()
Unload Me
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MSComm1.PortOpen = False '關閉串口
End Sub
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -