通过TCP / UDP发送串行字节数据 - Visual Basic

时间:2013-04-01 23:43:51

标签: vb.net stream byte tcpclient networkstream

我正在构建一个.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的直接输出。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

如果这个问题捕获了其他任何人......那就是我代表数据类型的方式。正确的格式是:

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