1,502
社区成员
发帖
与我相关
我的任务
分享
Private Sub Timer3_Timer()
On Error Resume Next
Timer3.Enabled = False
If Video_Handle <> 0 Then
Dim x As StdPicture
Set x = CapturePicture(Video_Handle)
SavePic Clipboard.GetData, FileName, "jpg" ' 压缩为jpg格式以减小图片
Winsock1.SendData "PS"
End If
End Sub
Private Sub Winsock1_Close()
If Winsock1.State <> sckClosed Then
Winsock1.Close
Winsock1.Listen
End If
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then
Winsock1.Close
End If
Winsock1.Accept requestID
Timer3.Enabled = True
Timer3.Interval = 1
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Static Cur_Pos As Long, FileLen As Long
Dim strData As String, j
Dim Buf() As Byte
Winsock1.GetData strData
Select Case Trim(strData)
Case "Get_Picture"
If Dir$(FileName) <> "" Then ' 找到该文件
Open FileName For Binary As #1
FileLen = LOF(1)
ReDim Buf(1 To BlockSize) As Byte
Get #1, , Buf
Winsock1.SendData Buf
Cur_Pos = BlockSize
End If
Case "Next_Block"
If Cur_Pos >= FileLen Then
Winsock1.SendData "EF"
Close #1
Timer3.Enabled = True ' 数据传输完毕,开始抓图
Timer3.Interval = 10
Exit Sub
End If
j = Cur_Pos + BlockSize
If j > FileLen Then
j = FileLen - Cur_Pos
Else
j = BlockSize
End If
ReDim Buf(1 To j) As Byte
Get #1, , Buf
Winsock1.SendData Buf
Cur_Pos = Cur_Pos + j
End Select
End Sub
Private Sub wskClientCamera_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Static FileNum As Integer, FileLen As Long
Dim Buf() As Byte
Dim j As Integer
ReDim Buf(bytesTotal) As Byte
wskClientCamera.GetData Buf, vbByte
If bytesTotal = 2 And Chr(Buf(0)) = "P" And Chr(Buf(1)) = "S" Then ' 准备接受图片
If Dir$(FileName) <> "" Then Kill FileName ' 找到该文件,则将其清除
FileNum = FreeFile
Open FileName For Binary Access Write As #FileNum
FileLen = 0
wskClientCamera.SendData "Get_Picture" ' 发送开始接受图片指令
Exit Sub
End If
If bytesTotal = 2 And Chr(Buf(0)) = "E" And Chr(Buf(1)) = "F" Then ' 图片传输完毕
Close #FileNum
Me.picCamera.Picture = LoadPicture(FileName) ' 显示图片
Exit Sub
End If
Put #FileNum, , Buf
wskClientCamera.SendData "Next_Block"
FileLen = FileLen + bytesTotal
End Sub
Private Sub Timer3_Timer()
On Error Resume Next
Timer3.Enabled = False
If Video_Handle <> 0 Then
Dim x As StdPicture
Set x = CapturePicture(Video_Handle)
SavePic Clipboard.GetData, FileName, "jpg" ' 压缩为jpg格式以减小图片
Winsock1.SendData "PS"
Else
MsgBox "这里出错了,所以没继续触发任何数据到达事件!"
End If
End Sub
wskClientCamera.GetData Buf, vbByte
If bytesTotal = 2 And Chr(Buf(0)) = "P" And Chr(Buf(1)) = "S" Then ……
If bytesTotal = 2 And Chr(Buf(0)) = "E" And Chr(Buf(1)) = "F" Then ……