3

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

任何帮助将不胜感激。

4

3 回答 3

1

这是 Robert Grier 的回答(Visual Basic Programmer's Guide to Serial Communications, 第 4 版 ISBN 1-890422-28-2的作者)我非常感谢他的帮助,因此与所有感兴趣的人分享。

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

从您的窗体的工具箱中删除 Comm 控件并添加一个标签。在代码中:

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
于 2013-02-04T17:41:38.997 回答
0

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

于 2013-01-31T21:43:12.400 回答
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 的状态。您也可以使用此方法访问其他引脚。

于 2013-01-31T23:25:54.170 回答