Sample for PAR48IO  

Visual-C++ QLIB ( QUANCOM Driver Library Sample )


  #include <windows.h>
#include <stdio.h>
#include <conio.h>

#include "qlib.h"

void main()
{

ULONG handle;
ULONG nResult = TRUE;
ULONG nResult1, nResult2, nResult3, nResult4, nResult5, nResult6;
ULONG j,i;
UMONG module;

/* --------------------------------------------- */
/* this part opens and initializes the */
/* PAR48IO Module           */
/* --------------------------------------------- */

/* open module 0 ( up to 7 modules supported ) */

module = 0;

if ((handle = QAPIExtOpenCard(PAR48IO, module)) == 0L)
   {

/* did you configure the board with QLIBCNFG.EXE ? */

MessageBox(NULL,"PAR48IO: Unable to open module.\n","Error", MB_OK);  
return;
 }

/* clear internal buffers */

       nResult = QAPIExtSpecial(handle, JOB_PAR48IO_RESET_TO_1, 0L , NULL);

/* --------------------------------------------- */
/* this part of the sample demonstrates the      */
/* programming in input mode */
/* --------------------------------------------- */

/* set all lines ( lines 0 to 47 ) to input mode */

nResult = QAPIExtSpecial(handle, JOB_PAR48IO_IOMODE0_7, JOB_PAR48IO_INPUT, NULL);
nResult = QAPIExtSpecial(handle, JOB_PAR48IO_IOMODE8_15, JOB_PAR48IO_INPUT, NULL);
nResult = QAPIExtSpecial(handle, JOB_PAR48IO_IOMODE16_23,JOB_PAR48IO_INPUT, NULL);
nResult = QAPIExtSpecial(handle, JOB_PAR48IO_IOMODE24_31,JOB_PAR48IO_INPUT, NULL);
nResult = QAPIExtSpecial(handle, JOB_PAR48IO_IOMODE32_39,JOB_PAR48IO_INPUT, NULL);
nResult = QAPIExtSpecial(handle, JOB_PAR48IO_IOMODE40_47,JOB_PAR48IO_INPUT, NULL);


/* read all inputs ( first latch all inputs ) */

nResult = QAPIExtSpecial(handle, JOB_PAR48IO_LATCH, 0L , NULL);


/* now subsequent calls will result in same input values */

/* input 8 bit wise */

nResult1 = QAPIExtReadDI8(handle, 5, NULL);
nResult2 = QAPIExtReadDI8(handle, 4, NULL);
nResult3 = QAPIExtReadDI8(handle, 3, NULL);
nResult4 = QAPIExtReadDI8(handle, 2, NULL);
nResult5 = QAPIExtReadDI8(handle, 1, NULL);
nResult6 = QAPIExtReadDI8(handle, 0, NULL);

printf("INPUT  0- 7:%2.2x\n"
              "INPUT  8-15:%2.2x\n"
              "INPUT 16-23:%2.2x\n"
              "INPUT 24-31:%2.2x\n"
              "INPUT 32-39:%2.2x\n"
              "INPUT 40-47:%2.2x\n",
              nResult1, nResult2, nResult3, nResult4, nResult5, nResult6);


/* input 16 bit wise */

nResult1 = QAPIExtReadDI16(handle, 0, NULL);
nResult2 = QAPIExtReadDI16(handle, 1, NULL);
nResult3 = QAPIExtReadDI16(handle, 2, NULL);

printf("INPUT  0 -15:%2.2x\n"
              "INPUT  16-31:%2.2x\n"
              "INPUT  32-47:%2.2x\n",
              nResult1, nResult2, nResult3);


/* input 32 bit wise */

nResult1 = QAPIExtReadDI32(handle, 0, NULL);
nResult2 = QAPIExtReadDI32(handle, 1, NULL);

printf("INPUT  0 -31:%2.2x\n"
              "INPUT  32-47:%2.2x\n",
              nResult1, nResult2);


/* read internal timer */

nResult = QAPIExtSpecial(handle, JOB_PAR48IO_READCNT, 0L , NULL);
printf("PAR48IO: Counter read = %i\n",nResult);


/* ---------------------------------------------- */
/* this part of the sample demonstrates the       */
/* programming in output mode  */
/* ---------------------------------------------- */


       /* set all lines ( lines 0 to 47 ) to output mode */

/* all lines to 0 = "low" */

nResult = QAPIExtSpecial(handle, JOB_PAR48IO_RESET_TO_0, 0L , NULL);

/* program direction of lines */

nResult = QAPIExtSpecial(handle, JOB_PAR48IO_IOMODE0_7, JOB_PAR48IO_OUTPUT, NULL);
nResult = QAPIExtSpecial(handle, JOB_PAR48IO_IOMODE8_15, JOB_PAR48IO_OUTPUT, NULL);
nResult = QAPIExtSpecial(handle, JOB_PAR48IO_IOMODE16_23,JOB_PAR48IO_OUTPUT, NULL);
nResult = QAPIExtSpecial(handle, JOB_PAR48IO_IOMODE24_31,JOB_PAR48IO_OUTPUT, NULL);
nResult = QAPIExtSpecial(handle, JOB_PAR48IO_IOMODE32_39,JOB_PAR48IO_OUTPUT, NULL);
nResult = QAPIExtSpecial(handle, JOB_PAR48IO_IOMODE40_47,JOB_PAR48IO_OUTPUT, NULL);



/* write pattern to output in 1 bit mode*/

QAPIExtWriteDO1(handle, 0L , 1 , NULL); /* set line 0 to "high" */
QAPIExtWriteDO1(handle, 1L , 1 , NULL); /* set line 1 to "high" */
QAPIExtWriteDO1(handle, 2L , 1 , NULL); /* set line 2 to "high" */
QAPIExtWriteDO1(handle, 3L , 0 , NULL); /* set line 3 to "low"  */
QAPIExtWriteDO1(handle, 4L , 0 , NULL); /* set line 4 to "high" */

/* send this pattern to the output now */

nResult = QAPIExtSpecial(handle, JOB_PAR48IO_LATCH, 0L , NULL);



/* write pattern to output in 32 bit mode ( 32 bit mode is the fastest mode ) */

QAPIExtWriteDO32(handle, 0L ,0x00FF00FFL, NULL); /* set outputs 0-7 and 16-23 to "high" */
QAPIExtWriteDO32(handle, 1L ,0x000000FFL, NULL); /* set outputs 32-39 to "high" */

/* send this pattern to the output now */

nResult = QAPIExtSpecial(handle, JOB_PAR48IO_LATCH, 0L , NULL);

}