|
| Caméra Dino-Lite et assemblages .NET |
| Iniciado por Adri1b, 16,jul. 2020 12:38 - 3 respuestas |
| |
| | | |
|
| |
Miembro registrado 182 mensajes |
|
| Publicado el 16,julio 2020 - 12:38 |
Bonjour, Pour un projet, nous avons fait le choix de remplacer notre caméra par un modèle de la marque Dino-Lite. La caméra dispose d'un bouton permettant de déclencher, par exemple, la prise d'une photo, d'un enregistrement vidéo, etc. Pour pouvoir récupérer l'action sur ce bouton, il faut utiliser deux fichiers d'assemblage .NET (basé sur VideoCapX d'après mes recherches).
J'ai donc ajouté les deux fichiers DLL dans les assemblages .NET de WD, ainsi que l'assemblage "System". J'ai créé un champ .NET intitulé par défaut "WinForm1". Voici ci-dessous le code que j'ai mis :
MicroTouchDelegate est un DNVideoXLib._DDNVideoXEvents_MicroTouchPressedEventHandler dynamique
WinForm1.VideoDeviceIndex = 0 WinForm1.UseVideoFilter = DNVideoXLib.vcxUseVideoFilterEnum.vcxBoth WinForm1.VideoRenderer = DNVideoXLib.vcxVideoRendererEnum.vcxGDI
WinForm1.Connected = Vrai WinForm1.PreviewScale = Vrai WinForm1.Preview = Vrai
WinForm1.LightOn(1) WinForm1.EnableMicroTouch(Vrai)
MicroTouchDelegate = DotNetDélégué(IsPressed, "DNVideoXLib._DDNVideoXEvents_MicroTouchPressedEventHandler") WinForm1:add_MicroTouchPressed(MicroTouchDelegate) Sur la dernière ligne, j'ai systématiquement ce message d'erreur :
L'invocation de la méthode du type a échoué Le framework .NET a renvoyé l'erreur suivante : Impossible de convertir l'objet de type 'DNVideoXLib._DDNVideoXEvents_MicroTouchPressedEventHandler' en type 'System.EventHandler'.
Pile des appels : Demande de mise à jour de l'affichage de Win_Main (Win_Main), ligne 15
Date : 16/07/2020 12:34:04 Projet : WD Dino-Lite (16.00Cj)
Informations supplémentaires : Code erreur : 200002 Module : 'wd250net4.dll (01F250089f - 25.0.329.0) Informations de débogage : System.ArgumentException: Impossible de convertir l'objet de type 'DNVideoXLib._DDNVideoXEvents_MicroTouchPressedEventHandler' en type 'System.EventHandler'. à System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast) à System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr) à System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig) à System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) à System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) à CDotNetMethod.bInvoke(Char* pszTypeName, Char* pszMethodName, Char* pszParameters, MethodInfo gcMethod, Object gcObj, CSLevel* pclPile, Int32 nNbParamPile, Int32 bValeurRetour, STOperationDotNet* pstOperation) EIT_EXCEPTIONDOTNET EIT_TYPE_WDFILE : <2> EIT_IDCODE : <234>
Au cas où, je donne le code sous VB.Net qui concerne cette fameuse action :
Public WithEvents v As AxDNVIDEOXLib.AxDNVideoX
Private Sub MicroTouch_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MicroTouch.CheckedChanged If MicroTouch.CheckState = 1 Then v.EnableMicroTouch(True) Else v.EnableMicroTouch(False) End If End Sub
Private Sub v_MicroTouchPressed(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles v.MicroTouchPressed If MicroTouch.CheckState = 1 Then Command3_Click(Command3, New System.EventArgs()) End Sub
Private Sub Command3_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command3.Click Dim f As New Form2 If v.Preview Then On Error GoTo errhand f.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None f.BackgroundImage = v.GrabFrame f.Show() 'f.BackgroundImage.Save("c:\sample.bmp") v.SaveFrame("c:\sample.bmp") Exit Sub errhand: f = Nothing Exit Sub End If End Sub
Merci beaucoup par avance si quelqu'un peut me dépanner, car cela fait plusieurs semaines que je cherche et que j'essaie plusieurs méthodes mais rien n'y fait . |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes |
|
| Publicado el 16,julio 2020 - 15:00 |
hello, et si tu remplaces les deux dernières lignes par :
WinForm1:add_MicroTouchPressed(DotNetDélégué("IsPressed", "System.EventHandler"))
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 182 mensajes |
|
| Publicado el 17,julio 2020 - 11:32 |
Hello Jurassic Pork, Ça fonctionne effectivement avec cet argument. Merci beaucoup . |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 182 mensajes |
|
| Publicado el 20,julio 2020 - 17:59 |
Bonjour, J'espère que tu verras ce message @Jurassic Pork. Je sais que la question n'a pas grand chose à voir avec la demande initiale, mais elle est indirectement liée en fait . Je voulais s'il était normal que le champ .Net disparaisse quand je clique dessus. Il n'y a aucun événement sur ce champ, et il n'est pas possible de le rendre cliquable dans ses propriétés. Merci par avance . |
| |
| |
| | | |
|
| | | | |
| | |
|