我使用的是OnComm控件,
但是一次OnComm收到的东西只能8个BYTE,
郁闷!请问设置MSCOMM的什么属性可以改变这种状况?
或者是根本无法改变的? 
注:请不要让我改用其他控件或类。

解决方案 »

  1.   

    MSComm1.RThreshold  = 11 接收缓冲区收到11个字节产生OnComm事件 
    RThreshold:该属性为一阀值,它确定当接收缓冲区内字节个数达到或超过该值后就产生代码为MSCOMM_EV_RECEIVE的OnComm事件。
      

  2.   

    喔,对不起还是遇到一个问题:
    当发送12个BYTE的数据,
    如果RThreshold设置成1,那么竟然产生两次OnComm事件! 
    两次的InBufferCount分别是8和4;
    但是如果RThreshold设置成9,那么只有一次OnComm事件,
    InBufferCount是12。
    为什么?
    我又晕了
    不是说“当接收缓冲区内字节个数达到或超过该值后就产生代码为MSCOMM_EV_RECEIVE的OnComm事件。
    ”吗?谢谢了Const SendSize = 12Private Sub Command1_Click()
    Dim toSend As VariantDim a(0 To SendSize - 1) As Byte
    For i = 0 To SendSize - 1
    a(i) = i
    Next
    toSend = a
    MSComm1.Output = toSend
    End SubPrivate Sub Form_Load()MSComm1.CommPort = 1
    MSComm1.Settings = "9600,n,8,1"
    MSComm1.InputMode = comInputModeBinaryMSComm1.RThreshold = 9
    If (MSComm1.PortOpen = True) Then MSComm1.PortOpen = FalseMSComm1.PortOpen = TrueEnd SubPrivate Sub MSComm1_OnComm()If MSComm1.CommEvent <> comEvReceive Then Exit SubList1.AddItem MSComm1.InBufferCountDim a() As Byte
    a = MSComm1.InputFor i = 0 To UBound(a)
        Text1.Text = Text1.Text + Str(a(i))
    NextText1.Text = Text1.Text + vbCrLf
    End Sub