【问题标题】:Sending serial byte data over TCP/UDP - Visual Basic通过 TCP/UDP 发送串行字节数据 - Visual Basic
【发布时间】:2013-04-01 23:43:50
【问题描述】:

我正在构建一个 .NET WinForms 应用程序以通过 TCP/UDP 向同一网络上的联网电视发送串行命令。 NEC(制造商)创建了一个名为 PD Comms 的工具,它可以做到这一点并且效果很好,但是对于最终用户来说太复杂了。我的界面将有一个按钮,可将所有必要的电源/音量/输入选择命令发送到所有电视。

我遇到的问题是让电视接受我的数据流。我认为问题与我如何将数据发送到面板有关。作为一项试验,我一直在对四台电视中的一台进行简单的开机命令。我的应用程序在连接到网络时成功打开了网络流,因此我输入的 IP 地址/端口没有问题。我发送此命令的代码如下。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim client As New TcpClient("10.71.208.61", 7142)
Dim dataStream As NetworkStream = client.GetStream()
Dim commandData() As Byte = {1, 30, 41, 30, 41, 30, 43, 2, 43, 32, 30, 33, 44, 36, 30, 30, 30, 31, 3, 73, 0D}
dataStream.Write(commandData, 0, commandData.Length)
client.Close()
End Sub

我认为我将数据分配给 commandData 字节数组的行不正确。该命令通过没有任何错误并与面板建立连接。似乎它正在成功发送代码,但电视根本没有响应(打开),这表明我发送的数据格式不正确。我使用的字节数据是 NEC 的 PD Comms Tool 的直接输出。

【问题讨论】:

    标签: vb.net stream byte tcpclient networkstream


    【解决方案1】:

    使用Wireshark 之类的工具检查和比较 NEC 工具发送的 TCP/UDP 数据包和您的代码发送的数据包。

    【讨论】:

      【解决方案2】:

      万一这个问题引起了其他人的注意……这只是我表示数据类型的方式。正确的格式是:

      Dim commandData() As Byte = {&H30, &H30, "&H5F", &H64, &H31, "&H0D"}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多