mscomm控件无法触发oncomm事件
时间:2008-06-10
来源:互联网
Private Sub Form_Load()
succeedStr = "333366"
failStr = "6666cc"
clearApparatusStr = "553085"
linkStr = "551065"
MSComm.CommPort = 1 '默认为com1口
MSComm.OutBufferSize = 1024 '输出缓冲区大小
MSComm.InBufferSize = 1024 '输入缓冲区大小
MSComm.InputMode = 1 '数据接收模式为二进制模式 二进制与十六进制处理是相同的
MSComm.Settings = "9600,n,8,1 " '设置参数,默认为:波特率9600;无校验;数据位8;停止位1
End Sub
Private Sub MSComm_OnComm()
Select Case main.MSComm.CommEvent
Case comEvReceive
main.MSComm.InputMode = comInputModeText
onlineRet = onlineRet + main.MSComm.Input
' MsgBox onlineRet
Case comEvSend
End Select
End Sub
Private Sub Toolbar1_ButtonMenuClick(ByVal ButtonMenu As MSComctlLib.ButtonMenu)
Select Case ButtonMenu
Case "联机检查"
ret = test_link()
End Select
End Sub
Public Function test_link() As Boolean '检测联机
If main.MSComm.PortOpen = False Then
main.MSComm.PortOpen = True
End If
Dim ret As Boolean
Dim sendstr As String
sendstr = linkStr
ret = send_command(sendstr)
End Function
Public Function send_command(sendstr As String) As Boolean
Dim onlineStr As String
Dim onlineRet As String
Dim noOnlineStr As String
Dim sBool As Boolean '为了使用户在点击中断按钮时结束下面的循环,主要是为解决doEvents(),应该把这个变量设为全局的
' sBool = True
onlineRet = ""
noOnlineStr = failStr
linkSucced = succeedStr
main.MSComm.InBufferCount = 0
main.MSComm.Output = sendstr
main.MSComm.InputLen = 1
main.MSComm.RThreshold = 1 '设置一次从接收缓冲区读取字节数为1
main.MSComm.SThreshold = 1 '设置一次从发送缓冲区读取字节数为1
End Function
我用串口调试助手能够接收到发送的数据,但是用串口调试助手发送数据,程序确不能接收到数据,不能触发oncomm事件mscomm.CommEvent返回的值不是comEvReceive,我通过msgbox mscomm.CommEvent得到的值是1,我查的资料是comEvReceive=1不明白为什么没有执行Case comEvReceive里面的语句呢
作者: zydream6 发布时间: 2008-06-10
Dim Ip() As Byte
Dim Buf As String
Select Case MSComm1.CommEvent
Case comEvReceive
Ip = MSComm1.Input
For i = LBound(Ip) To UBound(Ip)
If Len(Hex(Ip(i))) = 1 Then Buf = Buf & "0"
Buf = Buf & Hex(Ip(i))
Next
End Select
End Sub
作者: alifriend 发布时间: 2008-06-10
作者: zydream6 发布时间: 2008-06-10
作者: li_yaoming 发布时间: 2008-06-10
仔细研究你代码
1)你的ONCOMM事件中的变量onlineRet未见声明
2)函数test_link未见调用处(则串口未打开)
代码修改如下
VBScript code
Option Explicit Dim succeedStr, failStr Dim clearApparatusStr, linkStr, linkSucced Dim onlineRet As String Private Sub Command1_Click()'打开串口 test_link End Sub Private Sub Form_Load() succeedStr = "333366" failStr = "6666cc" clearApparatusStr = "553085" linkStr = "551065" MsComm.CommPort = 1 '默认为com1口 MsComm.OutBufferSize = 1024 '输出缓冲区大小 MsComm.InBufferSize = 1024 '输入缓冲区大小 MsComm.InputMode = 1 '数据接收模式为二进制模式 二进制与十六进制处理是相同的 MsComm.Settings = "9600,n,8,1 " '设置参数,默认为:波特率9600;无校验;数据位8;停止位1 End Sub Private Sub MSComm_OnComm() Select Case main.MsComm.CommEvent Case comEvReceive main.MsComm.InputMode = comInputModeText onlineRet = onlineRet + main.MsComm.Input Text1 = onlineRet Case comEvSend End Select End Sub Private Sub Toolbar1_ButtonMenuClick(ByVal ButtonMenu As MSComctlLib.ButtonMenu) End Sub Select Case ButtonMenu Case "联机检查" ret = test_link() End Select End Sub Public Function test_link() As Boolean '检测联机 If main.MsComm.PortOpen = False Then main.MsComm.PortOpen = True End If Dim ret As Boolean Dim sendstr As String sendstr = linkStr ret = send_command(sendstr) End Function Public Function send_command(sendstr As String) As Boolean Dim onlineStr As String Dim onlineRet As String Dim noOnlineStr As String Dim sBool As Boolean '为了使用户在点击中断按钮时结束下面的循环,主要是为解决doEvents(),应该把这个变量设为全局的 ' sBool = True onlineRet = "" noOnlineStr = failStr linkSucced = succeedStr main.MsComm.InBufferCount = 0 main.MsComm.Output = sendstr main.MsComm.InputLen = 1 main.MsComm.RThreshold = 1 '设置一次从接收缓冲区读取字节数为1 main.MsComm.SThreshold = 1 '设置一次从发送缓冲区读取字节数为1 End Function
作者: zdingyun 发布时间: 2008-06-11
作者: of123 发布时间: 2008-06-12
不知道是为什么
作者: zydream6 发布时间: 2008-06-14
做个记号,以便备用
作者: hujuncode 发布时间: 2008-09-15
作者: zhanb_go 发布时间: 2008-09-18
作者: AwillAway 发布时间: 2011-11-26
作者: AwillAway 发布时间: 2011-11-26
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28