Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
TUTO : KNX avec Windev - utilisation de la librairie Falcon.net v5
#1
Voici un tuto complet pour faire dialoguer votre BUS KNX et un projet Windev.
Pour le moment, ça fonctionne très bien avec Windev 20, par contre ça plante à l'importation des .dll en Windev 21. On verra avec la 22. 

Édit : Pcsoft vient de fournir un correctif pour windev 21 qui resoud le problème d'importation de l'assemblage .net du sdk falcon.net.
Voir ce post pour le télécharger : http://www.knx-fr.com/showthread.php?tid...8#pid30288


Édit du 23/02/2017 : la dernière version de Windev 22 (version 01F220052e du 22/02/2017) permet elle aussi maintenant d'ouvrir le SDK falcon.net
Edit du 22/03/2021 : Ce tuto fonctionne toujours en Windev 23, 24, 25 et sans doute 26.

1. télécharger le SDK Falcon.net v5 à partir de votre compte My KNX (dans la rubrique "téléchargement" -> onglet "Falcon") et l'installer sur votre PC.
Edit du 22/03/2021 : 
- Pour ceux qui n'arrivent pas à télécharger la librairie Falcon.net, je mets l'ensemble des fichiers nécessaires à un projet KNX/Windev en pièce jointe
C'est la version Falcon.net 5.5. En espérant ne pas me faire taper sur les doigts par l'association KNX !

.zip   KNX Windev Falcon net.zip (Taille : 601,84 Ko / Téléchargements : 41)


2. Ouvrir Windev 20 et créer un nouveau projet.

3. Dans Windows, faites un copier/collé des fichiers ci-dessous entre le dossier d'installation de KNX Falcon (par défaut C:\Program Files (x86)\KNX\Falcon.net) et le dossier de votre projet Windev (ex. C:\Mes Projets\MonProjetKNX)
Knx.Bus.Common.dll
Knx.Falcon.dll
Knx.Falcon.Sdk.dll
log4net.dll
Autofac.dll
knx_interfaces.xml
knx_master.xml
ATTENTION, très important : une copie de ces fichiers devra toujours suivre votre exécutable , càd se trouver dans le même dossier que votre .exe
EDIT : Il faudra aussi installer le Package redistribuable Microsoft Visual C++ 2010 (x86) sur les PC qui doivent exécuter votre application.

Ainsi bien sûr que le .NET Framework 4.0 (ou supérieur) de Microsoft utilisé par le SDK Falcon.net.. mais qui est bien souvent installé par défaut avec Windows.

Edit du 22/03/2021 : 
- sous un Windows 10 récent, le package Microsoft Visual c++ 2010 n'est pas compatible. Il semble qu'une version plus récente soit installée par défaut avec Windows 10. 

4. Cliquer sur le logo "20" tout en haut à gauche de la fenêtre de Windev -> "Menu principal" -> "Atelier" -> ".NET" -> "utiliser un assemblage .net dans ce projet".
Une fenêtre s'ouvre listant les assemblages .net connus, cliquez sur "parcourir" en bas et naviguez vers le dossier de votre projet (ex. C:\Mes Projets\MonProjetKNX) pour sélectionner Knx.Bus.Common.dll et Knx.Falcon.Sdk.dll. Validez 2 fois.

5. Si tout se passe bien, vous retrouvez dans l'explorateur de projet Windev 2 nouveaux assemblages .net Knx.Bus.Common et Knx.Falcon.Sdk
Vous pouvez maintenant les utiliser pour communiquer avec votre BUS KNX.


Voici un exemple de fenêtre qui permet d'allumer/éteindre une lampe ainsi que recevoir les télégrammes qui passent sur le bus :

Mon lien avec le bus KNX est une interface IP qui a pour adresse 192.168.0.21

1. créez dans Windev une fenêtre FEN_TestKNX

Code de déclaration globale de FEN_TestKNX :
Code :
QUAND EXCEPTION DANS

    //déclaration d'une variable globale de type BUS
    // 192.168.9.21 est l'adresse IP de ma passerelle KNX, 0x0e57 est le port de communication vers la passerelle, càd le port 3671 au format hexadécimal
    gclMonBusKNX est un Bus(new KnxIpTunnelingConnectorParameters("192.168.0.21", 0x0e57, False))
    
