首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

跪求高人指点:VB MSComm控件串口打不开,异常代码:0

2012-01-02 
跪求高人指点:VB MSComm控件串口打不开,错误代码:0!同一台机器,相同的设备(可以确定设备没问题),使用其他

跪求高人指点:VB MSComm控件串口打不开,错误代码:0!
同一台机器,相同的设备(可以确定设备没问题),使用其他程序可打开端口,使用以下代码不行:

程序报告错误代码:0,错误描述:无!


程序代码如下:
Private Sub cmdPortOpen_Click() '打开端口按键功能控制
  On Error GoTo errHandle:
  Call portCheck(MSComm, cmbCOM, portCheckFlag) '检查被选中的端口是否可用,如果可用就指定端口
  If portCheckFlag Then 'portCheckFlag 为变量,已强制申明
  MSComm.CommPort = Val(Mid(cmbCOM.Text, 4, 1))
  Else
  GoTo errHandle
  End If
   
  Call initCOMPort(cmbBaudRate, cmbData, cmbStopBit, cmbParity) '实例化端口
  With MSComm:
  .InputMode = comInputModeBinary '指定以二进制形式进行输入
  .InputLen = 0 '每次读完缓冲区中字符
  .InBufferCount = 0 '清除发送缓冲区数据
  .OutBufferCount = 0 '清除接收缓冲区数据
  End With

  DoEvents
   
errHandle:
  msgValue = MsgBox("COM" + CStr(MSComm.CommPort) + " 打开出错。错误代码:" + CStr(Err.number) + "。" + CStr(Err.Description) + "!", vbOKOnly + vbInformation, "提示")
  If cmdPortOpen.Caption = "关闭串口" Then ’按键还原
  cmdPortOpen.Caption = "打开串口"
  End If
  Exit Sub
End Sub

Public Sub portCheck(msc As MSComm, cmb As ComboBox, flag As Boolean) '端口检查是否可用,放于标准模块中
  Dim str As String
  Dim number As Integer
   
  str = Trim(cmb.Text)
  number = Val(Mid(str, 4, 1))
   
  msc.CommPort = number
  If msc.PortOpen = True Then
  msc.PortOpen = False
  flag = True
  Else
  flag = False  
End Sub

程序执行时未实例化端口,直接跳到错误处理语句,之后就退出子过程了!

问:
  1、MSComm 的初始化必须要放在Frame——Load()事件中吗?
  2、MSComm 初始化时,是要先指定端口并打开之后再设置诸如settings,input之类的东东还是反过来,还是这个没有特别限制,请指点?

我有参考:http://www.vbgood.com/thread-82688-1-1.html的解释,正在琢磨中^

小弟初学串口通信,求高人指点,可发送至邮箱:qingfy2007@126.com,不胜感激!!!




[解决办法]
LZ给出的http://www.vbgood.com/thread-82688-1-1.html链接的2L(本人)有过回复.
[解决办法]
参考一下这个代码:http://download.csdn.net/source/1262066
[解决办法]
On Error GoTo errHandle先去掉,然后看哪一行出错

热点排行