【问题标题】:Why won't this VB 6 code open the serial port?为什么这个 VB 6 代码不能打开串口?
【发布时间】:2013-02-21 15:48:28
【问题描述】:
Dim MSComm1 As MSComm

on error goto cant_open_com1

MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.DTREnable = True
MSComm1.Handshaking = comRTS
MSComm1.InBufferSize = 12 + 1  ' +1 for the CR
MSComm1.RThreshold = MSComm1.InBufferSize
MSComm1.RTSEnable = True
MSComm1.InputLen = 0 ' read entire input buffer
MSComm1.InputMode = comInputModeText
MSComm1.NullDiscard = True
MSComm1.OutBufferSize = 0 ' not used, we don't write to the serial port
MSComm1.SThreshold = MSComm1.OutBufferSize
'MSComm1.ParityReplace = ?

MSComm1.PortOpen = True

控制传递给 on 错误处理程序

【问题讨论】:

  • 我们必须猜测错误信息是什么? (?)
  • @Marco 给定发布的代码,它应该是Object variable or With block variable not set,因为MSComm1Nothing
  • 我猜是因为你没有初始化 MSComm1,尝试将它设置为 NEW msComm。 set MSComm1 = New MSComm(或类似的东西)这是使用控件来完成的。我从未使用过 com 端口.. 只有一次,但我使用了一个不错的 OCX :P thaiio.com/prog-cgi/0002_serial.htm
  • 我将添加代码以获取错误消息。糟糕,我是新手——我需要创建一个 MSCOMM1 对象,而不仅仅是声明它吗?我发现的示例 100% 没有。感谢您的反馈,+1 给双方
  • 我不知道MSComm是一个什么样的对象,在例子中我发现它是一个可以添加的控件。但是,当您尝试使用类时,您需要声明并创建对象。如果您说 MSComm1 是 Nothing,那么您还没有创建它。我不知道给你一个正确的答案,但我认为我没有那么错

标签: vb6


【解决方案1】:

当您说“控制传递给错误处理程序”时,您是否忘记添加Exit Sub?在您的 cmets 中,您说您添加了 New 声明,但您仍然遇到问题?好吧,我刚刚运行了这段代码,打开端口没有问题。

Private Sub Form_Load()

  Dim MSComm1 As New MSComm

  On Error GoTo cant_open_com1

  MSComm1.CommPort = 1
  MSComm1.Settings = "9600,N,8,1"
  MSComm1.DTREnable = True
  MSComm1.Handshaking = comRTS
  MSComm1.InBufferSize = 12 + 1
  MSComm1.RThreshold = MSComm1.InBufferSize
  MSComm1.RTSEnable = True
  MSComm1.InputLen = 0
  MSComm1.InputMode = comInputModeText
  MSComm1.NullDiscard = True
  MSComm1.OutBufferSize = 0
  MSComm1.SThreshold = MSComm1.OutBufferSize

  MSComm1.PortOpen = True

  Exit Sub

cant_open_com1:
    Debug.Print Err.Description

End Sub

【讨论】:

  • 注意,vb6 不允许将 MSComm1 调暗为新的 MSComm。它必须是两个语句: Dim MSComm1 Set MSComm1 = New MSComm 并且您必须包括“Set”
  • @mawg:正如我所说,我刚刚运行了这段代码,打开端口没有问题。你是否?如果你这样做了,但它对你不起作用,那么我想我们还有另一个问题需要解决。也许您应该发布一个问题,询问为什么它不起作用?
【解决方案2】:

不要在端口 COM1 上设置打印机。 COM1 端口将被 COM1 端口中的打印机占用。使用 Visual Basic MSCOMM 组件时,不需要任何打印机驱动程序。如果您确实在 COM1 端口中设置了打印机。您可以使用以下代码。此代码不受打印机设置的影响。

Visual Basic:为输出 AS #1 打开“COM1”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多