发送协议,大循环套小循环: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.   

    把每个循环的数据做成一个个的字节数组,在使用Timer一个个的发送
      

  2.   

    还望Veron_04(阿根廷巫师)兄详解啊 
      

  3.   

    Private Sub Command1_Click()Dim arrsource() As String
    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
      

  4.   

    恩 很不错了 能给我提供个思路 但是现在大小循环还没有真正循环起来 LS的只是发送数组里的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----(大循环)-----              66 7E 66 7E 66 7E 66 7E ......(小循环)67 6A 6C 67 67 7E(大循环完成最后是67 7E) 
      

  5.   

    Private Sub Command1_Click()
        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
      

  6.   

    都看得两眼直冒金星都没看懂你的说的意思是什么,只循环四次就好了?什么情况下开始循环?什么情况下停止循环?程序逻辑结构如下(参考然后修改改你的程序吧):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"
                 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的值,来决定发送或停止发送。
      

  7.   


    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来决定发送或停止发送