// pac_i8026W_Demo.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include "pac_i8026W.h" int slotIndex=-1,runFlag=0; char sTemp[20]; void TestDIO(); void TestAI(); void TestAO(); int main(int argc, char* argv[]) { int slot=0; int function=0,c; char libDate[32]; short firmware; printf("\nThis demo show I-8026W firmware and lib information.\n"); for(slot=0;slot<8;slot++) { if(pac_i8026W_Init(slot)==0) { slotIndex=slot; break; } } if(slotIndex==-1) { printf("There is no i8026 at i8000\n"); exit(0); } else { printf("There is an i8026 at slot %d\n",slotIndex); } printf("\n****************************"); firmware = pac_i8026W_GetFirmwareVer(slotIndex); printf("\Firmware Version =: %04X",firmware); printf("\nLibrary Version =: %04X",pac_i8026W_GetLibVersion()); pac_i8026W_GetLibDate(libDate); printf("\nBuild Date =: %s",libDate); printf("\n****************************\n"); menu: printf("Choice Menu\n\r"); printf(" 0: Test DIO\n\r"); printf(" 1: Test AI\n\r"); printf(" 2: Test AO\n\r"); printf(" 3: to quit the program\n\r"); scanf("%d",&function); switch(function) { case 0: TestDIO(); break; case 1: TestAI(); break; case 2: TestAO(); break; case 3: exit(0); break; } printf(" Press '0' to quit the program \n\r"); printf(" others to menu \n\r"); scanf("%d", &c); if(c==0) exit(0); else goto menu; } void TestAI() { int j=0,i=0; short gain=0,format=0; float f[6]; short h[6]; char GainStr[5][32]={"+/-10V","+/-5V","+/-2.5V","+/-1.25V", "+/-20mA"}; printf("Gain\n\r"); printf(" 0=+/-10V\n\r"); printf(" 1=+/-5V\n\r"); printf(" 2=+10V\n\r"); printf(" 3=+5V\n\r"); printf(" 4=0~20mA\n\r"); printf(" Please choose (0~4):"); scanf("%d",&gain); printf("Select Format \n\r"); printf(" 0=Engineering format\n\r"); printf(" 1=Hex format\n\r"); scanf("%d", &format); runFlag=1; while(runFlag) { for(i=0;i<6;i++) { if(format==0) pac_i8026W_ReadAI(slotIndex,i,gain,&f[i]); else pac_i8026W_ReadAIHex(slotIndex,i,gain,&h[i]); } if(format==0) printf("%s ==> %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f \n\r",GainStr[gain],f[0],f[1],f[2],f[3],f[4],f[5]); else printf("%s ==> %04X %04X %04X %04X %04X %04X \n\r",GainStr[gain],h[0],h[1],h[2],h[3],h[4],h[5]); j++; if(j>5) runFlag=0; } } void TestDIO() { int ch=0; short diVal=0,doVal=0,bitVal=0; unsigned char diBitArr[2],doBitArr[2]; int option=0; printf("Choice Function\n\r"); printf(" 0: Write DO \n\r"); printf(" 1: Write DO Bit\n\r"); printf(" 2: Readback DIO\n\r"); printf(" Please choose (0~2):"); scanf("%d",&option); switch(option) { case 0: printf("Write DO Value 0~3 \n\r"); scanf("%d",&doVal); pac_i8026W_WriteDO(slotIndex, doVal); break; case 1: printf("Select channel to write DO \n\r"); printf(" 0=CH 0\n\r"); printf(" 1=CH 1\n\r"); scanf("%d",&ch); printf("Input DO status\n\r"); printf(" 0= Turn OFF CH %d \n\r",ch); printf(" 1= Turn ON CH %d\n\r",ch); scanf("%d",&bitVal); pac_i8026W_WriteDOBit(slotIndex,ch,bitVal); break; default: pac_i8026W_ReadDIO(slotIndex, &diVal,&doVal,diBitArr,doBitArr); printf("DI %d[%X] DO %d[%X]\n", diVal,diVal,doVal,doVal); printf("DI-0[%d],DI-1[%d],DO-0[%d],DO-1[%d]\n\r",diBitArr[0] ,diBitArr[1],doBitArr[0],doBitArr[1]); break; } } void TestAO() { float fVal=0.0; short hVal=0,format=0,gain=0; char GainStr[5][32]={"+/-10V","+/-5V","10V","5V", "0~20mA"}; int i,ch=0; printf("Gain\n\r"); printf(" 0=+/-10V\n\r"); printf(" 1=+/-5V\n\r"); printf(" 2=+/-2.5V\n\r"); printf(" 3=+/-1.25V\n\r"); printf(" 4=+/-20mA\n\r"); printf(" Please choose (0~4):"); scanf("%d",&gain); printf("Select Format \n\r"); printf(" 0=Engineering format\n\r"); printf(" 1=Hex format\n\r"); scanf("%d",&format); printf("Select channel to write AO \n\r"); printf(" 0=CH 0\n\r"); printf(" 1=CH 1\n\r"); scanf("%d",&ch); if(format==0) { printf("Input AO value %s \n\r", GainStr[gain]); scanf("%f",&fVal); pac_i8026W_WriteAO(slotIndex,ch,gain,fVal); } else { if(gain>=2) printf("Input AO value 0x0000~ 0xffff \n\r"); else printf("Input AO value 0x8000~ 0x7fff \n\r"); scanf("%x",&hVal); pac_i8026W_WriteAOHex(slotIndex,ch,gain,hVal); } }