ttyp(愿赌服输),能说的详细一些么,集合我没用过,能不能麻烦你给我个例子

解决方案 »

  1.   

    直接使用mscomm的接收缓存区就可以了。然后用Timer处理数据就可以了。
    Private Sub tmrReceive_Timer()
        If comReceive.InBufferCount Then
            tmpReceive = txtReceive.Text
            Buffer = comReceive.Input
            For i% = LBound(Buffer) To UBound(Buffer)
                tmpReceive = tmpReceive & Hex(Buffer(i%)) & " "
            Next i%
            txtReceive.Text = tmpReceive
            txtReceive.SelStart = Len(txtReceive.Text)
            txtReceive.Refresh
            lLine = SendMessage(txtReceive.hwnd, EM_LINEFROMCHAR, -1, 0&) + 1
            If lLine > txtReceive.Height / 185 Then txtReceive.Text = ""
        End If
        
    End Sub
    我的程序时将接受的数据显示在txtReceive内。你可以进行自己的处理(放在数组里就可以了),处理一段清除一段。
      

  2.   

    不过, huxiangming() 的上述代码,我一般是放在MSComm1_OnComm事件中执行的。
      

  3.   

    我现在初步想用mscomm的输入缓存区。,请大家帮我讨论一下究竟代码应该放在MSComm1_OnComm()还是Timer()中。我第一次自己做一个工程很多东西不太懂,请大家帮帮忙
      

  4.   


    sorry ,i don't known
      

  5.   

    如果你目前只是要比较放在MSComm1_OnComm()还是Timer()到底哪个事件好,可以参考MSDN自带的例程,就在你的VB安装目录下找。
    另外有个简单办法:在界面上做一个checkbox,选中时从timer事件中调用上述例程,未选中时从MSComm1_OnComm()中调用,即可比较出来。我估计没有本质区别。
      

  6.   

    不需要建立fifo只用他的缓冲区即可。
    MSComm空间有一个事件可以控制当缓冲区有数据时触发他,请蚕茧MSDN很容易。
      

  7.   

    我试了一下觉得应该用MSComm1_OnComm。但我接到的命令一般是分两次或三次读出。那么怎样在mscomm1_oncomm中执行命令呀
      

  8.   

    在MSComm1_OnComm中读数据。
    如果你的数据有明确的结尾标志的话,在有数据到来触发MSComm1_OnComm事件时,在循环读取缓冲区,直到缓冲区中没有数据或收到结尾标志(可以加适当的延时如1毫秒)。一般一个数据包是只触发一次MSComm1_OnComm事件的。然后再把收到数据进行处理。