IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Problème avec DLL ecrite en Visual Basic [WD14]


Sujet :

WinDev

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Par défaut Problème avec DLL ecrite en Visual Basic
    Bonjour à tous


    Je suis débutant en programmation Windev. Je suis actuellement entrain de dévelpper un programme sous Windev permettant la communication entre un automate Unitronics V350 et un PC. Pour ce faire le fabricant d’automate met à disposition sur son site www.unitronics.com un fichier dll (UnCmDrv1.dll) ainsi qu’un exemple écrit sous VBA Excel.

    Voici un bout du programme écrit sous Excel (ce programme permet l’ouverture du port série COM1):


    Private Function prvOpenPort() As Boolean

    Dim eComParam As tPC_CommSettings



    'Create new instance of the Comm Driver Dll.

    Set mComDriver = New UnCmDrv1.clsCommDriver

    'Configure the connection parameters.

    With eComParam

    .Baudrate = eBR_38400

    .DataBits = eDB_8

    .Parity = eP_None

    .StopBits = eSB_1

    .TimeOut = 500

    .Retries = 3

    End With

    mComDriver.Comm_Autodetect = True

    mComDriver.ShowCommMessages = True

    'Opens the com.

    prvOpenPort = mComDriver.Comm_Open(Cells(5, 4), eComParam) ‘******Cells(5,4) = 1 numéro du port******

    End Function



    Voici le programme sous Windev que j’ai écrit ( ou devrais je dire un exemple de la multitude de programme que j’ai déjà essayé sans succés)
    (copier/coller d'un fichier texte)


    AutomationParamètre(apIndiceBaseTableau = 1)


    enBaudRate est une structure

    eBR_4800 est un Variant

    eBR_9600 est un Variant

    FIN


    enDataBits est une structure

    eDB_7 est un Variant

    eDB_8 est un Variant

    FIN



    enParity est une structure

    eP_None est un Variant

    eP_Odd est un Variant

    FIN



    enStopBits est une structure

    eSB_1 est un Variant

    eSB_2 est un Variant

    FIN


    tPC_CommSettings est composée de


    Baurate est enBaudRate

    DataBits est un enDataBits

    Parity est un enParity

    Retries est un Variant = 3

    StopBits est un enStopBits

    TimeOut est un Variant = 500

    FIN

    eComparam est un tableau de 0 Variants

    eComparam = [tPC_CommSettings.Baurate.eBR_9600,tPC_CommSettings.DataBits.eDB_8,tPC_CommSettings.Parity.eP_None,tPC_CommSettings.Retries,tPC_CommSettings.StopBits.eSB_1,tPC_CommSettings.TimeOut]


    OuvertCom est un booléen

    mComDriver est un objet Automation "UnCmDrv1.clsCommDriver"

    mComDriver>>Comm_Autodetect = Vrai

    mComDriver>>ShowCommMessages = Vrai

    OuvertCom = mComDriver>>Comm_Open(1,eComparam)

    SI OuvertCom = Vrai ALORS Info("Port Com Ouvert") SINON Info("Ouverture Port COM échouée")


    Avec ce programme l’activeX renvoi une erreur : 80020005 type incorrect pour le paramètre 2 ( a savoir eComparam)

    Si je déclare le type tPC_CommSetting comme structure c’ est Windev qui me renvoi une erreur du genre : Variable incompatible avec l’objet automation



    J’ai essayé différentes combinaisons avec des tableaux, des structures, des variables composées mais sans succés.

    Je joins à ce message l’exemple sous VBA, pour le fichier dll (UnCmDrv1.dll) vous pouver le télécharger sur http://www.unitronics.com/Content.aspx?page=Downloads. Voir COM Object ActiveX .dll



    Si vous avez une idée pour résoudre mon problème ?



    Merci de votre considération et de votre temps



    A bientôt



    Sonny BORSOI

  2. #2
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Par défaut
    Lors d'une formation windev je crois me souvenir que le formateur nous a dit que seul les dll écrites en C passaient bien.

  3. #3
    Membre Expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Par défaut
    Pour avoir instancier une dll VB (écrite par mes soins) dans WinDev je peux te confirmer que cela fonctionne.

    Attention au format de chaine de caractères dans VB qu'il faut forcer en null char terminated.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Par défaut
    Bonjour à tous,

    Merci d'avoir répondu à mon message. Malheureusement je ne comprend pas ce que veut dire "forcer en null char terminated". Merci de m'éclairer.

    A bientôt

  5. #5
    Membre Expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Par défaut
    les chaines de caractères doivent se terminer par le caractère '\0' ce qui n'est pas le cas par défaut en VB au contraire du C.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Bonjour,

    SonnyB, j'ai regardé de près le fichier DLL ActiveX ainsi que l'exemple.

    Il faut bien utiliser une structure, mais en faisant attention:
    • à respecter les types des membres de la structure,
    • de passer à la méthode l'adresse de la structure.


    Donc il faut définir la structure dans un bloc de déclaration du projet ou d'une collection de procédures:
    Code WLangage : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    tPC_CommSettings est une structure
     
    	Baudrate est un entier sur 4 octets
    	DataBits est un entier sur 4 octets
    	Parity est un entier sur 4 octets
    	Retries est un entier sur 2 octets
    	StopBits est un entier sur 4 octets
    	TimeOut est un entier sur 4 octets
    FIN

    Ensuite, voici une adaptation des procédures VB et WD:

    Code WLangage : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    PROCEDURE prvOpenPort()
     
    OuvertCom est un entier
    eComParam est un tPC_CommSettings = [38400, 8, 0, 3, 1, 500]
    mComDriver est un objet Automation "UnCmDrv1.clsCommDriver"
     
    mComDriver>>Comm_Autodetect(-1)
    mComDriver>>ShowCommMessages(-1)
     
    OuvertCom = mComDriver>>Comm_Open(1, &eComParam)
     
    SI OuvertCom = 0 ALORS Info("Ouverture Port COM échouée") SINON Info("Port Com Ouvert")

    J'espère que ça t'aidera un peu.

    Je n'ai pas pris le temps de recréer toutes les constantes.
    A toi de voir...
    _

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Par défaut
    Bonjour à tous

    Merci à Emmanuel Lecoester et JBO pour vos réponses.

    Pour Emmanuel Lecoester

    les chaines de caractères doivent se terminer par le caractère '\0' ce qui n'est pas le cas par défaut en VB au contraire du C.
    01/09/2009 13h04
    Pourrais-tu me donner un exemple?
    Merci

    Pour JBO

    J'ai essayé ton exemple de code mais sans succés. Le contrôle ActiveX me renvoi toujours la même erreur: paramètre 2 incorrect pour la fonction Open_Comm

    Je vais essayer d'utiliser des classes pour déclarer mes constantes (eBR_34800, eDB_8, eP_None, etc...)

    Si tu as une autre idée elle est la bien venue

    Merci

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Bonjour à tous
    Je suis dans la meme impasse.
    Avez vous trouvé une Solution?

    Merci d'avance

  9. #9
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 630
    Par défaut
    Une question, plutot que d'attaquer directement la dll pourquoi ne pas utiliser le pilotage de excel (et de ce code vba) ?

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Tout simplement parce que la finalité est une appli windev.

    Je ne sais pas si la solution passe par la construction d'une classe au lieu d'une structure ou bien l'utilisation de la fonction ChaîneRécupère(nAdresseChaîne, crAdresseASCIIZ)
    Bien que le typage en Wlangage des variables en VB soit galère,
    Pour faire fonctionner d'autres fonctions de cette dll :
    Pour un Integer en VB, j'ai du utiliser en WL suivant la fonction, entier sans signe sur 1 octets ou entier sans signe sur 2 octets voir entier sans signe sur 4 octets.
    Et peut être que pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    tPC_CommSettings est une structure
     
    	Baudrate est un entier sur 4 octets
    	DataBits est un entier sur 4 octets
    	Parity est un entier sur 4 octets
    	Retries est un entier sur 2 octets
    	StopBits est un entier sur 4 octets
    	TimeOut est un entier sur 4 octets
    FIN
    Ca coince

    Sinon pour
    les chaines de caractères doivent se terminer par le caractère '\0' ce qui n'est pas le cas par défaut en VB au contraire du C.
    J'aurai bien vu aussi un exemple.

    Merci d'avance et à bientôt

  11. #11
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    732
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 732
    Par défaut
    Bonjour,

    J'aurais bien voulu vous aider, mais même si l'éditeur de code charge bien l'interface, à l'exécution il me dit que "L'objet automation 'UnCmDrv1.clsCommDriver' n'est pas installé sur votre système."
    Peut-être parce que je n'ai pas le matériel ?

    A partir de la DLL vous pouvez créer un IDL.
    A partir de l'IDL vous pouvez créer un header C++.

    Mais bonne chance, car les outils sont tous assez ennuyeux à utiliser.
    Si vous avez visual c++, essayez d'importer l'objet et voir le type réel des données.

    J'ai regardé rapidement avec OLEView, et je vois ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [id(0x6003000d)]
    HRESULT Comm_Open(
                    [in, out] enPortNumber* p_ComPort, 
                    [in, out] tPC_CommSettings* p_settings, 
                    [out, retval] VARIANT_BOOL* );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
        typedef [uuid(8750D83F-D261-4434-9CAA-7E2A18529F76), version(1.0)]
        struct tagtPC_CommSettings {
            [helpstring("Baudrate")        
    ]
            enBaudRate Baudrate;
            [helpstring("DataBits")        
    ]
            enDataBits DataBits;
            [helpstring("Parity")        
    ]
            enParity Parity;
            [helpstring("StopBits")        
    ]
            enStopBits StopBits;
            [helpstring("TimeOut")        
    ]
            long TimeOut;
            [helpstring("Retries")        
    ]
            short Retries;
        } tPC_CommSettings;
    Les types "en-" étant des enums, donc des entiers.


    Donc à priori, mais sans savoir ce qu'une struct COM a de commun avec une struct C, ni ce qu'un passage par pointeur dans l'IDL est censé devenir dans WinDev, je dirais qu'il faut déclarer une structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    tPC_CommSettings est une structure
    	Baudrate est entier
    	DataBits est entier
    	Parity est entier
    	StopBits est entier
    	TimeOut est entier
    	Retries est entier sur 2
    FIN
    (pas de souci d'alignement car le seul type plus petit est à la fin)
    ... et la passer à la méthode sans le "&" d'abord, et si ça ne marche pas essayez avec le "&".

    Bon courage...

  12. #12
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 269
    Par défaut
    Bonjour,
    pourquoi ne pas utiliser le driver .net au lieu de la dll automation ?
    disponible ici . L'assemblage est Unitronics.ComDriver.dll dans répertoire CommDrive\C#\Reading MIs using Serial Port - C# Example\Com Drive Net - Example\Com Drive Net .
    Inclure cet assemblage dans son projet Windev et avec un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    monplc est un PLC
    moncanal est un Serial dynamique
    laversion est un PlcVersion
     
    moncanal = allouer un Serial(SerialPortNames.COM1, BaudRate.BR38400, 3, 3000, DataBits.DB8, System.IO.Ports.Parity.None, System.IO.Ports.StopBits.One)
    monplc = PLCFactory.GetPLC(moncanal, 0)
    laversion = monplc.Version
    Info( "Modèle : " + laversion.OPLCModel, ...
    "HW : " + laversion.HWVersion, ...
    "OS ; " + laversion.OSVersion, ...
    "Boot  ; " + laversion.Boot, ...
    "BinLib : " + laversion.BinLib, ...
    "FactoryBoot. : " + laversion.FactoryBoot)
    ça pourrait peut-être marcher ( sous réserve que le driver soit compatible avec l'automate à utiliser et je n'ai pas pu essayer le code).

    Ami calmant, J.P ;-)

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Bonjour,
    Vu que j'ai trouvée l'idée bonne, j'ai inclu le .net dans mon projet windev mais le
    me renvoie
    Erreur à la ligne 6 du traitement Clic sur BTN_Connect.
    Impossible de construire l'objet de type <PLC>
    L'invocation de la méthode <.ctor()> du type <PLC> a échoué

    Code erreur : 200002
    Niveau : erreur fatale (EL_FATAL)

    Dump de l'erreur du module 'wd160net2.dll' (16.0.14.0).
    Identifiant des informations détaillées (.err) : 200002
    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pclEthernet est un Ethernet dynamique  
    pclEthernet = allouer un Ethernet(sAdressIp, nPort, EthProtocol.TCP, 3, 3000)....
    semble fonctionner

    Merci pour votre aide
    A bientôt

  14. #14
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 269
    Par défaut
    Bonjour,

    essaie en utilisant des objets dynamiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    monplc est un PLC dynamique
    moncanal est un Serial dynamique
    laversion est un PlcVersion dynamique
    Ami calmant, J.P ;-)

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Rebonjour,

    J'ai essayer sans succès les objets dynamiques

    D'autres idée ?

    Merci

  16. #16
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 269
    Par défaut
    Bonjour,
    J'ai essayer sans succès les objets dynamiques
    Qu'est-ce qui ne fonctionne pas ? messages d'erreur ?
    As-tu essayé l'exécutable de l'exemple en Csharp ? :
    CommDrive\C#\Reading MIs using Serial Port - C# Example\Com Drive Net - Example\bin\Release\Com Drive Net - Example.exe

    Ami calmant, J.P ;-)

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Bonjour,

    J'ai testé l'exe en C#, il marche bien.

    Lorsque je déclare "monPLC est un PLC dynamique" l'erreur renvoyée est du style "erreur inconnue contacter votre fournisseur"

    Par contre en étudiant le .net, PLC est une classe et non une fonction

    Merci de votre aide
    A bientôt

  18. #18
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 269
    Par défaut
    tu es sous quel O.S ? avec quelle version de windev ?


    parce que moi en windows 7, Windev 16 avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    monplc est un PLC dynamique
    moncanal est un Serial dynamique
    laversion est un PlcVersion dynamique
     
    moncanal = allouer un Serial(SerialPortNames.COM1, BaudRate.BR38400, 3, 3000, DataBits.DB8, System.IO.Ports.Parity.None, System.IO.Ports.StopBits.One)
    monplc = PLCFactory.GetPLC(moncanal, 0)
    laversion = monplc.Version
    Info( "Modèle : " + laversion.OPLCModel, ...
    "HW : " + laversion.HWVersion, ...
    "OS :  " + laversion.OSVersion, ...
    "Boot  : " + laversion.Boot, ...
    "BinLib : " + laversion.BinLib, ...
    "FactoryBoot. : " + laversion.FactoryBoot)
    je n'ai une erreur qu'à partir du PLCFactory.GetPLC(moncanal, 0) qui est :
    Erreur à la ligne 8 du traitement Clic sur Bouton16.
    Le framework .NET a renvoyé l'erreur suivante :
    System.Reflection.TargetInvocationException: Une exception a été levée par la cible d'un appel. ---> Unitronics.ComDriver.ComDriveExceptions: Cannot communicate with the PLC with the specified UnitID!
    ce qui est normal puisque je n'ai pas d'automate.

    Ami calmant, J.P ;-)

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Bonjour,

    Impeccable, ça marche.

    Une idée pour récupérer le nom du PLC ?

    Grand Merci
    A bientôt

    Rebonjour,
    tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomPLC est une chaîne = monPLC.PlcName
    Encore grand merci
    A +

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Bonjour,

    Pour continuer sur la communication avec automate Unitronics via la dll .Net

    Voici le code VB que je n'arrive pas à transformer en Wlangage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     Private Sub Read_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Read.Click
     
            Dim rw As ReadWriteRequest() = New ReadWriteRequest(0)
            Dim ro As ReadOperands
     
            ro = New ReadOperands()
     
            With ro
                .OperandType = OperandTypes.MI
                .NumberOfOperands = 3
                .StartAddress = 0
            End With
     
            rw(0) = ro
     
            Try
                plc.ReadWrite(rw)
     
                Dim values As Object() = DirectCast((rw(0).ResponseValues), Object())
     
                For i As Integer = 0 To values.Length - 1
                    If values(i) IsNot Nothing Then
                        Dim txtbox As TextBox = TryCast(Me.groupBox1.Controls("txtMI" & i.ToString()), TextBox)
                        txtbox.Text = CShort(values(i)).ToString()
                    End If
                Next
            Catch
                System.Windows.Forms.MessageBox.Show("Could not communicate with the PLC")
            End Try
        End Sub

    Merci d'avance de votre aide
    A bientôt

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. problèmes avec un dialogue sous visual 2002
    Par twinseb dans le forum MFC
    Réponses: 3
    Dernier message: 29/11/2006, 16h59
  2. Problème avec dll win32com
    Par jbidou88 dans le forum Langage
    Réponses: 2
    Dernier message: 28/08/2006, 15h06
  3. Réponses: 4
    Dernier message: 31/01/2006, 18h59
  4. problème avec directx 9 et visual C++ 6
    Par 180degrés dans le forum MFC
    Réponses: 2
    Dernier message: 28/09/2005, 10h43
  5. conteneur de la STL (problème avec DLL et COM)
    Par moldavi dans le forum MFC
    Réponses: 8
    Dernier message: 25/07/2005, 23h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo