0

シリアルポートを介してコンピューターにデータを送信しています。したがって、データが上記のポートに到着したらロードされるVBNetプログラムをロードしたいと思います。つまり、プログラムはポートに到着するデータによってトリガーされます。

どうすればそれを実装できますか?

4

1 に答える 1

1

これを試して。3 バイトが受信されると仮定します。送信するバイト数に合わせて変更する必要があります。Mark が示唆するように、Process を使用してプログラムを開始します。または、シェルを使用することもできます。

Imports System.IO.Ports

Public Class COMControl

Private WithEvents comPort As SerialPort

Public Sub New(comPortNumber As Integer)

    comPort = New SerialPort
    With comPort
        .BaudRate = 9600
        .Parity = IO.Ports.Parity.None
        .StopBits = IO.Ports.StopBits.One
        .DataBits = 8
        .PortName = "COM" & comPortNumber.ToString
        .ReceivedBytesThreshold = 3
        .Open()
    End With

End Sub


Private Sub comPort_DataReceived(sender As Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles comPort.DataReceived

    If comPort.BytesToRead = 3 Then
        Dim by(comPort.BytesToRead - 1) As Byte

        'Read the bytes from the port...
        comPort.Read(by, 0, comPort.BytesToRead)

        '...into an array of bytes
        Dim byList As New List(Of Byte)
        byList.AddRange(by)

        Dim inp As String = System.Text.Encoding.ASCII.GetString(by)

        Select Case inp

            Case "P01"
                Process.Start("PO1.exe")

            Case "P02"
                Process.Start("PO2.exe")

        End Select

    End If
End Sub
End Class
于 2013-02-03T17:51:04.777 に答える