FAIRE
    // Message complet de l'erreur principale
    gen_MessageErreur est une chaîne = "erreur : " + ExceptionInfo(errComplet) + RC
    // Parcours des sous-erreurs (s'il y en a)
    POUR i = 1 _A_ ExceptionInfo(errNombreSousErreur)
        // Message complet de chaque sous-erreur
        gen_MessageErreur += "Sous-erreur " + i + " : " + ExceptionInfo(errMessage, i)
    FIN
    Info(gen_MessageErreur)    
FIN

2. Créez 4 boutons dans votre fenêtre
Btn_1_connecterAuBus
Btn_2_AllumerLampe
Btn_3_EteindreLampe
Btn_4_EcouterBusKNX

Code du bouton Btn_1_connecterAuBus
Code :
QUAND EXCEPTION DANS
    
    //se connecte au bus KNX à l'aide des paramètres mentionnés à l'initialisation de la fenêtre
    gclMonBusKNX.connect()
    //parfois il faut le faire 2 fois avant que ça fonctionne, comme s'il fallait "réveiller" la passerelle IP/KNX... chez moi en tout cas... (en fait c'est la même chose dans ETS 3.0f)
    
    //affiche un message furtif pour signaler qu'on est bien connecté au bus KNX
    ToastAffiche("connecté au bus KNX",toastLong,cvMilieu,chCentre)
    
FAIRE
    //en cas d'erreur à la connexion
    // Message complet de l'erreur principale
    MessageErreur est une chaîne = "erreur : " + ExceptionInfo(errComplet) + RC
    // Parcours des sous-erreurs (s'il y en a)
    POUR i = 1 _A_ ExceptionInfo(errNombreSousErreur)
        // Message complet de chaque sous-erreur
        MessageErreur += "Sous-erreur " + i + " : " + ExceptionInfo(errMessage, i)
    FIN
    Info(MessageErreur)
    
FIN

Code du bouton Btn_2_AllumerLampe
Code :
///allumer une lampe sur l'adresse de groupe 0/0/4
gclMonBusKNX.WriteValue(new GroupAddress("0/0/4"),new GroupValue(True),Priority.Low)

Code du bouton Btn_3_EteindreLampe
Code :
///éteindre une lampe sur l'adresse de groupe 0/0/4
gclMonBusKNX.WriteValue(new GroupAddress("0/0/4"),new GroupValue(False),Priority.Low)

Code du bouton Btn_4_EcouterBusKNX
Code :
//je crée une variable de type procédure
    pMaProcedure est une Procédure

    //j'ajoute la procédure TraceAdresseGroupe dans la variable pMaProcedure (sans passer de paramètre !)
    pMaProcedure += TraceAdresseGroupe  //!!! pas de parenthèse !! pas de passage de paramètre !!

    //j'affecte mon cBus:GroupValueReceived  avec ma procédure... le cBus exécutera ma procédure TraceAdresseGroupe() à chaque événement sur le bus KNX
    gclMonBusKNX.GroupValueReceived += pMaProcedure


3. Créez une procédure qui a pour nom TraceAdresseGroupe
Code :
//voici la procédure qui sera exécutée à chaque événement sur le Bus KNX
PROCEDURE TraceAdresseGroupe(clMonGroupValueEventArgs est un GroupValueEventArgs())

//affiche dans une fenêtre de trace() l'adresse de groupe qui a changé et sa valeur (ON, OFF ou autre)
Trace(clMonGroupValueEventArgs.Address.ToString() + " -> " + clMonGroupValueEventArgs.Value.ToString())

4. Enjoy Tongue
Avec windev et webdev, tout le reste c'est du gâteau !
Répondre


Messages dans ce sujet
TUTO : KNX avec Windev - utilisation de la librairie Falcon.net v5 - par mil3d - 06/12/2016, 07:02:21

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)