Ich lese Daten über TCP von einer Kamera, ich sende zuerst einen Auslöser über TCP, um ein Bild zu machen, als nächstes lese ich das Bild der Kamera. Alles funktioniert, bis 296 Trigger ausgeführt werden, ab diesem Moment wird das Programm beim ersten TCP-Lesen blockiert.Lesen von TCP-Daten von der Kamera stoppt nach einer bestimmten Anzahl von Bildern
Ich kann vorübergehend beheben, indem Sie erneut einen Trigger (von einem anderen Programm) senden. Ich glaube in diesem Moment wird die Kamera 2 mal ausgelöst (möglicherweise die blockierte und der neue Auslöser (zu beheben)).
Jeder hat eine Idee was könnte schief gehen? Vielen Dank!
'Code in Timer
'Trigger
Dim tcpClient As New System.Net.Sockets.TcpClient()
tcpClient.Connect("ip", port)
Dim networkStream As NetworkStream = tcpClient.GetStream()
If networkStream.CanWrite Then
networkStream.Write(dataTrigger, 0, n)
tcpClient.Close()
Else
If Not networkStream.CanWrite Then
Console.WriteLine("cannot read data from this stream")
tcpClient.Close()
End If
End If
networkStream.Close()
'Read images
Dim tcpClient As New System.Net.Sockets.TcpClient()
tcpClient.Connect("ip", port)
Dim networkStream As NetworkStream = tcpClient.GetStream()
If networkStream.CanRead Then
' Reading data length
Dim dataLength(15) As Byte
networkStream.Read(dataLength, 0, 16)
' Reading all data
Dim bytesReaded, bytesLeft, bytesCounter As Integer
bytesCounter = 0
bytesLeft = dataLength
Do While bytesLeft > 0
bytesReaded = networkStream.Read(dataImages, bytesCounter, bytesLeft)
bytesCounter = bytesCounter + bytesReaded
bytesLeft = dataLengthInt - bytesCounter
Loop
tcpClient.Close()
Else
If Not networkStream.CanRead Then
Console.WriteLine("cannot not write data to this stream")
tcpClient.Close()
End If
End If
networkStream.Close()
Vielen Dank, dies kann ein Grund sein, obwohl ich denke, dies würde die Funktion nicht blockieren. Die dataLengthInt-Konvertierung wird weggelassen. –