{ -------------------------------------------------------------------- *
*                                                                      *
*   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-18A (8E/4S/C/E/S Ana) *
*                                                                      *
* (c)2010 3C CONCEPT S.A.S                Version 1.00 du 11/02/2009    *
* 1.00: 11/02/2009
* 1.01:  05/07/2010: DB: correction description fonction "bit_input"                                                                    *
* -------------------------------------------------------------------- *
* Fichier a inclure dans le programme principal pour utiliser TCUSB18A.DLL
* A utiliser avec la directive $INCLUDE TCUSB18A.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 détecté }
  erNoInit    = 4;   { Module non initialisé }
  erWrite     = 5;
  erRead      = 6;
  erClose     = 7;   { erreur à la fermeture }
  erConsigne  = 8;   { erreur consigne analogique }
  erVoie      = 9;   { erreur voie analogique }

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

function TCUSB18A_Refresh(NModule:integer):integer;stdcall;external 'TCUSB18A.DLL';
{ Actualise les données (Entrées + Sorties + Compteurs+E/S analogique) du module indiqué
  A utiliser apres toute fonction sur les sorties et avant toute fonction sur les entrées et compteurs
  un code erreur correspond à la valeur retournée par la fonction }

function TCUSB18A_GetParams(NModule: integer):integer;stdcall;external 'TCUSB18A.DLL';
function TCUSB18A_GetConfig(NModule:integer;voie:integer;var Gain:single;var offset:single):integer;stdcall; external 'TCUSB18A.DLL';
function TCUSB18A_SetParams(NModule: integer):integer;stdcall;external 'TCUSB18A.DLL';
function TCUSB18A_ModifyParams(NModule: integer;Voie: byte; A_Gain, A_Offset: single):integer;stdcall;external 'TCUSB18A.DLL';


function TCUSB18A_Open(NModule:integer;var NumSerie:PChar):integer;stdcall;external 'TCUSB18A.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 TCUSB18A_xxx
  Fermer la session par TCUSB18A_Close
  un code erreur correspond à la valeur retournée par la fonction }

  
function TCUSB18A_OpenN(NModule:integer;var NumSerie:DWord):integer;stdcall;external 'TCUSB18A.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=0 alors ouvre le premier module détecté.
  A utiliser avant tout autre appel a une fonction TCUSB18A_xxx
  Fermer la session par TCUSB18A_Close
  un code erreur correspond à la valeur retournée par la fonction }

  
function TCUSB18A_Close(NModule:integer):integer;stdcall;external 'TCUSB18A.DLL';
{ Termine la session et ferme le driver (indispensable à la fin du programme)
  un code erreur correspond à la valeur retournée par la fonction }

  
