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属性。
此问题由党涛回答。
| |
|
|
| |
|
|