377 messaggi dal 10 settembre 2001
Contributi
mi date una mano!

uso un sistemino preso da codeProject e m9 da il seguente errore!

System.Runtime.InteropServices.COMException: ERROR GrabFrame().



Microsoft dice che c'è un baco:


Site: Microsoft Support
Original URL: http://support.microsoft.com/?kbid=815633

Summary:
(815633) - When you call a COM component in Visual Basic .NET, and you use late binding, you may receive the following error message: An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in microsoft.visualbasic.dll. Additional...



Aiutatemi!

Riccardo

dopo la laurea dissi: ho finito gli esami, qualcuno mi rispose: Gli esami non finiscono mai ....
176 messaggi dal 04 giugno 2007
Contributi | Blog
Hai fatto quello che l'articolo ti ha detto di fare, cioè aggiungere una linea di codice con un DispatchWrapepr? Se sì cosa è cambiato?
Dim parametro As Object
'fai il marshalling dell'oggetto a IDispatch prima di passarlo.
parametro= New System.Runtime.InteropServices.DispatchWrapper(Nothing)NomeOggettoConIlMetodoGrabFrame.GrabFrame(parametro)


Se usi VS 2005 o superiore, hai provato ad attivare gli MDA per COM interop e verificare che tu non abbia un problema di altro tipo (signature)?
377 messaggi dal 10 settembre 2001
Contributi
ti ringrazio di vuore per la risposta, ti posto il codice, me lo aggiusteresti tu così come suggerisce Microsoft.

Grazie infinite

Riccardo

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
'Jpeg compression quality
Dim nQuality As Short = 45
'Shout a picture from my webcam
dim cam as object
cam = new CAMSERVERLib.CameraClass
'Dim cam As CAMSERVERLib.Camera = New CAMSERVERLib.CameraClass
Dim picture() As Byte
picture = CType(cam.GrabFrame(nQuality),Byte())
'Add the hour to the jpeg picture
Dim ms As MemoryStream = New MemoryStream(picture)
Dim bmp As Bitmap = New Bitmap(ms)
Dim g As Graphics = Graphics.FromImage(bmp)
Dim strDate As String = (DateTime.Now.ToLongDateString + (" - " + DateTime.Now.ToLongTimeString))
Dim drawFormat As StringFormat = New StringFormat
drawFormat.Alignment = StringAlignment.Center
g.DrawString(strDate, New Font(FontFamily.GenericSansSerif, 12), New SolidBrush(Color.Black), New RectangleF(1, 1, 320, 240), drawFormat)
g.DrawString(strDate, New Font(FontFamily.GenericSansSerif, 12), New SolidBrush(Color.White), New RectangleF(0, 0, 320, 240), drawFormat)
'Get codecs
Dim icf() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders
Dim encps As EncoderParameters = New EncoderParameters(1)
Dim encp As EncoderParameter = New EncoderParameter(System.Drawing.Imaging.Encoder.Quality, CType(nQuality,Long))
'Set quality
encps.Param(0) = encp
bmp.Save(Response.OutputStream, icf(1), encps)
g.Dispose
bmp.Dispose
End Sub

dopo la laurea dissi: ho finito gli esami, qualcuno mi rispose: Gli esami non finiscono mai ....
377 messaggi dal 10 settembre 2001
Contributi
si fatto, e mi da:
Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))

Grazie ancora

Riccardo

dopo la laurea dissi: ho finito gli esami, qualcuno mi rispose: Gli esami non finiscono mai ....
176 messaggi dal 04 giugno 2007
Contributi | Blog
La prima volta hai detto che GrabFrame prende un void, ma ora si scopre che prende uno short int.

Ho provato il codice direttamente scaricando la libreria e a me questo funziona
    'Jpeg compression quality 
    Dim nQuality As Short = 45 
    
    'Shout a picture from my webcam 
    Dim cam As CAMSERVERLib.Camera = New CAMSERVERLib.CameraClass() 
    
    Dim picture As Byte() = CByte(cam.GrabFrame(nQuality)) 
    


Prova...
377 messaggi dal 10 settembre 2001
Contributi
su questa riga:
Dim picture As Byte() = CByte(cam.GrabFrame(nQuality))

mi sottolinea il seguente pezzo: CByte(cam.GrabFrame(nQuality))

e mi dice che: Impossibile convertire il valore di tipo System.Array in Byte

A te funziona??

dopo la laurea dissi: ho finito gli esami, qualcuno mi rispose: Gli esami non finiscono mai ....
176 messaggi dal 04 giugno 2007
Contributi | Blog
Scusa, errore di cut&paste. In effetti il file che funziona ha lo stesso codice che hai tu (e che fa la conversione corretta dell'array con un CType).

Appena ho tempo investigo un po' di più...

Che versione del CLR usi?
377 messaggi dal 10 settembre 2001
Contributi
Cosa intendi per CLR?

Riccardo

dopo la laurea dissi: ho finito gli esami, qualcuno mi rispose: Gli esami non finiscono mai ....

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.