为什么VB 6代码不能打开串口?

问题描述:

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 

控制传递到对错误处理程序为什么VB 6代码不能打开串口?

+1

而且我们有猜测错误信息是什么? (?) – Marco 2010-09-02 14:02:13

+1

@Marco给出发布的代码,它应该是'Object variable或With block variable not set',因为'MSComm1'是'Nothing'。 – GSerg 2010-09-02 14:05:03

+1

我想这是因为你没有初始化MSComm1,尝试将它设置为新的msComm。 设置MSComm1 =新的MSComm(或类似的东西) 这是使用一个控件来做到这一点。 我从来没有使用COM端口..只有一次,但我用了一个很好的OCX:P http://www.thaiio.com/prog-cgi/0002_serial.htm – Marco 2010-09-02 14:17:10

当你说“控制转到错误处理程序”,你忘了添加一个Exit Sub?在你的评论中,你说你添加了新的声明,但是你仍然有问题?那么,我只是运行这个代码,并没有打开端口的麻烦。

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 
+1

注意,vb6不允许Dim MSComm1作为新的MSComm。它必须是两个语句:Dim MSComm1 Set MSComm1 = New MSComm and you * must * include the“Set” – Mawg 2010-09-03 03:21:23

+0

@mawg:正如我所说的,*我刚刚运行此代码,并且它没有打开端口*的麻烦。你是否?如果你这样做了,而且它不适合你,那么我想我们还有另一个问题需要解决。也许你应该发问一个问题,为什么它不起作用? – raven 2010-09-03 03:44:40

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

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