我正在使用 vb6 通过 TCP-IP 从相机中检索图像,现在以字节为单位接收图像并将其写入文本并转换为图像格式大约需要 9 秒。总图像大小约为 1.6 mb,每个数据包大小为 8192 字节。另一个问题是 CPU 利用率为 100%。
现在我正在寻找一种方法来使图像显示更快并减少 CPU 处理。由于VB不支持多线程。我只剩下几个选择了。
我试图通过更改注册表中的 DefaultReceiveWindow ( http://smallvoid.com/article/winnt-winsock-buffer.html )将套接字接收大小从 8192 字节增加到 16384 字节
[HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services \Afd \Parameters]
DefaultReceiveWindow = 16384
DefaultSendWindow = 16384
但是没有区别。我在带有奔腾处理器的 windows xp 上运行。有没有其他有效的方法可以让图像接收更快?
编辑:
这是接收代码
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