johann36
Messages postés130Date d'inscriptiondimanche 15 février 2004StatutMembreDernière intervention 9 mai 2017
-
13 juin 2010 à 09:11
Utilisateur anonyme -
18 juin 2010 à 21:35
Bonjour à tous,
J'ai trouvé sur pas mal de post des liens concernant des téléchargements d'appli fonctionnant en vb.net utilisant l'OPC.
Justement, cela fait tout mon bonheur car je dois lire des variables automates sur des séries Premium (Schneider).
Mon soucis, c'est qu'ils utilisent tous une dll nommé "OPCDAAuto.dll", quand j'ajoute celle-ci dans les référence de vb.net version 2008 tout ce passe. Hors lorsque je veux exploiter les fonctions qui sont proposées j'ai le message d'erreur suivant :
"Impossible de charger le fichier ou l'assembly 'Interop.OPCAutomation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Le fichier spécifié est introuvable."
Je suis bloqué sur ce problème et je souhaiterai trouvé une solution, je m'en réfère donc à vous tous.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 13 juin 2010 à 10:33
Vérifie la doc mais le message est clair, "Le fichier spécifié est introuvable"
Alors il ne s'agit peut-être pas de ce fichier dll mais d'un autre fichier que cette dll utilise.
Quand j'avais utiliser les serveurs OPC, il y a quelques années maintenant, il y avait une partie "client OPC" à installer sur le poste, cela ne se résumé pas seulement à la dll que l'on intégrait au projet (en VB6 à l'époque).
C'est peut-être toujours le même principe
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
johann36
Messages postés130Date d'inscriptiondimanche 15 février 2004StatutMembreDernière intervention 9 mai 2017 13 juin 2010 à 12:06
Tout d'abords merci pour vos réponses,
Casy :
Quand tu parles d'installer la partie, tu trouves ça où ? Car moi à part utiliser la dll je n'ai fait rien d'autres.
Banana32 :
L'import je l'utilise dans l'entête de ma classe principale (voir ci-dessous).
Imports OPCAutomation
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Déclaration de l'objet serveur OPC
Dim SrvOPC = New OPCAutomation.OPCServer
'
SrvOPC.Connect("FILTRE45", "")
End Sub
End Class
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 13 juin 2010 à 16:11
Salut,
Le composant que tu utilises est un composant COM (ActiveX), pour être exploité en .Net, il doit disposer d'une architecture semblable à toutes classes .Net, ce qui n'est pas la cas. Voila pourquoi lors de l'ajout d'un composant COM en .Net, Visual Studio crée un Composant intermédiare Interop.Toncomposant.dll permettant l'interopérabilité avec celui-ci.
Tu passes donc par Interop.OPCDAAuto.dll pour agir au sein de ton code behind mais celle-ci requière l'installation et l'enregistrement du coposant COM qu'elle utilise dans l'environnement ou elle est exécuté (c'est pour cela que tu n'as pas d'erreur dans l'éditeur lui même).
Tu dois donc placer "OPCDAAuto.dll" (pas l'interop) dans ton système (préférable), et enregistrer celle-ci dans le registre de windows via "regsvr32.exe OPCDAAuto.dll"
ATTENTION: pour les OS 64Bits c'est :
"x:\Windows\SysWow64\regsvr32.exe OPCDAAuto.dll"
x étant la lettre du lecteur système vous l'aurez compris ;O)
Ne pas oublier de définir l'architecture x86 uniquement dans les options de compile du projet.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Vous n’avez pas trouvé la réponse que vous recherchez ?
johann36
Messages postés130Date d'inscriptiondimanche 15 février 2004StatutMembreDernière intervention 9 mai 2017 13 juin 2010 à 17:27
Bonjour Mayzz,
Merci pour ta réponse et tes précieuses explications, cependant j'ai un petit soucis avec regsvr32.exe.
J'ai fait comme tu l'as écrit dans ton post (enfin du moins je pense), j'ai ouvert l'invite de commande DOS, saisie la ligne de commande suivante :
"C:\Windows\System32\regsvr32.exe OPCDAAuto.dll" et il m'indique le message d'erreur suivant :
"C:\Windows\System32\regsvr32.exe OPCDAAuto.dll"' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.
Tu as indiqué qu'il ne fallait pas utiliser la dll "Interop.OPCDAAuto.dll", j'ai donc saisie la dll "OPCDAAuto.dll".
Petite info : - La DLL Interop.OPCAutomation.dll a une taille de 36 Ko.
- La DLL OPCDAAuto.dll a une taille de 228 Ko.
Les DLL je les ai récupéré dans le source qui a été déposé "jjmaster" au lien suivant : Tapez le texte de l'url ici.
johann36
Messages postés130Date d'inscriptiondimanche 15 février 2004StatutMembreDernière intervention 9 mai 2017 13 juin 2010 à 20:22
Ok ! Super ! Mayzz, j'ai réussi à le déclarer dans la base de registre.
Dans l'invite de commande DOS j'ai saisie la ligne de commande suivante :
regsvr32 "C:\OPCDAAuto.dll"
Cela a fonctionné à merveille maintenant j'essaierai demain pour voir si je peux lire une variable automate, je tiens informé.
En tout cas merci de ton aide.