J'utilise un Serveur OPC pour "communiquer" avec des Automates, Variateurs
de vitesse etc...
Je souhaiterais programmer un client OPC en Python.
Pour se faire, je dispose de la dll OPCDAAuto.dll qui contient différentes
classes à instancier pour se connecter aux serveurs puis créer les groupes
et les items ainsi que faire les lectures/ecritures des différents éléments.
L'utilisation de cette dll est immédiate en VB ou VBA, mais j'ai un peu de
mal sous python.
Ma question est la suivante : comment instancier des classes qui sont dans
une dll sous python ?
J'ai vu qu'avec le module ctypes ont pouvait accéder à des fonctions dans
une dll, mais je n'ai pas l'impression que l'on puisse instancier des
objets.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
blukbluk
Un Serveur OPC contient en fait des objets COM, il faut donc passer generer les interfaces COM pour Python avec makepy dans PythonWin. Tu devrais trouver pas mal d'exemple pour piloter Excel ou Word grace aux interfaces IDispatch de tes objets COM En theorie, c'est le meme principe... en pratique c'est peut etre un peu plus dur J'avais jeter un oeil a ca il y a quelques annees, je vais essayer de retrouver ce que j'avais fait mais je me souviens avoir un peu galere Bon courage
Un Serveur OPC contient en fait des objets COM, il faut donc passer
generer les interfaces COM pour Python avec makepy dans PythonWin.
Tu devrais trouver pas mal d'exemple pour piloter Excel ou Word grace
aux interfaces IDispatch de tes objets COM
En theorie, c'est le meme principe... en pratique c'est peut etre un
peu plus dur
J'avais jeter un oeil a ca il y a quelques annees, je vais essayer de
retrouver ce que j'avais fait mais je me souviens avoir un peu galere
Bon courage
Un Serveur OPC contient en fait des objets COM, il faut donc passer generer les interfaces COM pour Python avec makepy dans PythonWin. Tu devrais trouver pas mal d'exemple pour piloter Excel ou Word grace aux interfaces IDispatch de tes objets COM En theorie, c'est le meme principe... en pratique c'est peut etre un peu plus dur J'avais jeter un oeil a ca il y a quelques annees, je vais essayer de retrouver ce que j'avais fait mais je me souviens avoir un peu galere Bon courage
pierlau
Un Serveur OPC contient en fait des objets COM, il faut donc passer generer les interfaces COM pour Python avec makepy dans PythonWin. Tu devrais trouver pas mal d'exemple pour piloter Excel ou Word grace aux interfaces IDispatch de tes objets COM En theorie, c'est le meme principe... en pratique c'est peut etre un peu plus dur J'avais jeter un oeil a ca il y a quelques annees, je vais essayer de retrouver ce que j'avais fait mais je me souviens avoir un peu galere Bon courage
Pour l'instant, je m'en sort de la façon suivante : J'ai crée le client OPC dans une feuille excel dans laquelle j'ai chargé la Dll OPCDAAutomation et qui me permet de me connecter au server puis de créer les groupes et les items que je veux lire/ecrire. Python lit et ecrit dans les cellules de la feuille Excel.
Si on arrivait à accéder directement aux fonction de la dll depuis python ca serait plus 'pratique'... J'avais envie de m'inspirer de ce qui a été fait dans le module Pyvisa qui permet d'accéder aux fonctions de la dll VISA32 directement en Python, mais ca n'a pas l'air si simple...
En fait, je suis à la limite de mes connaissances (compétences) en informatique des que l'on commence a rentrer dans des domaines tel que COM/DCOM....
Je suis néamoins preneur de toutes infos ou essais fait dans ce domaine...
Un Serveur OPC contient en fait des objets COM, il faut donc passer
generer les interfaces COM pour Python avec makepy dans PythonWin.
Tu devrais trouver pas mal d'exemple pour piloter Excel ou Word grace
aux interfaces IDispatch de tes objets COM
En theorie, c'est le meme principe... en pratique c'est peut etre un
peu plus dur
J'avais jeter un oeil a ca il y a quelques annees, je vais essayer de
retrouver ce que j'avais fait mais je me souviens avoir un peu galere
Bon courage
Pour l'instant, je m'en sort de la façon suivante :
J'ai crée le client OPC dans une feuille excel dans laquelle j'ai
chargé la Dll OPCDAAutomation et qui me permet de me connecter au server
puis de créer les groupes et les items que je veux lire/ecrire.
Python lit et ecrit dans les cellules de la feuille Excel.
Si on arrivait à accéder directement aux fonction de la dll depuis
python ca serait plus 'pratique'...
J'avais envie de m'inspirer de ce qui a été fait dans le module Pyvisa
qui permet d'accéder aux fonctions de la dll VISA32 directement en
Python, mais ca n'a pas l'air si simple...
En fait, je suis à la limite de mes connaissances (compétences) en
informatique des que l'on commence a rentrer dans des domaines tel que
COM/DCOM....
Je suis néamoins preneur de toutes infos ou essais fait dans ce domaine...
Un Serveur OPC contient en fait des objets COM, il faut donc passer generer les interfaces COM pour Python avec makepy dans PythonWin. Tu devrais trouver pas mal d'exemple pour piloter Excel ou Word grace aux interfaces IDispatch de tes objets COM En theorie, c'est le meme principe... en pratique c'est peut etre un peu plus dur J'avais jeter un oeil a ca il y a quelques annees, je vais essayer de retrouver ce que j'avais fait mais je me souviens avoir un peu galere Bon courage
Pour l'instant, je m'en sort de la façon suivante : J'ai crée le client OPC dans une feuille excel dans laquelle j'ai chargé la Dll OPCDAAutomation et qui me permet de me connecter au server puis de créer les groupes et les items que je veux lire/ecrire. Python lit et ecrit dans les cellules de la feuille Excel.
Si on arrivait à accéder directement aux fonction de la dll depuis python ca serait plus 'pratique'... J'avais envie de m'inspirer de ce qui a été fait dans le module Pyvisa qui permet d'accéder aux fonctions de la dll VISA32 directement en Python, mais ca n'a pas l'air si simple...
En fait, je suis à la limite de mes connaissances (compétences) en informatique des que l'on commence a rentrer dans des domaines tel que COM/DCOM....
Je suis néamoins preneur de toutes infos ou essais fait dans ce domaine...
Méta-MCI
Bonjour !
Je ne connais pas la tech OPC.
Néanmoins, pour accéder à une DLL, il est possible d'utiliser "ctypes" (http://starship.python.net/crew/theller/ctypes/) Mais, pour accéder aux DLL, il est nécessaire de connaître précisément la structure des appels.
Et, pour COM/DCOM, il faut installer PyWin32 (http://sourceforge.net/projects/pywin32/)
Comme Blukbluk, perso, j'aurais tendance à préférer COM, à cause du transtypage dynamique (partiel). Comme l'a indiqué Blukbluk, l'utilitaire MakePy permet d'analyser les objets/serveurs COM qui ont une bibliothèque de types (exemples : Word, Excel, MSagent). Malheureusement, cela ne marche par avec les serveurs COM dynamique (exemples OOo, les serveurs COM développés avec PythonCom, ActiveS ) Dans ce dernier cas, il faut se plonger dans les documentations, et... expérimenter.
@-salutations -- Michel Claveau
Bonjour !
Je ne connais pas la tech OPC.
Néanmoins, pour accéder à une DLL, il est possible d'utiliser "ctypes"
(http://starship.python.net/crew/theller/ctypes/)
Mais, pour accéder aux DLL, il est nécessaire de connaître précisément la
structure des appels.
Et, pour COM/DCOM, il faut installer PyWin32
(http://sourceforge.net/projects/pywin32/)
Comme Blukbluk, perso, j'aurais tendance à préférer COM, à cause du
transtypage dynamique (partiel).
Comme l'a indiqué Blukbluk, l'utilitaire MakePy permet d'analyser les
objets/serveurs COM qui ont une bibliothèque de types (exemples : Word,
Excel, MSagent). Malheureusement, cela ne marche par avec les serveurs COM
dynamique (exemples OOo, les serveurs COM développés avec PythonCom,
ActiveS )
Dans ce dernier cas, il faut se plonger dans les documentations, et...
expérimenter.
Néanmoins, pour accéder à une DLL, il est possible d'utiliser "ctypes" (http://starship.python.net/crew/theller/ctypes/) Mais, pour accéder aux DLL, il est nécessaire de connaître précisément la structure des appels.
Et, pour COM/DCOM, il faut installer PyWin32 (http://sourceforge.net/projects/pywin32/)
Comme Blukbluk, perso, j'aurais tendance à préférer COM, à cause du transtypage dynamique (partiel). Comme l'a indiqué Blukbluk, l'utilitaire MakePy permet d'analyser les objets/serveurs COM qui ont une bibliothèque de types (exemples : Word, Excel, MSagent). Malheureusement, cela ne marche par avec les serveurs COM dynamique (exemples OOo, les serveurs COM développés avec PythonCom, ActiveS ) Dans ce dernier cas, il faut se plonger dans les documentations, et... expérimenter.
@-salutations -- Michel Claveau
blukbluk
OPC ca veut dire OLE for Process Control... c'est une techno tres utilise dans le monde de l'automatisme. en gros, C'est un protocole de communication base sur des interfaces COM/DCOM a implementer.
Il faut donc, a mon avis, forcement passer par makepy et COM
OPC ca veut dire OLE for Process Control... c'est une techno tres
utilise dans le monde de l'automatisme. en gros, C'est un protocole de
communication base sur des interfaces COM/DCOM a implementer.
Il faut donc, a mon avis, forcement passer par makepy et COM
OPC ca veut dire OLE for Process Control... c'est une techno tres utilise dans le monde de l'automatisme. en gros, C'est un protocole de communication base sur des interfaces COM/DCOM a implementer.
Il faut donc, a mon avis, forcement passer par makepy et COM
Méta-MCI
Bonsoir !
OLE, bien que basé sur COM/DCOM, échange plus de choses, notamment des aspects visuels (icônes, boutons, menus, etc.) Je ne suis pas sûr que Python permettent de gérer ça facilement.
Pour l'aspect COM, Makepy est pratique... quand ça marche. Mais, par expérience, rien ne vaut une bonne documentation.
En tout cas, merci pour l'info sur la définition ; ça me resservira sans doute, un jour ou l'autre.
@-salutations
Michel Claveau
Bonsoir !
OLE, bien que basé sur COM/DCOM, échange plus de choses, notamment des
aspects visuels (icônes, boutons, menus, etc.) Je ne suis pas sûr que Python
permettent de gérer ça facilement.
Pour l'aspect COM, Makepy est pratique... quand ça marche. Mais, par
expérience, rien ne vaut une bonne documentation.
En tout cas, merci pour l'info sur la définition ; ça me resservira sans
doute, un jour ou l'autre.
OLE, bien que basé sur COM/DCOM, échange plus de choses, notamment des aspects visuels (icônes, boutons, menus, etc.) Je ne suis pas sûr que Python permettent de gérer ça facilement.
Pour l'aspect COM, Makepy est pratique... quand ça marche. Mais, par expérience, rien ne vaut une bonne documentation.
En tout cas, merci pour l'info sur la définition ; ça me resservira sans doute, un jour ou l'autre.
@-salutations
Michel Claveau
blukbluk
Apres avoir genere l'interface Python pour OPC avec makepy, le code suivant permet d'afficher la valeur du Tag T0 qui se trouve sur le serveur DllTestSvr
#affiche la liste des serveurs OPC installes sur la machine for svr in OPC.GetOPCServers(): print svr
OPC.Connect("DLLTestSvr") #connexion au server OPC de test WinTech
#cree 1 groupe OPC groups = OPC.OPCGroups gr1 = groups.Add("gr1").OPCItems
#Ajoute un item a ce groupe T0= gr1.AddItem("T0", 0)
#affiche la valeur courante print T0.Read(0) #Source mis a 0... cf doc OPC?
#deconnexion OPC.Disconnect()
Apres avoir genere l'interface Python pour OPC avec makepy, le code
suivant permet d'afficher la valeur du Tag T0 qui se trouve sur le
serveur DllTestSvr
Apres avoir genere l'interface Python pour OPC avec makepy, le code suivant permet d'afficher la valeur du Tag T0 qui se trouve sur le serveur DllTestSvr
#affiche la liste des serveurs OPC installes sur la machine for svr in OPC.GetOPCServers(): print svr
OPC.Connect("DLLTestSvr") #connexion au server OPC de test WinTech
#cree 1 groupe OPC groups = OPC.OPCGroups gr1 = groups.Add("gr1").OPCItems
#Ajoute un item a ce groupe T0= gr1.AddItem("T0", 0)
#affiche la valeur courante print T0.Read(0) #Source mis a 0... cf doc OPC?
#deconnexion OPC.Disconnect()
pierlau
Merci beaucoup pour votre aide.
Par contre qu'est-ce que vous entendez par "générer l'interface Python pour OPC avec makepy ?"
je lance 'COM Makepy Utility' dans le menu 'tool' de pythonWin Ensuite je choisis la dll qui conserne l'OPC et il génére un repertoire dans Generating to C:Python24libsite-packageswin32comgen_py
Ensuite comment j'utilise ce qu'a généré cet utilitaire ? juste avec le ligne import win32com.client ?
Apres avoir genere l'interface Python pour OPC avec makepy, le code suivant permet d'afficher la valeur du Tag T0 qui se trouve sur le serveur DllTestSvr
#affiche la liste des serveurs OPC installes sur la machine for svr in OPC.GetOPCServers(): print svr
OPC.Connect("DLLTestSvr") #connexion au server OPC de test WinTech
#cree 1 groupe OPC groups = OPC.OPCGroups gr1 = groups.Add("gr1").OPCItems
#Ajoute un item a ce groupe T0= gr1.AddItem("T0", 0)
#affiche la valeur courante print T0.Read(0) #Source mis a 0... cf doc OPC?
#deconnexion OPC.Disconnect()
Merci beaucoup pour votre aide.
Par contre qu'est-ce que vous entendez par "générer l'interface Python
pour OPC avec makepy ?"
je lance 'COM Makepy Utility' dans le menu 'tool' de pythonWin
Ensuite je choisis la dll qui conserne l'OPC
et il génére un repertoire dans
Generating to C:Python24libsite-packageswin32comgen_py
Ensuite comment j'utilise ce qu'a généré cet utilitaire ?
juste avec le ligne import win32com.client ?
Apres avoir genere l'interface Python pour OPC avec makepy, le code
suivant permet d'afficher la valeur du Tag T0 qui se trouve sur le
serveur DllTestSvr
Par contre qu'est-ce que vous entendez par "générer l'interface Python pour OPC avec makepy ?"
je lance 'COM Makepy Utility' dans le menu 'tool' de pythonWin Ensuite je choisis la dll qui conserne l'OPC et il génére un repertoire dans Generating to C:Python24libsite-packageswin32comgen_py
Ensuite comment j'utilise ce qu'a généré cet utilitaire ? juste avec le ligne import win32com.client ?
Apres avoir genere l'interface Python pour OPC avec makepy, le code suivant permet d'afficher la valeur du Tag T0 qui se trouve sur le serveur DllTestSvr