发送协议,大循环套小循环:66 7E 66 7E 66 7E 66 7E.... 67 6A 6C 67-->66 7E 66 7E 66 7E 66 7E ....67 6A 6C 67-->66 7E 66 7E 66 7E 66 7E ......67 6A 6C 67-->66 7E 66 7E 66 7E 66 7E .....67 6A 6C 67 67 7E(大循环完成最后是67 7E)
1、举例,发送66的协议是:
ReDim buff_out6(8)
Dim buff_out6() As Byte
buff_out6(0) = &HAA
buff_out6(1) = &HAA
buff_out6(2) = &HFF
buff_out6(3) = &H5
buff_out6(4) = &H66
buff_out6(5) = &H0
buff_out6(6) = &H0
buff_out6(7) = &H0
buff_out6(8) = &HFF
MSComm1.Output = buff_out6 其他的诸如7E、6A等等都是一样的。
2、举例:调用Text设定的时间
If Dir("15.txt") <> "" Then
Dim Temp15 As String
Open App.Path & "\15.txt" For Input As #15
Line Input #15, Temp15
Close #15
End If 以上的发送的协议在一个command7(开始为“开”状态,点击“开”就执行,此时显示“关”状态,手动点击“关”或者大循环时间到,再发送个67与7E,回到“开”状态),程序示意如下:
Private Sub Command7_Click()
If Shape5.BackColor = &HFF Then
Shape5.BackColor = &H80FF80
Command7.Caption = "关" '实际上command7的状态是开启,只是显示可以关闭
.....'大循环
Else
Shape5.BackColor = &HFF
Command7.Caption = "开"'实际上command7的状态是关闭,只是显示可以开启
.....'67、7E
End If
End Sub这样只能一个一个的发送上面的协议,小循环大循环都执行不了,而且发送时间也不能修改:
Option Explicit
Dim buff_out6() As Byte
Private Sub Form_Load()
Timer1.Interval = 1000
MSComm1.PortOpen = True
End Sub Private Sub Timer1_Timer()
Static xunhuan As Long
ReDim buff_out6(8)
buff_out6(0) = &HAA
buff_out6(1) = &HAA
buff_out6(2) = &HFF
buff_out6(3) = &H5
buff_out6(5) = &H0
buff_out6(6) = &H0
buff_out6(7) = &H0
buff_out6(8) = &HFF
xunhuan = xunhuan + 1
If xunhuan = 1 Then
buff_out6(4) = &H66
ElseIf xunhuan = 2 Then
buff_out6(4) = &H7E
ElseIf xunhuan = 3 Then
buff_out6(4) = &H67
ElseIf xunhuan = 4 Then
buff_out6(4) = &H6A
ElseIf xunhuan = 5 Then
buff_out6(4) = &H6C
End If
If xunhuan Mod 5 = 0 Then xunhuan = 0
MSComm1.Output = buff_out6
End Sub
1、举例,发送66的协议是:
ReDim buff_out6(8)
Dim buff_out6() As Byte
buff_out6(0) = &HAA
buff_out6(1) = &HAA
buff_out6(2) = &HFF
buff_out6(3) = &H5
buff_out6(4) = &H66
buff_out6(5) = &H0
buff_out6(6) = &H0
buff_out6(7) = &H0
buff_out6(8) = &HFF
MSComm1.Output = buff_out6 其他的诸如7E、6A等等都是一样的。
2、举例:调用Text设定的时间
If Dir("15.txt") <> "" Then
Dim Temp15 As String
Open App.Path & "\15.txt" For Input As #15
Line Input #15, Temp15
Close #15
End If 以上的发送的协议在一个command7(开始为“开”状态,点击“开”就执行,此时显示“关”状态,手动点击“关”或者大循环时间到,再发送个67与7E,回到“开”状态),程序示意如下:
Private Sub Command7_Click()
If Shape5.BackColor = &HFF Then
Shape5.BackColor = &H80FF80
Command7.Caption = "关" '实际上command7的状态是开启,只是显示可以关闭
.....'大循环
Else
Shape5.BackColor = &HFF
Command7.Caption = "开"'实际上command7的状态是关闭,只是显示可以开启
.....'67、7E
End If
End Sub这样只能一个一个的发送上面的协议,小循环大循环都执行不了,而且发送时间也不能修改:
Option Explicit
Dim buff_out6() As Byte
Private Sub Form_Load()
Timer1.Interval = 1000
MSComm1.PortOpen = True
End Sub Private Sub Timer1_Timer()
Static xunhuan As Long
ReDim buff_out6(8)
buff_out6(0) = &HAA
buff_out6(1) = &HAA
buff_out6(2) = &HFF
buff_out6(3) = &H5
buff_out6(5) = &H0
buff_out6(6) = &H0
buff_out6(7) = &H0
buff_out6(8) = &HFF
xunhuan = xunhuan + 1
If xunhuan = 1 Then
buff_out6(4) = &H66
ElseIf xunhuan = 2 Then
buff_out6(4) = &H7E
ElseIf xunhuan = 3 Then
buff_out6(4) = &H67
ElseIf xunhuan = 4 Then
buff_out6(4) = &H6A
ElseIf xunhuan = 5 Then
buff_out6(4) = &H6C
End If
If xunhuan Mod 5 = 0 Then xunhuan = 0
MSComm1.Output = buff_out6
End Sub
arrsource = Split("66,7E,66,7E,66,7E,66,7E,67,6A,6C,67", ",")Dim i As Long
For i = 0 To UBound(arrsource)
SendData ("&H" & arrsource(i))
NextEnd SubPrivate Sub SendData(ByVal vData As Byte)
Dim buff_out6(8) As Byte
buff_out6(0) = &HAA
buff_out6(1) = &HAA
buff_out6(2) = &HFF
buff_out6(3) = &H5
buff_out6(4) = vData
buff_out6(5) = &H0
buff_out6(6) = &H0
buff_out6(7) = &H0
buff_out6(8) = &HFF
MSComm1.Output = buff_out6
End Sub
我是想:
大循环套小循环:66 7E 66 7E 66 7E 66 7E......(小循环)67 6A 6C 67----(大循环)-----
66 7E 66 7E 66 7E 66 7E ......(小循环)67 6A 6C 67---大循环)---- 66 7E 66 7E 66 7E 66 7E ......(小循环)67 6A 6C 67----(大循环)----- 66 7E 66 7E 66 7E 66 7E ......(小循环)67 6A 6C 67 67 7E(大循环完成最后是67 7E)
Dim arrsource() As String
Dim arrsource1() As String
Dim arrend() As String
arrsource = Split("66,7E", ",")
arrsource1 = Split("67,6A,6C,67", ",")
arrend = Split("67,7E", ",")
Dim i As Long, j As Long, k As Long
For k = 0 To 9 '10个66 7E 66 7E 66......(小循环)67 6A 6C 67(大循环)
For j = 0 To 99 '100个66 7E
For i = 0 To UBound(arrsource)
SendData ("&H" & arrsource(i))
Next
Next
For i = 0 To UBound(arrsource1) '67 6A 6C 67
SendData ("&H" & arrsource1(i))
Next
Next
For i = 0 To UBound(arrend) '结束的67 7E
SendData ("&H" & arrend(i))
Next
End SubPrivate Sub SendData(ByVal vData As Byte)
Dim buff_out6(8) As Byte
buff_out6(0) = &HAA
buff_out6(1) = &HAA
buff_out6(2) = &HFF
buff_out6(3) = &H5
buff_out6(4) = vData
buff_out6(5) = &H0
buff_out6(6) = &H0
buff_out6(7) = &H0
buff_out6(8) = &HFF
MSComm1.Output = buff_out6
End Sub
Timer1.Interval = 500
End SubPrivate Sub Timer1_Timer()
Timer1.Enabled = False
Dim flg As Boolean
Dim i As Integer
For i = 1 To 8
If flg Then
If i = 8 Then
Debug.Print "发送67 6A 6C 67 67 7E"
flg = False
Else
Debug.Print "发送67 6A 6C 67"
flg = False
End If
Else
Debug.Print "发送66 7E 66 7E 66 7E 66 7E"
flg = True
End If
Next
'Timer1.Enabled = True'要想循环,把注释去掉
End Sub'你可以用程序改变Timer1.Interval的值,来控件发送间隔
'你可以用程序改变Timer1.Enabled的值,来决定发送或停止发送。
Private Sub Form_Load()
Timer1.Interval = 500
End SubPrivate Sub Timer1_Timer()
Timer1.Enabled = False
Dim flg As Boolean
Dim i As Integer
For i = 1 To 8
If flg Then
If i = 8 Then
Debug.Print "发送67 6A 6C 67 67 7E"
Else
Debug.Print "发送67 6A 6C 67"
End If
flg = False
Else
Debug.Print "发送66 7E 66 7E 66 7E 66 7E"
flg = True
End If
Next
'Timer1.Enabled = True'要想循环,把注释去掉
End Sub'你可以用程序改变Timer1.Interval来控件发送间隔
'你要以用程序改变Timer1.Enabled来决定发送或停止发送