VB.net AxWinsock控件如何从服务器端正确接收全部的返回信息
有个问题很困扰啊,希望哪位大神给解答一下:
我的服务器端是一个ZLAN串口服务器,目的是在笔记本上使用程序控制挂在该服务器上的Modbus设备
我编的程序实现了对设备的控制,但是设备的返回码确读不出来,使用厂家提供的调试工具却监控到了。
代码如下:
If AxWinsock1.CtlState = MSWinsockLib.StateConstants.sckConnected Then
MsgBox("传输数据")
Dim SendStr As String = "" '要发送的命令 我发送的是控制命令01 03 00 00 00 01 84 0A
Dim TempStr As String = ""
Dim LL As Integer
For i = 1 To Len(TextBox4.Text) ‘文本内容为’01 03 00 00 00 01 84 0A
TempStr = Mid(Trim(TextBox4.Text), i, 1) '把要传送的数据中的空格去掉
If TempStr <> " " Then
SendStr = SendStr + TempStr
End If
Next i
LL = SendStr.Length / 2 - 1
Dim Cmd(LL) As Byte '要发送的命令 16进制数组格式
For i = 0 To LL '将文本转换为16进制数 的数组 用以发送
Cmd(i) = Val("&H" + Mid(SendStr, i * 2 + 1, 2) + "&")
Next i
AxWinsock1.SendData(Cmd)
Dim back As Byte
Dim Count0 As Integer = 0
Dim showmsg As String = ""
If AxWinsock1.BytesReceived Then
AxWinsock1.GetData(back)
showmsg = Hex(back) + " "
Do While back <> 0
AxWinsock1.GetData(back)
If Len(Hex(back)) = 1 Then
showmsg = showmsg + "0" + Hex(back) + " "
Else
showmsg = showmsg + Hex(back) + " "
End If
Loop
End If
程序运行之后,被控仪器执行的正确,但是只返回了FA 07 13 02 FA 02 28 4F E2 14 EC 27 FA FF 00
设备执行后的代码没有返回,应该在这个代码后面紧跟:FA 01 01 01 03 02 00 00 B8 44
也就是完整的返回代码应该为FA 07 13 02 FA 02 28 4F E2 14 EC 27 FA FF 00 FA 01 01 01 03 02 00 00 B8 44。
求大神指导一下,谢谢