{ -------------------------------------------------------------------- *
*                                                                      *
*   3333   CCCC      CCCC  OOOO  N     N  CCCC  EEEEE  PPPP  TTTTTTT   *
*       3 C         C     O    O NN    N C      E      P   P    T      *
*       3 C         C     O    O N N   N C      E      P   P    T      *
*   3333  C         C     O    O N  N  N C      EEEE   PPPP     T      *
*       3 C         C     O    O N   N N C      E      P        T      *
*       3 C         C     O    O N    NN C      E      P        T      *
*   3333   CCCC      CCCC  OOOO  N     N  CCCC  EEEEE  P        T      *
*                                                                      *
*     UNITE D'INTERFACE POUR DLL/Win32 Module TC/USB-48IO (32E/16S)    *
*                                                                      *
* (c)2013 3C CONCEPT S.A.                							   *
*  V1.02 du 31/03/2009    											   *
*  V1.03 du 23/08/2012: DB: Correction fonction close: Procedure->function
*  V1.04 du 30/10/2013: DB: Correction fonction close : ";;"->";"
*                                                                      *
* -------------------------------------------------------------------- *
* Fichier a inclure dans le programme principal pour utiliser TCUSB48IO.DLL
* A utiliser avec la directive $INCLUDE TCUSB48IO.INC
*}
                
const
  maxmodule   = 8;   { N° des modules de 1 à 8 }

{ Codes d'erreur générés par les fonctions de base ci-dessous,
  les fonctions opérant sur bit (BITINPUT, BITOUTPUT, BITREADBACK) ne retournent
  pas de code erreur }

  erNoError   = 0;   { OK }
  erNumSerie  = 1;   { Numero de serie incorrect }
  erModule    = 2;   { N° de module incorrect }
  erNoModule  = 3;   { Pas de module TC/USB-48IO détecté }
  erNoInit    = 4;   { Module non initialisé }
  erWrite     = 5;
  erRead      = 6;
  erClose     = 7;   { erreur à la fermeture }

{*************************************************************************************}
{********************** OPERATIONS DE BASE *******************************************}
{*************************************************************************************}

function TCUSB48IO_Refresh(NModule:integer):integer;stdcall;external 'TCUSB48IO.DLL';

{ Actualise les données (Entrées + Sorties + Compteurs) du module indiqué
  A utiliser apres toute fonction sur les sorties et avant toutes fonction sur les entrées et compteurs  }

{*************************************************************************************}

function TCUSB48IO_Open(NModule:integer;var NumSerie:PChar):integer;stdcall;external 'TCUSB48IO.DLL';
{ Initialise le driver, affecte le numéro de série du module au numéro de module
  spécifié (1 à 8) et remet à 0 les sorties. si numéro de série est vide alors ouvre le premier module détecté.
  A utiliser avant tout autre appel a une fonction TCUSB48IO_xxx
  Fermer la session par TCUSB48IO_Close }

function TCUSB48IO_OpenN(NModule:integer;var NumSerie:DWord):integer;stdcall;external 'TCUSB48IO.DLL';
{ Initialise le driver, affecte le numéro de série du module au numéro de module
  spécifié (1 à 8) et remet à 0 les sorties. si numéro de série est vide alors ouvre le premier module détecté.
  A utiliser avant tout autre appel a une fonction TCUSB48IO_xxx
  Fermer la session par TCUSB48IO_Close }

{*************************************************************************************}

function TCUSB48IO_Close(NModule:integer):integer;stdcall;external 'TCUSB48IO.DLL';

{ Termine la session et ferme le driver (indispensable à la fin du programme) }

{*************************************************************************************}

function TCUSB48IO_Input(NModule:integer;var Data:DWord):integer;stdcall;external 'TCUSB48IO.DLL';

{ Lecture des entrées du module indiqué, le retour se fait par
  parametre dans la variable Data (32 bits), un code erreur correspond a la valeur
  retournee par la fonction }

{*************************************************************************************}

function TCUSB48IO_Output(NModule:integer;Data:Word):integer;stdcall;external 'TCUSB48IO.DLL';

{ Envoi sur les sorties du module indiqué la valeur
  contenue dans la variable Data (16 bits), un code erreur correspond a la valeur
  retournee par la fonction }

{*************************************************************************************}
{********************** OPERATIONS SUR BITS ******************************************}
{*************************************************************************************}

function TCUSB48IO_BitInput(NModule,Entree:integer):integer;stdcall;external 'TCUSB48IO.DLL';

{ Lecture de l'état d'une entrée (1 à 32) du module spécifié }

{*************************************************************************************}

procedure TCUSB48IO_BitOutput(NModule,Sortie,etat:integer);stdcall;external 'TCUSB48IO.DLL';

{ Place la sortie (1 à 16) du module spécifiée dans l'état indiqué (0 ou 1) }

{*************************************************************************************}

function TCUSB48IO_BitReadBack(NModule,Sortie:integer):integer;stdcall;external 'TCUSB48IO.DLL';

{ Relecture de l'état d'une sortie (1 à 15) du module spécifié }

{*************************************************************************************}

function  TCUSB48IO_Counter(NModule,Entree:integer;var Data:byte):integer;stdcall;external 'TCUSB48IO.DLL';

{ Lecture du compteur de l'entrée spécifiée du module indiqué, le retour se fait par
  parametre dans la variable Data (32 bits), un code erreur correspond a la valeur
  retournee par la fonction }

{*************************************************************************************}

procedure TCUSB48IO_WdgRun(NModule:integer);stdcall;external 'TCUSB48IO.DLL';

{ Arme la surveillance du chien de garde sur le module spécifié }

{*************************************************************************************}

procedure TCUSB48IO_WdgStop(NModule:integer);stdcall;external 'TCUSB48IO.DLL';

{ Désactive la surveillance du chien de garde sur le module spécifié }

{*************************************************************************************}

procedure TCUSB48IO_WdgRearm(NModule:integer);stdcall;external 'TCUSB48IO.DLL';

{ Rearmement du chien de garde sur le module spécifié }

{*************************************************************************************}

procedure TCUSB48IO_ResetPort(NModule:integer);stdcall;external 'TCUSB48IO.DLL';

{ Reinitialise le port USB du module }

{*************************************************************************************}

procedure TCUSB48IO_CyclePort(NModule:integer);stdcall;external 'TCUSB48IO.DLL';

{ Deconnecte et reconnecte le port USB du module }

{*************************************************************************************}

function TCUSB48IO_Version():Byte;stdcall;external 'TCUSB48IO.DLL';
{ Lecture de la version de la DLL, le retour se fait par la valeur retournee par la fonction }


{ Fin TCUSB48IO.INC }

