Skip to content
This repository was archived by the owner on Feb 3, 2019. It is now read-only.
François JARRIER-GELLEZ edited this page Sep 26, 2016 · 13 revisions

Bienvenue sur le wiki xPLLib

xPLLib est une librairie C++ pour interagir avec le protocole application xPL. Son code est cross-plateform et a déjà compilé avec succès sous Windows et Linux avec des processeurs x86 et ARM. Certains projets l'utilisant génère des executables pour Raspberry PI. Pour plus d'information sur le protocole xPL, consulter Wikipédia ou le site du projet xPL.

xPLLib est déjà utilisée dans plusieurs projets :

Mise en oeuvre

Copier le contenu du dossier src dans votre projet

#include "xPLDevice.h"

int main(int argc, char* argv[])
{
    xPL::xPLDevice m_xPLDevice;

    m_xPLDevice.Initialisation("fragxpl", "chrono", "default");
    m_xPLDevice.SetAppName("xPL Chrono", "1.0.0.0");
    m_xPLDevice.Open();

    while(true)
    {
        m_xPLDevice.WaitRecv(500);
    }

    m_xPLDevice.Close();

    return 0;
}

Extension

Afin de pouvoir écouter les messages xPL et en émettre, il faut ajouter une extension à l'objet xPLDevice. L'extension est une classe qui implémente l'interface IExtension (meaculpa pour les plus puristes d'entre nous, ce n'est pas une interface mais une classe abstraite ne comprenant que des méthodes virtuelles pures puisque la notion d'interface n'existe pas en C++).

class MonxPLDevice : public xPLDevice::IExtension
{
    public:
        MonxPLDevice(xPLDevice* xPLDev);
        ~MonxPLDevice();

        bool MsgAnswer(SchemaObject& msg);
}

La méthode MsgAnswer sera appelée à chaque réception de messages. Le xPLDevice passé au constructeur n'est pas indispensable, mais il sera utile pour envoyer des messages. Pour activer l'extension, il faudra ajouter, sur l'exemple plus haut, avant l'instruction open, les lignes suivantes :

MonxPLDevice monExtension(&m_xPLDevice);
m_xPLDevice.AddExtension(&monExtension);

Extensions prédéfinies

xPLLib est fournie avec plusieurs extensions prêtes à l'emploi.

Sensors

Cette extension gère tous les messages nécessaires pour les capteurs (classe sensor.basic), il suffit de lui fournir la liste des capteurs, leur types et leurs valeurs via les méthodes ...

BasicConfig

AdvanceConfig

Clone this wiki locally