下面是我的实验的完整代码:Dim flag As Integer'显示oncomm事件激发了多少次。
Private Sub cmdFlag_Click()
MsgBox Str(flag)
End Sub’发送文本框
Private Sub cmdSend_Click()
MSComm1.Output = Text1.Text
flag = 0
End SubPrivate Sub Form_Load()
MSComm1.PortOpen = True
End Sub'text2为接收文本框。
Private Sub MSComm1_OnComm()
Text2.Text = MSComm1.Input
flag = flag + 1
End Submscomm的配置:RThresHold:1;字符形式。
我以前以为接收缓冲区有一个字符就触发oncomm事件,但是我发送了"a",接收正确为"a",但是却发现flag变成了5,请问这是怎么回事情?
Private Sub cmdFlag_Click()
MsgBox Str(flag)
End Sub’发送文本框
Private Sub cmdSend_Click()
MSComm1.Output = Text1.Text
flag = 0
End SubPrivate Sub Form_Load()
MSComm1.PortOpen = True
End Sub'text2为接收文本框。
Private Sub MSComm1_OnComm()
Text2.Text = MSComm1.Input
flag = flag + 1
End Submscomm的配置:RThresHold:1;字符形式。
我以前以为接收缓冲区有一个字符就触发oncomm事件,但是我发送了"a",接收正确为"a",但是却发现flag变成了5,请问这是怎么回事情?
解决方案 »
- 共用模板 Normal.dot已经以加载项方式打开
- 刚发现listview中存在一个BUG。
- VB使用正则时语法奇怪出错
- 对象库未注册
- 如何将一下vba语句(宏)转成vb语句?
- 我在退出按钮添加了db.close,为什么系统提示:对象变量或WITH块变量未设置
- 100分求救:如何用Installshield在一台已经安装了SQL的计算机上安装一个SQL数据库,谢谢
- 急,函数中数组作为函数参数,我该怎么处理,详细请进来看看!
- text绑定adodc的问题
- 【VBA】求助表头字段名称都一样,只是顺序不一样的多个sheet如何汇总?
- 表之间的连接问题。
- 请问VB能不能编出只有一个exe文件的程序?不需要带什么vb运行库?
Select Case MSComm1.CommEvent
Case comEventBreak '收到中断讯号
Case comEventCDTO '
Case comEventCTSTO
Case comEventDSRTO
Case comEventFrame
Case comEventOverrun '数据遗失
Case comEventRxOver '接收缓冲区漫溢
Case comEventRxParity '极性错误
Case comEventTxFull '传送缓冲区漫溢
Case comEventDCB '未预期错误
Case comEvCD
Case comEvCTS
Case comEvDSR
Case comEvRing
Case comEvReceive '收到字符
'put at here
Case comEvSend
Case comEvEOF
End Select
End Suboncomm事件有很多种的
Select Case MSComm1.CommEvent
Case comEventBreak '收到中断讯号
Case comEventCDTO '
Case comEventCTSTO
Case comEventDSRTO
Case comEventFrame
Case comEventOverrun '数据遗失
Case comEventRxOver '接收缓冲区漫溢
Case comEventRxParity '极性错误
Case comEventTxFull '传送缓冲区漫溢
Case comEventDCB '未预期错误
Case comEvCD
Case comEvCTS
Case comEvDSR
Case comEvRing
Case comEvReceive '收到字符
'put at here
Case comEvSend
Case comEvEOF
End Select
End Suboncomm事件有很多种的
1:如果mscomm的RThresHold设置为0,那么当计算机串口接受缓冲区收到字符以后,是不会触发mscomm的OnComm()事件的,你的RThresHold设置为1,那么当然就触发了啊,至于说flag变成5,我也不大清楚,可能跟系统有关吧!
2:理论上说:设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。。但实际上OnComm事件并不是每收到一个字符便触发一次 OnComm 事件。OnComm事件是在缓冲区收到几个甚至几十个字节数据后才被触发的。这可能与操作系统的多任务不能很好地响应有关,这里的问题其实不大,与我们写程序没什么关系!
3:这与接收和发送缓冲区大小有关。接收缓冲区越大则应用程序可用内存越小。但若接受缓冲区太小,若不使用握手协议, 就可能有溢出的危险。一般的规律是,首先设置一个 1024 字节的缓冲区。如果出现溢出错误,则通过增加缓冲区
的大小来控制应用程序的传输速率