0

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で画像ファイルストリームの終わりを読む方法

4

0 に答える 0