Dim a(5), b(5), c(5), X(5), Y(5) As Integer
Dim d As Integer
Dim Data_Code, Data, Data1, outdata, Add_Code As String
Dim u(5) As Integer
Private Sub Command1_Click() '按钮OK
For n = 0 To 5
Timer2(n).Interval = Y(n) '在Timer3的事件中计算获得Y(n)
Timer2(n).Enabled = True
Next n
Timer4.Enabled = True
d = 0
End Sub
Private Sub Command2_Click() '按钮Reset
For n = 0 To 5
Text1(n).Text = 0
Text2(n).Text = 0
Text3(n).Text = 0
Next n
d = 0
End Sub
Private Sub Command3_Click() '按钮 All +10V
For n = 0 To 5
Text1(n).Text = 10
Next n
End Sub
Private Sub Command4_Click() '按钮 All -10V
For n = 0 To 5
Text1(n).Text = -10
Next n
End Sub
Private Sub Command5_Click() '按钮 All +5V
For n = 0 To 5
Text1(n).Text = 5
Next n
End Sub
Private Sub Command6_Click() '按钮 All -5V
For n = 0 To 5
Text1(n).Text = -5
Next n
End Sub
Private Sub Command7_Click()
For n = 0 To 5
Text1(n).Text = 10
u(n) = Val(Text3(n).Text) * 1000
Timer5(n).Interval = u(n)
Timer5(n).Enabled = True
Next n
Timer4.Enabled = True
d = 0
End Sub
Private Sub Command8_Click()
For n = 0 To 5
Text1(n).Text = -10
u(n) = Val(Text3(n).Text) * 1000
Timer5(n).Interval = u(n)
Timer5(n).Enabled = True
Next n
Timer4.Enabled = True
d = 0
End Sub
Private Sub Form_Load()
'SkinH_Attach '加载皮肤
'SkinHme
MSComm1.InBufferSize = 1024
MSComm1.CommPort = 1 '此处应根据计算机的实际串口号来设置,6是家里本本的虚拟串口号
MSComm1.Settings = "115200,e,7,2"
MSComm1.PortOpen = True
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeText
MSComm1.Handshaking = comNone
Command1.Caption = "OK"
Label4.Caption = "请输入约定时间"
Label5.Caption = "使用时间"
For n = 0 To 5
Text1(n).Text = 0
Text2(n).Text = 0
Text3(n).Text = 0
'Label6(n).Caption = ""
Label6(n).Caption = "Err"
Label6(n).BackColor = &HFF&
Next n
Text4.Text = 0
Timer4.Enabled = False
Check1.Value = Checked '时间一致 选项
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End
End Sub
Private Sub Text1_Change(Index As Integer)
If Text1(Index).Text = "-" Then Text1(Index).Text = 0
If Text1(Index).Text = "" Then Text1(Index).Text = 0
If Text1(Index).Text = "1-0" Then Text1(Index).Text = 0
If Text1(Index).Text > 10 Then Text1(Index).Text = 0
If Text1(Index).Text < -10 Then Text1(Index).Text = 0
VScroll1(Index).Value = Text1(Index).Text * 300
End Sub
Private Sub Timer1_Timer() '通信定时器
Dim Head_Code, Data1, outdata As String
Head_Code = "@00WD020"
For j = 0 To 5
Add_Code = Trim(Str(VScroll1(j).Index))
Data_Code = VScroll1(j).Value
Data = Hex(Data_Code)
Amo = Len(Data)
If Amo = 3 Then
Data1 = "0" + Data
Else
If Amo = 2 Then
Data1 = "00" + Data
Else
If Amo = 1 Then
Data1 = "000" + Data
Else
Data1 = Data
End If
End If
End If
outdata = Head_Code + Add_Code + Data1
Label1(j).Caption = Data '显示十六进制值
Text1(j).Text = Data_Code / 300
Label3(j).Caption = Add_Code '显示地址值
L = Len(outdata)
fcs1 = 0
For i = 1 To L
fcs1 = fcs1 Xor Asc(Mid(outdata, i, 1))
Next i
FCS = Hex(fcs1)
Dim Instring As String
MSComm1.Output = outdata + FCS + "*" + Chr$(13)
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 10
Instring = MSComm1.Input
If Mid(Instring, Len(Instring) - 1, 1) <> "*" Then
Label2(j).Caption = "通讯出错"
Label6(j).Caption = "Err"
Label6(j).BackColor = &HFF&
Else
fcs2 = 0
For i = 1 To Len(Instring) - 4
fcs2 = fcs2 Xor Asc(Mid(Instring, i, 1))
Next i
fcs3 = Hex(fcs2)
If fcs3 = Mid(Instring, Len(Instring) - 3, 2) Then
Label2(j).Caption = "通讯有效"
Label6(j).Caption = "Ok"
Label6(j).BackColor = &HFF00&
Else
Label2(j).Caption = "通讯出错"
Label6(j).Caption = "Err"
Label6(j).BackColor = &HFF&
End If
End If
Next j
End Sub
Private Sub Timer2_Timer(Index As Integer)
If a(Index) < b(Index) Then 'a(index)是当前实际值,b(index)是设定值
a(Index) = a(Index) + 0.1
Else
If a(Index) > b(Index) Then
a(Index) = a(Index) - 0.1
Else
If b(Index) = a(Index) Then
Timer2(Index).Enabled = False
Timer4.Enabled = False
End If
End If
End If
Text1(Index) = a(Index)
End Sub
Private Sub Timer3_Timer()
Dim z As String
z = Text3(0).Text
For k = 0 To 5
a(k) = Val(Text1(k).Text) '当前实际值
b(k) = Val(Text2(k).Text) '设定值
c(k) = Val(Text3(k).Text) '约定时间值
X(k) = Abs((b(k) - a(k)) / 0.1) '限定了最大变化时间间隔
If X(k) = 0 Then
Y(k) = 0
Else
Y(k) = c(k) * 1000 / X(k)
End If
If Check1.Value = Checked Then
Text3(k).Text = z
End If
Next k
Text4.Text = d
End Sub
Private Sub Timer4_Timer()
d = d + 1
End Sub
Private Sub Timer5_Timer(Index As Integer)
Text1(Index).Text = 0
Timer5(Index).Enabled = False
Timer4.Enabled = False
End Sub