#include #include #include #include "..\..\Lib\8000E.h" #include "..\..\Lib\8026W.h" int slotIndex=-1,runFlag=0; char sTemp[20]; void TestDIO(); void TestAI(); void TestAO(); void main() { int slot=0; int function=0,c; char libDate[32]; short firmware; Print("\nThis demo show I-8026W firmware and lib information.\n"); for(slot=0;slot<8;slot++) { if(i8026W_Init(slot)==0) { slotIndex=slot; break; } } if(slotIndex==-1) { Print("There is no i8026 at i8000\n"); exit(0); } else { Print("There is an i8026 at slot %d\n",slotIndex); } Print("\n****************************"); firmware = i8026W_GetFirmwareVer(slotIndex); Print("\Firmware Version =: %04X",firmware); Print("\nLibrary Version =: %04X",i8026W_GetLibVersion()); i8026W_GetLibDate(libDate); Print("\nBuild Date =: %s",libDate); Print("\n****************************\n"); menu: Print("Choice Menu\n\r"); Print(" 0: Test DIO\n\r"); Print(" 1: Test AI\n\r"); Print(" 2: Test AO\n\r"); Print(" 3: to quit the program\n\r"); LineInput(sTemp,20); function=atoi(sTemp); switch(function) { case 0: TestDIO(); break; case 1: TestAI(); break; case 2: TestAO(); break; case 3: exit(0); break; } Print(" Press '0' to quit the program \n\r"); Print(" others to menu \n\r"); LineInput(sTemp,20); c=atoi(sTemp); if(c==0) exit(0); else goto menu; } void TestAI() { int i=0,ch=0,j; short gain=0,format=0; float fVal=0; short hVal=0; float f[6]; short h[6]; unsigned long T,dT; char GainStr[5][32]={"+/-10V","+/-5V","+/-2.5V","+/-1.25V", "+/-20mA"}; Print("Gain\n\r"); Print(" 0=+/-10V\n\r"); Print(" 1=+/-5V\n\r"); Print(" 2=+10V\n\r"); Print(" 3=+5V\n\r"); Print(" 4=0~20mA\n\r"); Print(" Please choose (0~4):"); LineInput(sTemp,20); gain=atoi(sTemp); Print("Select Format \n\r"); Print(" 0=Engineering format\n\r"); Print(" 1=Hex format\n\r"); LineInput(sTemp,20); format=atoi(sTemp); runFlag=1; while(runFlag) { for(ch=0;ch<6;ch++) { if(format==0) { i8026W_ReadAI(slotIndex,ch,gain,&fVal); f[ch]= fVal; } else { i8026W_ReadAIHex(slotIndex,i,gain,&hVal); h[ch]= hVal; } } if(format==0) Print("%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 Print("%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; Print("Choice Function\n\r"); Print(" 0: Write DO \n\r"); Print(" 1: Write DO Bit\n\r"); Print(" 2: Readback DIO\n\r"); Print(" Please choose (0~2):"); LineInput(sTemp,20); option=atoi(sTemp); switch(option) { case 0: Print("Write DO Value 0~3 \n\r"); LineInput(sTemp,20); doVal=atoi(sTemp); i8026W_WriteDO(slotIndex, doVal); break; case 1: Print("Select channel to write DO \n\r"); Print(" 0=CH 0\n\r"); Print(" 1=CH 1\n\r"); LineInput(sTemp,20); ch=atoi(sTemp); Print("Input DO status\n\r"); Print(" 0= Turn OFF CH %d \n\r",ch); Print(" 1= Turn ON CH %d\n\r",ch); LineInput(sTemp,20); bitVal=atoi(sTemp); i8026W_WriteDOBit(slotIndex,ch,bitVal); break; default: i8026W_ReadDIO(slotIndex, &diVal,&doVal,diBitArr,doBitArr); Print("DI %d[%X] DO %d[%X]\n", diVal,diVal,doVal,doVal); Print("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; Print("Gain\n\r"); Print(" 0=+/-10V\n\r"); Print(" 1=+/-5V\n\r"); Print(" 2=+/-2.5V\n\r"); Print(" 3=+/-1.25V\n\r"); Print(" 4=+/-20mA\n\r"); Print(" Please choose (0~4):"); LineInput(sTemp,20); gain=atoi(sTemp); Print("Select Format \n\r"); Print(" 0=Engineering format\n\r"); Print(" 1=Hex format\n\r"); LineInput(sTemp,20); format=atoi(sTemp); Print("Select channel to write AO \n\r"); Print(" 0=CH 0\n\r"); Print(" 1=CH 1\n\r"); LineInput(sTemp,20); ch=atoi(sTemp); if(format==0) { Print("Input AO value %s \n\r", GainStr[gain]); LineInput(sTemp,20); fVal=atof(sTemp); i8026W_WriteAO(slotIndex,ch,gain,fVal); } else { if(gain>=2) Print("Input AO value 0x0000~ 0xffff \n\r"); else Print("Input AO value 0x8000~ 0x7fff \n\r"); LineInput(sTemp,20); hVal=atoi(sTemp); i8026W_WriteAOHex(slotIndex,ch,gain,hVal); } }