![]() |
![]() |
When specifying the needed include files we have included the gxsdldr.c loader file directly:
Defining the number of devices limit:
#define MAXDEVICES 100 /* Maximal number of devices */
Starting the main function and defining the needed variables:
/* * Main function. */ int main(void) { int st, i; char errbuf[256]; int errcode; struct GX_DEVICE_INFOA *devices; char type[sizeof(devices->type)+1]; char devname[sizeof(devices->devname)+1];
Allocating the buffer for the device list:
/* Allocates the array for information of devices */ int ndevices = MAXDEVICES; devices = (struct GX_DEVICE_INFOA *)malloc( sizeof(struct GX_DEVICE_INFOA)*MAXDEVICES); if(!devices) { fprintf(stderr, "** Out of memory\n"); return 1; }
Getting the device list:
/* Calls the listdevices function */ st = gx_listdevicesa(&ndevices, devices, 0, 0);
If an error occured, then the return value is 0. In this case displaying the error code and message and ending the sample program:
if(!st) { free(devices); errcode = gx_geterrora(0, errbuf, sizeof(errbuf)); errbuf[sizeof(errbuf)-1] = 0; fprintf(stderr, "** GX Error: (%x) %s\n", errcode, errbuf); return 1; }
If no devices found then displaying message and ending the sample program:
/* Displays devices */ if(ndevices == 0) { free(devices); printf("No GX devices.\n"); return 0; }
If one or more devices found then displaying general informations and ending the sample program:
printf("GX devices in the system:\n"); type[sizeof(type)-1] = 0; devname[sizeof(devname)-1] = 0; for(i = 0; i < ndevices; i++) { strncpy(type, devices[i].type, sizeof(type)-1); strncpy(devname, devices[i].devname, sizeof(devname)-1); printf("%3i. Name: %s, Type: %s, Serial: %08x, Prio: %i\n", i+1, devname, type, devices[i].serial, devices[i].priority); } printf("%i devices found.\n", ndevices); /* Frees the array */ free(devices); return 0; }
When specifying the needed include files we have included the gxsdldr.c loader file directly:
Starting the main function and defining the needed variables:
/* * Main function. */ int main(void) { int st; char errbuf[256]; int errcode; /* Define a GX_SYSTEM_INFO structure to store the informations */ GX_SYSTEM_INFO gxinfo;
Setting the size
member properly:
/* Set the size of the structure. We will get maximum size number of bytes. */ memset(&gxinfo,0,sizeof(GX_SYSTEM_INFO)); gxinfo.size = sizeof(GX_SYSTEM_INFO);
Getting system informations:
/* Calls the getsysteminfo function */ st = gx_getsysteminfo(&gxinfo); if(!st) { errcode = gx_geterrora(0, errbuf, sizeof(errbuf)); errbuf[sizeof(errbuf)-1] = 0; fprintf(stderr, "** GX Error: (%x) %s\n", errcode, errbuf); return 1; }
Displaying the result and ending program:
/* Displays the informations */ printf("GX licences in the system:\n"); printf("Freeflow licences: %i\n",gxinfo.cm_ff); printf("Parking licences: %i\n",gxinfo.cm_park); printf("Container licences: %i\n",gxinfo.cm_accr); printf("Parking Lane licences: %i\n",gxinfo.cm_pl); printf("Face ident licences: %i\n",gxinfo.cm_face); printf("Passport Reader licences: %i\n",gxinfo.pr); return 0; }