function TCUSB18A_Input(NModule:integer;var Data:DWord):integer;stdcall;external 'TCUSB18A.DLL';
{ Lecture des entrées du module indiqué, le retour se fait par parametre dans la variable Data (32 bits)
  un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_Output(NModule:integer;Data:Byte):integer;stdcall;external 'TCUSB18A.DLL';
{ Envoi sur les sorties du module indiqué la valeur contenue dans la variable Data (8 bits),
  un code erreur correspond à la valeur retournée par la fonction }

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

function TCUSB18A_BitInput(NModule,Entree:integer;var Data:byte):integer;stdcall;external 'TCUSB18A.DLL';
{ Lecture de l'état d'une entrée (1 à 8) du module spécifié
  un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_BitOutput(NModule,Sortie,etat:integer):integer;stdcall;external 'TCUSB18A.DLL';
{ Place la sortie (1 à 4) du module spécifiée dans l'état indiqué (0 ou 1)
  un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_BitReadBack(NModule,Sortie:integer;var Data:byte):integer;stdcall;external 'TCUSB18A.DLL';
{ Relecture de l'état d'une sortie (1 à 4) du module spécifié
  un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_Counter(NModule,Entree:integer;var Data:byte):integer;stdcall;external 'TCUSB18A.DLL';
{ Lecture du compteur de l'entrée spécifiée du module indiqué, le retour se fait par
  parametre dans la variable Data (8 bits),
  un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_Config(NModule:integer;Data:Byte):integer;stdcall;external 'TCUSB18A.DLL';
{ Regle  sur le module spécifié:
  2) La validité du TOPZ bit 4 à 1 ou 0
  un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_Pos(NModule:integer;var Data:Integer):integer;stdcall;external 'TCUSB18A.DLL';
{ Lecture du codeur du module indiqué, le retour se fait par parametre dans la variable Data (32 bits signé),
  un code erreur correspond à la valeur retournée par la fonction }

  
function TCUSB18A_ResetPos(NModule:integer):integer;stdcall;external 'TCUSB18A.DLL';
{ Remise à zéro du codeur du module indiqué,
  un code erreur correspond à la valeur retournée par la fonction }

function TCUSB18A_AnaIn(NModule:integer;Voie: byte; var Data: smallint):integer;stdcall;external 'TCUSB18A.DLL';
{Lecture d'une voie analogique( de 1 à 4) du module indiqué (NModule). le retour se fait par parametre dans la variable Data (16 bits signé), La variable Data represente le nombre
de points convertisseur (ie sur 12bits).  Un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_AnaInVolts(NModule:integer;Voie: byte; var Data: Double):integer;stdcall;external 'TCUSB18A.DLL';
{Lecture d'une voie analogique( de 1 à 4) du module indiqué (NModule). le retour se fait par parametre dans la variable Data (nombre flottant 64 bits signé), La variable Data represente la tension mesurée en volts.
Un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_AnaInmA(NModule:integer;Voie: byte; var Data: Double):integer;stdcall;external 'TCUSB18A.DLL';
{Lecture d'une voie analogique( de 1 à 4) du module indiqué (NModule). le retour se fait par parametre dans la variable Data (nombre flottant 64 bits signé), La variable Data represente le courant mesurée en milli-ampères.
Un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_AnaOut(NModule:integer; Voie: byte; Data: smallint):integer;stdcall;external 'TCUSB18A.DLL';
{Envoi sur une des sorties analogiques du module indiqué la valeur contenue dans la variable Data (16 bits signé) . Le parametre Data represente le nombre
de points convertisseur (ie sur 12bits).  Un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_AnaOutVolts(NModule:integer; Voie: byte; Data: Double):integer;stdcall;external 'TCUSB18A.DLL';
{Envoi sur une des sorties analogiques du module indiqué la valeur contenue dans la variable Data (nombre flottant 64 bits signé) . Le parametre Data represente la tension que l'on souhaite obtenir sur la sortie.
  Un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_WdgRun(NModule:integer):integer;stdcall;external 'TCUSB18A.DLL';
{ Arme la surveillance du chien de garde sur le module spécifié
  un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_WdgStop(NModule:integer):integer;stdcall;external 'TCUSB18A.DLL';
{ Désactive la surveillance du chien de garde sur le module spécifié
  un code erreur correspond à la valeur retournée par la fonction }

  
function TCUSB18A_WdgRearm(NModule:integer):integer;stdcall;external 'TCUSB18A.DLL';
{ Rearmement du chien de garde sur le module spécifié
  un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_ResetPort(NModule:integer):integer;stdcall;external 'TCUSB18A.DLL';
{ Reinitialise le port USB du module
  un code erreur correspond à la valeur retournée par la fonction }

  
function TCUSB18A_CyclePort(NModule:integer):integer;stdcall;external 'TCUSB18A.DLL';
{ Deconnecte et reconnecte le port USB du module
  un code erreur correspond à la valeur retournée par la fonction }


function TCUSB18A_Version(NModule:integer;var Data1:Byte;var Data2:Byte):integer;stdcall;external 'TCUSB18A.DLL';
{ Lecture de la version du firmware du module indiqué et de la DLL, le retour se fait par parametre dans les variables Data1 (module) et Data2 (DLL) (8 bits non signé),
  un code erreur correspond à la valeur retournée par la fonction }

{ Fin TCUSB18A.INC }

