1

有另一个程序员编写的代码我想改进。该模块的目的是从摄像头获取实时图像流并将其显示在图片窗口中。它是通过 TCP IP 连接进行的。这是如何完成的

Private Sub DataArrival(ByVal bytes As Long)

Dim str As String
' check the socket for data 
camera.GetData str
Dim str As String

While InStr(str, Terminator) <> 0

**Do some processing and put only the data in the variable str

 str = Mid(str, index, 1000)
 lImgSize = lImgSize + Len(str)
 strImg = strImg + str

  If lImageSize >= 1614414 Then
            Dim fileno As Integer
            fileno = FreeFile()
            Open ".\Imagefile.txt" For Output As #intFileNo
            Print #fileno , strImg
            Close #fileno 

  End If

End Sub

我有一个输入图像流来并将其转换为字符串,我正在计算大小以检查图像的结尾以将其写入文件。但是硬编码值并不能保证文件总是结束。有时,如果图像大小略小于大小,我的图片框不会更新为实时图像。

编辑:这是 image.txt 文件包含的内容。

1
1575020 // file size header
424D36040C0000000000360400002800000000040000000300000100080000000000000000000000
--data--
--data--
020303030203010302010202030002030203020302020302030202030102
3BFB

在VB6中有没有其他有效的方法来处理这个?

4

1 回答 1

1

您需要同意一个完整的协议,该协议指定您将如何通过 TCP 流传递图像数据和图像数据长度。

然后在您的接收器中,您开始将数据读入缓冲区,直到您获得足够的数据来包含您的标头。此时,您可以解析出数据长度,然后继续将数据读取到数据缓冲区中,直到您至少获得该数量的数据。当您最终获得所有数据时,您可以解码并保存图像数据,然后关闭流(如果它是一个关闭)或从头开始并解析文件头。

您可以在#VB wiki上找到更多信息。

于 2013-03-08T08:52:39.860 回答