热情软件屋

 

OutBufferCount为什么为 0


编号:QA002340
建立日期: 1999年12月30日 最后修改日期:1999年12月30日
所属类别:

flutist:
    操作系统:WIN
    编程工具:VB
    问题:用VB6.0实现串口收发数据,在一个form里,添加了一个Communications通讯控件,一个command命令按钮,command 的click事件是发送一个字符串,我是这么写的:
     Private Sub Command1_Click()
     Form1.MSComm1.CommPort = 1
     Form1.MSComm1.Settings = "2400,N,8,1"
     Form1.MSComm1.PortOpen = True
     Form1.MSComm1.OutBufferCount = 0
     Form1.MSComm1.Output = "123456789"
    
    '以下为调试用
     Dim j, k, p, m, n
     j = Form1.MSComm1.OutBufferCount
     p = comEventTxFull '1010
    发送缓冲区满。在试图将字符传入发送缓冲区时,该缓冲区已满。
     k = comEventDCB ' 1011在为端口获取设备控制块
    (DCB) 时,发生不可预料的错误。
     m = comEventBreak '1001 收到 Break 信号。
     n = comEventFrame '1004
    帧错误。硬件检测到帧错误。
     Form1.MSComm1.PortOpen = False
     End Sub
    
    MSComm1的属性是这么设的:
     RThreshold =0
     SThreshold =0
     InputLen =0
     Inbuffersize=1024
     Outbuffersize=512
    
    可是我在单步调试的时候,发现Form1.MSComm1.OutBufferCount=0
    comEventTxFull =1010
    comEventDCB = 1011
    comEventBreak =1001
    comEventFrame=1004
    总之,发送缓冲区里字符为0,要什么错有什么错!

回答:

    该段程序前半段没有任何问题,后半段写程序的人犯了极其愚蠢的错误,呵呵!
    comEventTxFull
    comEventDCB
    comEventBreak
    comEventFrame
    这是VB中的MSCOMM控件自带的四个常数!估计该程序员认为发送完毕后,这几个常数的值会发生变化,同时,OnBufferCount=0不足为奇,发送完毕后,发送缓冲区会自动清空!当然为0了!
    主持人注:如果要判断错误,应该在OnComm 事件中读取CommEvent属性。

此问题由党涛回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio