Plugins

Pluginy pro SW PP2CAN
 

    Od verze 2.020 diagnostického SW PP2CAN mají uživatelé možnost napsat si vlastní pluginy pro tento software. K vytvoření základního pluginu není navíc třeba mít k dispozici X2CAN API, postačuje pouze nějaké vývojové prostředí, které dovoluje vytvořit knihovnu DLL. Pluginy jsou ve formě knihoven DLL, které obsahujé příslušný plugin. Pluginem se stává knihovna DLL, která je umístěna ve stejném adresáři jako diagnostický SW PP2CAN a implementuje alespoň částečně tyto funkce:

typedef void (*TMessage)(
        unsigned __int16 Id1,
        unsigned __int32 Id2,
        unsigned char Length,
        bool Rtr,
        bool StExt,
        unsigned char Data[8]);

 

enum CAN_SPEED
{
    SPEED_10k = 10,
    SPEED_20k = 20,
    SPEED_33_3k = 33,
    SPEED_50k = 50,
    SPEED_62_5k = 62,
    SPEED_83_3k = 83,
    SPEED_100k = 100,
    SPEED_125k = 125,
    SPEED_250k = 250,
    SPEED_500k = 500,
    SPEED_1M = 1000,
};

 

extern "C" {

// Od verze 2.020
__declspec(dllexport) void PPP_Create(TMessage SendMessage);
__declspec(dllexport) bool PPP_IsOK(void);   // Verze 2.020

__declspec(dllexport) bool PPP_IsOpen(void); // Od verze 2.025 nahrazuje PPP_IsOK
__declspec(dllexport) const char* PPP_GetName(void);
__declspec(dllexport) void PPP_Processing(
        unsigned __int16 Id1,
        unsigned __int32 Id2,
        unsigned char Length,
        bool Rtr,
        bool StExt,
        unsigned char Data[8]);

 

// Od verze 2.025

__declspec(dllexport) void PPP_Destroy(void);

 

// Funkce pro implementaci práce s CAN adaptérem třetích stran

__declspec(dllexport) bool PPP_Init(CAN_SPEED speed);
__declspec(dllexport) void PPP_Close(void);

__declspec(dllexport) bool PPP_IsInitialized(void);
__declspec(dllexport) void PPP_Send(CAN_MESSAGE message);
__declspec(dllexport) bool PPP_Receive(CAN_MESSAGE *message);
__declspec(dllexport) bool PPP_WaitForMessage(unsigned int timeout);
__declspec(dllexport) int PPP_TxBufferLength(void);
__declspec(dllexport) int PPP_RxBufferLength(void);

} // extern "C"

 

Uživatel tedy vytvoří DLL knihovnu, kde implementuje vlastni plugin, který může vytvářet vlastni okna, číst zdroje dat nebo data někam zapisovat a podobně. K inicializaci pluginu, příjem dat z CANu a pod implementuje dle potřeby funkce zmíněné výše. SW PP2CAN při svém spouštění najde všechna DLL v adresáři, odkud je spouštěn a zjistí zda DLL exportují uvedené funkce. Pokud některé DLL obsahuje tyto funkce, je DLL načteno jako plugin a tento plugin je zobrazen v menu SW PP2CAN.

Funkci PPP_Create volá diagnostický SW PP2CAN, pokud má být plugin vytvořen/spuštěn kliknutím na položku s názvem pluginu v menu Plugins v SW PP2CAN.. Jejím parametrem je ukazatel na funkci, pomocí které lze z pluginu odesílat zprávy.

Nadefinujeme si tedy například globální ukazatel na funkci typu TMessage (uvedeno výše) takto:

    TMessage PPP_SendMesssage;

a tento ukazatel inicializujeme hodnotou parametru SendMessage funkce PPP_Create.

Pro odeslání CAN zprávy z pluginu pak voláme například:
    unsigned char data[8] = {1,2,3,4,5,6,7,8};
    PPP_SendMesssage(11,2222,8,false,true,data);
 

Funkce PPP_IsOK musí vracet true, pokud je plugin aktivní. Od verze 2.025 nahrazeno funkcí PPP_IsOpen.

PPP_GetName vrací ukazatel na textový řetězec, který se použije k pojmenování pluginu v menu Plugins diagnostického SW PP2CAN.

Funkce PPP_Processing je volána při příchodu CANovské zprávy a předává tak novou zprávu pluginu který si ji zpracuje.

PPP_Destroy je volána při ukončení programu PP2CAN. Slouží k legálnímu externímu ukončení pluginu.

Od verze 2.025 je podpora pluginu rozšířena o možnost použití CAN interface dalších firem.

PPP_Init - inicializace CAN adaptéru

PPP_Close - ukončení práce s CAN adaptérem

PPP_IsInitialized - vrací true pokud je adaptér v operačním režimu

PPP_Send - odeslání CAN zprávy

PPP_Receive - vyčtení přijaté zprávy

PPP_WaitForMessage - čekání na příchod zprávy

PPP_TxBufferLength - délka bufferu zpráv, které čekají na odeslání

PPP_RxBufferLength - délka bufferu zpráv, které čekají na zpracování

    Práce s CAN interface realizovaná pomocí pluginu vyžaduje, aby byl plugin spuštěn a v Options byla nastavena volba typu CAN adaptéru na Third party interface.

    V současné době je možno používat současně až 5 různých pluginů.  Zdrojový kód jednoduchého ukázkového pluginu pro MSVS 6 je možno stáhnout zde.


 

    Volně ke stažení nabízíme tyto pluginy:

xMeter

(zip)

     
dMeter

(zip)

     
gMeter

(zip)