在PC机中,用VB编了以下程序  MSComm1.OutBufferCount = 0
  Dim buffer As Variant
  buffer = "F"      '46
  MSComm1.Output = buffer
  
  Dim cc(0) As Byte
  cc(0) = Val(txtSpeedInt.Text)     'txtSpeedInt.Text="130"
  MSComm1.Output = cc
  
  Do
    DoEvents
  Loop Until MSComm1.OutBufferCount = 0
  
  If MSComm1.OutBufferCount = 0 Then
    MsgBox "数据已经发送出去"
  Else
    MsgBox "线路不通"
  End If我的PC还没有跟单片机相连,但运行了上面的程序后,为什么得到的对话框
内容是"数据已经发送出去",而不是"线路不通".OutBufferCount不是返回发送缓冲区等待发送的字符数吗?我的PC机没有跟单片机相连,OutBufferCount应该不等于0啊。(Do...loop until语句有跟没有结果都一样)

解决方案 »

  1.   

    以下是读取Binary DataDim Buffer as Variant
    Dim Arr() as Byte' 设定并开启连接埠
    MSComm1.CommPort = 1
    ' 连线速度 9600 baud、无同位检查、资料位元 8、停止位元 1
    MSComm1.Settings = "9600,N,8,1"
    告诉控制项当使用 Input 时,读取整个暂存区
    MSComm1.InputLen = 0

    MSComm1.PortOpen = True
    ' 设定 InputMode 以读取二进位资料
    MSComm1.InputMode = comInputModeBinary
    ' 等待直到输入暂存区有 10 个位元组
    Do Until MSComm1.InBufferCount < 10
        DoEvents
    Loop
    ' 往暂存区存二进位资料
    Buffer = MSComm1.Input
    ' 指定给位元组阵列以便处理
    Arr = Buffer
    MSComm1.PortOpen = False
    而送出Binary的资料则没有像InputMode的属性,在VB5.0中
    Output属性是接Varant所以直接将ByteArray传送出去就好了,
    所以重点变成如何将想传的资料放入ByteArrayDim Buffer(5)Buffer(0) = 210
    Buffer(1) = 150
    Buffer(2) = 68
    Buffer(3) = 56MSComm1.Output = Buffer