3

シリアルから USB へのアダプターに取り付けられたスイッチを押すことによって、(VB で書かれた) プログラムを制御したいと考えています。押すと、プログラム内の特定の機能がアクティブになります。これを実現するには、シリアル ポートの comm_event で関連する com ポートを継続的にポーリングし、その関数を呼び出す必要があります。入力バッファの状態を変更するために、アダプタの送信ピンと接地ピンの間に押しボタン スイッチを接続してみました。時々機能しますが、ほとんどの場合は失敗します。そのため、変化を検出するのに十分な長さの入力バッファ状態を維持するために、長いパルス列を作成する必要があるようです。このようなものに利用できるガジェットはありますか?このタスクを達成できるのは、どのような単純な電子機器ですか。

どんな助けでも大歓迎です。

4

3 に答える 3

1

これは Robert Grier ( Visual Basic Programmer's Guide to Serial Communications, 4th Edition ISBN 1-890422-28-2の著者) による回答です。

スイッチの片側を DTR 出力 (コネクタのピン 4) に接続し、スイッチの反対側を DCD 入力 (ピン 1) に接続します。

ツールボックスから Comm コントロールをフォームにドロップし、ラベルを 1 つ追加します。コード内:

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 -実験インターフェースボード-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 に答える