カメラからTCP経由でデータを読み取っているときは、まずTCP経由でトリガーを送信して画像を撮影し、次にカメラ画像を読み取ります。 296回のトリガーが完了するまで、すべての罰金が課されます。その瞬間から、最初のTCP読み取り時にプログラムがブロックされます。特定の量の画像の後にカメラからTCPデータを読み取る
もう一度トリガー(別のプログラムから)を送信することで、これを一時的に修正できます。私はその瞬間にカメラが2回トリガされると信じています(おそらくブロックされたものと新しいトリガ(修正する))。
何が間違っている可能性がありますか?ありがとうございました!
'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()
ありがとう、これは理由がありますが、私はこれが機能をブロックしないと考えています。 dataLengthInt変換は省略されています。 –