Private Sub cmdsend_Click()
Dim byOut() As Byte
Dim Buf$, i%, j%, Buf1$
If a = 0 Then
    Buf = Trim("90") & Chr(13) & Chr(10)
    cmdsend.Caption = "结束"
    a = 1
ElseIf a = 1 Then
    Buf = Trim("165") & Chr(13) & Chr(10)
    cmdsend.Caption = "开始"
    a = 0
End If
    j = 0
    byOut = ""
    Do
      i = InStr(1, Buf, Chr(13) & Chr(10))
      If i > 1 Then
        ReDim Preserve byOut(0 To j)  '
        Buf1 = Left(Buf, i - 1)
        
       If Val(Buf1) <> 0 Then
          byOut(j) = Left(Buf, i - 1)
        End If
         j = j + 1
      Else
        Exit Do
      End If
    Buf = Right(Buf, Len(Buf) - (i + 1))
    Loop
    MSC1.Output = byOut
End Sub

解决方案 »

  1.   

    InStr 函数返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。语法 InStr([start, ]string1, string2[, compare])InStr 函数的语法具有下面的参数:部分 说明 
    start 可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果 start 包含 Null,将发生错误。如果指定了 compare 参数,则一定要有 start 参数。 
    string1 必要参数。接受搜索的字符串表达式。 
    string2 必要参数。被搜索的字符串表达式。 
    Compare 可选参数。指定字符串比较。如果 compare 是 Null,将发生错误。如果省略 compare,Option Compare 的设置将决定比较的类型。 
    设置 compare 参数设置为:常数 值 描述 
    vbUseCompareOption -1 使用Option Compare 语句设置执行一个比较。 
    vbBinaryCompare 0 执行一个二进制比较。 
    vbTextCompare 1 执行一个按照原文的比较。 
    vbDatabaseCompare 2 仅适用于Microsoft Access,执行一个基于数据库中信息的比较。 
    返回值如果 InStr返回 
    string1 为零长度 0 
    string1 为 Null Null 
    string2 为零长度 Start 
    string2 为 Null Null 
    string2 找不到 0 
    在 string1 中找到string2  找到的位置 
    start > string2 0 
    说明InStrB 函数作用于包含在字符串中的字节数据。所以 InStrB 返回的是字节位置,而不是字符位置。----------------------
    Left 函数返回 Variant (String),其中包含字符串中从左边算起指定数量的字符。语法Left(string, length)Left 函数的语法有下面的命名参数:部分 说明 
    string 必要参数。字符串表达式其中最左边的那些字符将被返回。如果 string 包含 Null,将返回 Null。 
    length 必要参数;为 Variant (Long)。数值表达式,指出将返回多少个字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。 
    说明欲知 string 的字符数,使用 Len 函数。注意    LeftB 函数作用于包含在字符串中的字节数据。所以 length 指定的是字节数,而不是要返回的字符数。
    --------------------------------------------------------------------------------
    Right 函数返回 Variant (String),其中包含从字符串右边取出的指定数量的字符。语法Right(string, length)Right 函数的语法具有下面的命名参数:部分 说明 
    string 必要参数。字符串表达式,从中最右边的字符将被返回。如果 string 包含 Null,将返回 Null。 
    length 必要参数;为 Variant (Long)。为数值表达式,指出想返回多少字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。 
    说明欲知 string 的字符数,用 Len 函数。注意    RightB 函数作用于包含在字符串中的字节数据。所以 length 指定的是字节数,而不是指定返回的字符数。
      

  2.   

    left:返回 Variant (String),其中包含字符串中从左边算起指定数量的字符
    right:返回 同上,包含的是字符串从右边算起指定数量的字符
      

  3.   

    支持 hzh_net(_风云_),你可以多查些资料,编程一定要有一些函数手册在身边。
      

  4.   

    就这么几个函数,你不装MSDN么?
      

  5.   

    不知道哪里有MSDN啊,我也想要啊
      

  6.   

    大家可以帮我具体分析一下
    Buf = Trim("90") & Chr(13) & Chr(10)
    这一句吗?
      

  7.   

    Buf = Trim("90") & Chr(13) & Chr(10)个定义好的缓冲区赋值(字符串)。
      

  8.   

    Buf = Trim("90") & Chr(13) & Chr(10) 其中
    Trim("90")=90Chr(13) & Chr(10) 表示回车换行 
    buf值最后就是
    ========================
    "90
    "
    ==========================
    引号里面的东西
      

  9.   

    哈哈,奶妈门做的不错,来晚了,楼主装个msdn就好了
      

  10.   

    既然Trim("90")=90,那么为什么不把Buf = TrimBuf = Trim("90") & Chr(13) & Chr(10)
    写成Buf = Trim"90"& Chr(13) & Chr(10)   ?
    请大家解释一下,应该不是程序员想卖弄自己吧?
      

  11.   

    既然Trim("90")=90,那么为什么不把Buf = Trim("90") & Chr(13) & Chr(10)
    写成Buf = "90"& Chr(13) & Chr(10)   ?
    请大家解释一下,应该不是程序员想卖弄自己吧?
      

  12.   

    Chr(13) 是回车符
     Chr(10) 是换行符
    一般换行时结合使用。
      

  13.   

    Buf = "90" & Chr(13) & Chr(10) 足矣。大概并非出于卖弄。很可能 Trim 函数中的参数原来是一个变量,而不是常量,其中有可能含有空格。
    改来改去,弄成常量了,却没有删除多余的函数。这段代码写的并不好,啰嗦。改改:Private Sub cmdsend_Click()
    Dim byOut(0) As BytebyOut(0) = IIf(a, 165, 90)
    cmdsend.Caption = IIf(a,"开始","结束")
    a = a xor 1MSC1.Output = byOut
    End Sub