/***********************************************************************/ /* This program is developed by Borland C++ 3.1 */ /***********************************************************************/ /* Demo 1: One P1602 Card demo. */ /* Basic operation onto P1602 card. */ /* => P1602_Init(), P1602_ActiveBoard(), P1602_Di(), P1602_Do() */ /***********************************************************************/ #include "P1602.H" int main() { int i,j; WORD wBoards,wRetVal,wVal; WORD wDIOdata; float fVal,fAdVals[5]; short nVal; WORD wAddrTimer,wAddrCtrl,wAddrDio,wAddrAdda; clrscr(); /* initiaing P1602 card and detect how many P1602 card in PC */ wRetVal=P1602_DriverInit(&wBoards); printf("Threr are %d P1602 Cards in this PC\n",wBoards); if( wBoards==0 ) { putch(0x07); putch(0x07); putch(0x07); printf("There are no P1602 card in this PC !!!\n"); exit(0); } /* dump every P1602 card's configuration address space */ printf("The Configuration Space -> Timer Control DIO AD/DA\n"); for(i=0; i 55aaH | Digital Input -> %04xH\n",wDIOdata); wRetVal=P1602_Da(0,0x900); /* DA CH:0 output 0x900 */ if(wRetVal==0) printf("DA CH:0 output 0x900.\n"); else { putch(0x07); putch(0x07); putch(0x07); printf("DA CH:0 Error !!!\n"); exit(0); } wRetVal=P1602_Da(1,0xA00); /* DA CH:1 output 0xA00 */ if(wRetVal==0) printf("DA CH:1 output 0xA00.\n"); else { putch(0x07); putch(0x07); putch(0x07); printf("DA CH:1 Error !!!\n"); exit(0); } /*----------------- CH:0-----------------------------*/ wRetVal=P1602_SetChannelConfig(0,1);/* +/- 5V range for PCI-1602 */ wRetVal+=P1602_DelayUs(3); /* 3 us settling time for PCI-1602 */ wRetVal+=P1602_AdPolling(&fVal); if (wRetVal==0) printf("(5.0V Range) AdPolling CH:0 -> %5.3f\n",fVal); else { putch(0x07); putch(0x07); putch(0x07); printf("(5.0V Range) AdPolling CH:0 Error !!!\n"); exit(0); } /*--------------- CH:1---------------------------*/ wRetVal=P1602_SetChannelConfig(1,1); /* +/- 5V range for PCI-1602 */ wRetVal+=P1602_DelayUs(3); /* 3 us settling time for PCI-1602 */ wRetVal+=P1602_AdPolling(&fVal); if (wRetVal==0) printf("(5.0V Range) AdPolling CH:1 -> %5.3f\n",fVal); else { putch(0x07); putch(0x07); putch(0x07); printf("(5.0V Range) AdPolling CH:1 Error !!!\n"); exit(0); } wRetVal=P1602_SetChannelConfig(0,1); /* +/- 5V range for PCI-1602 */ wRetVal+=P1602_DelayUs(3); /* 3 us settling time for PCI-1602 */ wRetVal=P1602_AdsPolling(fAdVals,5); /* reading 5 A/D values */ gotoxy(2,18); printf("P1602_AdsPolling() ==> 0:[%5.3f] 1:[%5.3f] 2:[%5.3f] 3:[%5.3f] 4:[%5.3f]\n",fAdVals[0], fAdVals[1],fAdVals[2],fAdVals[3],fAdVals[4]); for(j=0; j<5; j++) fAdVals[j]=-100.0; wRetVal=P1602_SetChannelConfig(0,1); /* +/- 5V range for PCI-1602 */ wRetVal+=P1602_DelayUs(3); /* 3 us settling time for PCI-1602 */ wRetVal=P1602_AdsPacer(fAdVals,5,80);/* reading 5 A/D values with sampling */ /* rate 8M/80=100K */ gotoxy(2,19); printf("P1602_AdsPacer() ==> 0:[%5.3f] 1:[%5.3f] 2:[%5.3f] 3:[%5.3f] 4:[%5.3f]\n",fAdVals[0], fAdVals[1],fAdVals[2],fAdVals[3],fAdVals[4]); P1602_DriverClose(); return 0; }