【发布时间】:2013-03-05 09:23:34
【问题描述】:
我想改进另一个程序员编写的代码。该模块的目的是从摄像头获取实时图像流并将其显示在图片窗口中。它是通过 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 中有没有其他有效的方法来处理这个问题?
【问题讨论】:
-
似乎是一种确定图像是否完整的危险方法。有没有办法发出完成信号。图像数据是如何传输给您的?
-
编辑以包含完整的代码,请不要省略。
-
字符串中的数据通常被认为是文本,并且您也在使用文本 I/O 操作。 Unicode 和 ANSI 之间的转换可能会导致二进制信息上的各种数据损坏,并且这样最多会为图像数据消耗两倍的内存。
-
我同意发件人应该提供长度前缀标头值或一些带外信号,如连接关闭。否则你是在求魔法。
-
@Bob77 我有接收方发送的总文件大小标头。但它只包括数据的大小。