Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
11/03/09 21:23
marco1
Salve, a me mi servirebbe il vostro utilissimo aiuto per risolvere un probleme che non e proprio da poco (almeno per me). Io avrei bisognio di far apparire in un picturebox l'immagine diuna Webcam (USB). Come inserire l'immagine lo so fare, ma come ricevere i dati con VB6 non saprei proprio!. Potete aiutarmi?:-?:asd:
aaa
12/03/09 14:28
GrG
metti una picturebox(chiamala picture1) nel progetto e...
in un modulo:
Global Const ws_child As Long = &H40000000
Global Const ws_visible As Long = &H10000000
Global Const WM_USER = 1024
Global Const wm_cap_driver_connect = WM_USER + 10
Global Const wm_cap_set_preview = WM_USER + 50
Global Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
Global Const WM_CAP_DRIVER_DISCONNECT As Long = WM_USER + 11
Global Const WM_CAP_DLG_VIDEOFORMAT As Long = WM_USER + 41
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal a As String, ByVal b As Long, ByVal c As Integer, ByVal d As Integer, ByVal e As Integer, ByVal f As Integer, ByVal g As Long, ByVal h As Integer) As Long


Nel form inserisic queste sub:
Dim hwdc As Long
Dim startcap As Boolean

Private Sub Apri() 'Apre
Dim temp As Long
hwdc = capCreateCaptureWindow("Dixanta Vision System", ws_child Or ws_visible, 0, 0, 320, 240, Picture1.hWnd, 0)
If (hwdc <> 0) Then
temp = SendMessage(hwdc, wm_cap_driver_connect, 0, 0)
temp = SendMessage(hwdc, wm_cap_set_preview, 1, 0)
temp = SendMessage(hwdc, WM_CAP_SET_PREVIEWRATE, 30, 0)
startcap = True
Else
MsgBox ("No Webcam found")
End If
End Sub

Private Sub Chiudi() 'chiude
Dim temp As Long
If startcap = True Then
temp = SendMessage(hwdc, WM_CAP_DRIVER_DISCONNECT, 0&, 0&)
startcap = False
End If
End Sub

Private Sub VideoFormat() 'formato video
Dim temp As Long
If startcap = True Then
temp = SendMessage(hwdc, WM_CAP_DLG_VIDEOFORMAT, 0&, 0&)
End If
End Sub

Per far apparire l'immagine catturata basta che richiami la sub Apri
aaa
13/03/09 7:36
marco1
Io ho la Webcam (USB) connessa. E ho compilato il programma come mi avete detto. Ma nella Picture si presenta solo un rettangolo nero; Puoi essere la Webcam che non funziona bene?
aaa
13/03/09 9:42
ruggy94
per vedere se la webcam funziona ti conviene provarla con dei programmi sicuramente funzionanti...tipo la videochiamata di msn o skype oppure (se c'è;) con il programma che ti viene dato insieme alla webcam
aaa
14/03/09 8:54
marco1
Else
MsgBox ("No Webcam found";)
End If

leggendo questo ho capito che se la Webcam non e conessa mi dovrebbe avertire; e invece, anche con la vebcam sconessa, mi disegna il rettangolo nero!Forse il rettangolo nero non e neanche l'immagine della Webcam!?
aaa
14/03/09 9:14
GrG
purtroppo io non dispongo di una webcam anche se avevo fatto un progetto che la usava e a un mio amico questo codice funzionava... mmm...rivedrò meglio il progetto ora non posso. Intanto googla un pò che il materiale si trova...ad esempio:
vb-helper.com/…
codeproject.com/KB/vb/…
ecc..
aaa
14/03/09 10:39
theprogrammer
Il codice funziona regolarmente.

Il messaggio non e' corretto ... se quella API fallisce non e' perche' non c'e' la webcam ma per altri motivi.
aaa
14/03/09 11:56
marco1
OK! grazie del informazione, penyandoci sara la Webcam che non funziona. Passero l'exe a un amicho! E si vedra:asd:.
Pero un altra cosa mi turba!:
Perche alla picture che ho aplicato il codice il comando ".Cls" (per pulirla) non fa alcun efetto?

Forse la libreria ripete l' inmagine sequenzialmente restituendomi gia il filmato? (e quindi rinnova la foto subito doo la pulitura?):-?:-?:-?
aaa