-1

FINSコマンドを送信し、UDPを使用して応答を受信しようとしている単純なvb.netプログラムがあります。私は次の質問を参照点FINS Commands C#として使用してきましたが、私のパケットに何か問題があると思います。

現在のプログラムには 4 つのテキスト ボックス ( TBIPTBPORTTBSENDTBReceive) があります。プログラムを実行すると、送信する IP、ポート、パケット情報を入力し、ボタンをクリックします。私がしたいのは、受け取った情報が に送信されることTBReceiveです。

私の Form Load コードは次のようになります。

Dim publisher As New Sockets.UdpClient(0)
Dim Subsriber As New Sockets.UdpClient(9600)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Subsriber.Client.ReceiveTimeout = 5000
        Subsriber.Client.Blocking = False


    End Sub

マイボタンクリック:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        publisher.Connect(TBIP.Text, TBPort.Text)
        Dim Sendbytes() As Byte = ASCII.GetBytes(TBSend.Text)
        publisher.Send(Sendbytes, Sendbytes.Length)

        Subsriber.Client.Blocking = True


        Timer1.Start()

    End Sub

マイタイマー:

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Try
            Dim ep As IPEndPoint = New IPEndPoint(IPAddress.Any, 0)
            Dim rcvbytes As [Byte]() = Subsriber.Receive(ep)
            Dim returndata As String = ASCII.GetString(rcvbytes)

            TBReceive.Text = returndata.ToString

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class

Omron PLC で、CIO 100 を読み取ろうとしています。私の IP アドレスは 10.0.1.91 なので、私の文字列は以下のとおりです。(5B は最後のオクテットです):

80 00 02 01 02 00 01 5B 00 12 01 01 00 00 12 34

読みやすいように、HEX ビットの間にスペースを追加しました。

最初の問題は、情報を ASCII に変換または送信しようとしている可能性がありますか? どんな助けでも大歓迎です。

4

1 に答える 1