#tcp #controller #hex #ip #ethernet
Вопрос:
Имеется собственный контроллер с установленным Ethernet (K-7). Руководитель может быть опрошен командой («FF A1 C1 FD»). Контроллер также отвечает на опросы (FF C2 00 32). Он написал тестовую программу для VB6 — программа и контроллер работают нормально. Но при написании программы на VB.NET, возникает ошибка — программа зависает (в любое время). Что может быть? Ошибка в строке: ns.Чтение(байт, 0, байт.Длина)
Импортирует System.Net.Сокеты
Форма Публичного Класса1
Public TextString As String = "FF A1 C1 FD"
Dim Podkl As Byte
Dim tc As TcpClient
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Button4.Enabled = False
If My.Computer.Network.Ping("192.168.1.7") = True Then
Podkl = 1
Timer1.Enabled = True
End If
End Sub
Sub Send_tcp()
Label1.Text = 1
TextBox5.Text = ""
Dim parts As String() = TextString.Split(" ")
Dim bytes(parts.Length) As Byte
If tc Is Nothing Then tc = New TcpClient("192.168.1.7", 23)
Dim ns As NetworkStream = tc.GetStream()
For i As Integer = 0 To parts.Length - 1
bytes(i) = Convert.ToByte(parts(i), 16)
Next
'Try
'Send request to controller
ns.Write(bytes, 0, bytes.Length)
ns.Flush()
'Received a response from the controller
ns.Read(bytes, 0, bytes.Length)
ns.Flush()
' ns.Close()
For f = 0 To parts.Length - 1
TextBox5.Text amp;= H_Hex(bytes(f))
Next
' Catch ex As Exception
' End Try
End Sub
Public Function H_Hex(Text As String) As String
If Len(Text) = 0 Then Exit Function
If (Len(Hex(Text)) Mod 2) Then
H_Hex = "0" amp; Hex(Text) amp; " "
Else
H_Hex = Hex(Text) amp; " "
End If
End Function
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If Podkl = 1 Then Send_tcp()
End Sub
Конечный класс