使用串口转USB控制程序

时间:2013-01-31 20:23:00

标签: vb.net serial-port usb usbserial

我们想通过按下连接到串口转USB适配器的开关来控制程序(用VB编写)。按下时,程序中的某个功能将被激活。为了实现这一点,我们需要在串口的comm_event中连续轮询相关的com端口并调用所述函数。我们尝试通过连接适配器的发送和接地引脚之间的按钮开关来改变输入缓冲器的状态。它有时会起作用,但大部分时间都会遗漏。所以我们似乎需要创建一个长脉冲序列来保持输入缓冲区状态的持续时间足以检测到任何变化。这样的东西有没有可用的小工具?什么样的简单电子设备可以完成这项任务。

任何帮助都将受到高度赞赏。

3 个答案:

答案 0 :(得分:1)

以下是罗伯特格里尔(Visual Basic Programmer's Guide to Serial Communications, 4th Edition ISBN 1-890422-28-2的作者)的回答。我很感谢他的帮助,因此与所有感兴趣的人分享了这一点。

将开关的一端连接到DTR输出(连接器的引脚4),将开关的另一端连接到DCD输入(引脚1)

从表格的工具箱中删除Comm控件并添加一个Label。在代码中:

Private Sub Form_Load()

    On Error Resume Next
    With MSComm1
        .CommPort = 3  'use the actual port number that is created when you install your USB adapter
        .PortOpen = True
        .DTREnable = True
        If .PortOpen = False Then MsgBox "Unable to open serial port."
    End With
End Sub

Private Sub MSComm1_OnComm()

    With MSComm1
        If .CDHolding = True Then
            Label1.Caption = "Switch On"
            Label1.BackColor = vbGreen
        Else
            Label1.Caption = "Switch Off"
            Label1.BackColor = vbRed
        End If
    End With
End Sub

答案 1 :(得分:0)

如果我理解正确,计算机没有串行端口,那么您将USB适配器插入PC上的USB端口,然后尝试读取您在适配器的RS-232侧创建的某些条件?我会看一下流量控制引脚DTR / DSR等。你有可用的外部电源吗? RS232通常需要+/- 12v。根据您要实现的目标和环境,您还可以考虑在PC上添加硬件串口,或者使用硬件USB接口,例如:http://www.maplin.co.uk/usb-experiment-interface-board-42857

答案 2 :(得分:0)

我没有对此进行测试,但有些变体......

Private WithEvents com As New IO.Ports.SerialPort

Private Sub com_PinChanged(sender As Object, e As System.IO.Ports.SerialPinChangedEventArgs) Handles com.PinChanged

    Dim pin As IO.Ports.SerialPinChange = e.EventType

    If pin.DsrChanged Then
        MsgBox("DSR changed")
    End If

End Sub

......应该有效。更改DB9连接器上的引脚6的状态。您也可以使用此方法访问其他引脚。