TCP-IP を介してカメラから画像を取得するために vb6 を使用しています。現在、画像をバイト単位で受信し、テキストに書き込み、画像形式に変換するには、約 9 秒かかります。画像の合計サイズは約 1.6 MB で、各パケット サイズは 8192 バイトです。もう 1 つの問題は、100% の CPU 使用率です。
現在、画像の表示を高速化し、CPU 処理を削減する方法を見つけています。VB はマルチスレッドをサポートしていないためです。私はいくつかの選択肢しか残していません。
レジストリの DefaultReceiveWindow を変更して、ソケットの受信サイズを 8192 バイトから 16384 バイトに増やそうとしました ( http://smallvoid.com/article/winnt-winsock-buffer.html )
[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
これは私の他の関連する質問ですVB6で画像ファイルストリームの終わりを読む方法