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