/**********************************************************************/ /* This program is developed by MicroSoft C 5.1 */ /***********************************************************************/ /* Demo 10: two P1602 card M_FUN_3 demo. */ /* First Card: To acquire A/D CH:0, CH:1, CH:2 250 times. */ /* Second Card: To acquire A/D CH:0, CH:1, CH:2 250 times. */ /***********************************************************************/ #define MYLIB #include "P1602.H" int iLine; float fAdBuf[750];// stored the acquired data. 0-249 is the data for CH:0, // 250-499 is the data for CH:1, 500-750 is the data for CH:1 WORD wDaFreq=90; // D/A output frequency is 1.8M/wDaFreq. WORD wAdClk=24; // A/D sampling rate is 8M/wAdClk. WORD wDa[320],wAd[750]; WORD wPlot0[512]; // transformed into wave form int main() { int i,j; WORD wBoards,wRetVal; WORD wDIOdata; char cShow[80]; DWORD dwExact,dwOKs,dwErrors,dwScanCount,dwP1,dwP2,dwStatus; WORD wChannel[32],wConfigCode[32]; WORD wDaWave=80,wAdNum=250; float fDaMagnitude=(double)2.5,dfAdFrequency; WORD wAddrTimer,wAddrCtrl,wAddrDio,wAddrAdda; _clearscreen(0); gotoxy(1,1); // 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<=1 ) { putch(0x07); putch(0x07); putch(0x07); printf("Please install two P1602 cards 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 1234H | Digital Input -> %04xH\n",wDIOdata); printf("----------------------------------------------------------\n"); printf("The Second P1602 Card...\n"); P1602_ActiveBoard( 1 ); P1602_Do(0x5678); // Digital output P1602_Di(&wDIOdata); // Digital input printf("Digital Output -> 5678H | Digital Input -> %04xH\n",wDIOdata); printf("Hit any key to continue...\n"); getch(); printf("\n\n"); /************** M3 Function ****************************/ //--------- To Active First P1602 Card -------------------- printf("First P1602 Card: CH0,CH1,CH2...\n"); P1602_ActiveBoard( 0 ); for(i=0; i<750; i++) fAdBuf[i]=0.0; for(i=0; i<32; i++) wChannel[i]=0; wChannel[0]=wChannel[1]=wChannel[2]=1; for(i=0; i<32; i++) wConfigCode[i]=0; wRetVal=P1602_M_FUN_3(wDaFreq,wDaWave,fDaMagnitude,wAdClk,wAdNum, wChannel,wConfigCode,fAdBuf,-10.0,+10.0); if( wRetVal==0 ) { printf("First Card: P1602_M_FUN3 OK.\n"); printf("Channel 0's first 4 data:\n"); printf("[ 0]=%+4.3f, [ 1]=%+4.3f, [ 2]=%+4.3f, [ 3]=%+4.3f\n", fAdBuf[0],fAdBuf[1],fAdBuf[2],fAdBuf[3]); printf("Channel 1's first 4 data:\n"); printf("[250]=%+4.3f, [251]=%+4.3f, [252]=%+4.3f, [253]=%+4.3f\n", fAdBuf[250],fAdBuf[251],fAdBuf[252],fAdBuf[253]); printf("Channel 2's first 4 data:\n"); printf("[500]=%+4.3f, [501]=%+4.3f, [502]=%+4.3f, [503]=%+4.3f\n", fAdBuf[500],fAdBuf[501],fAdBuf[502],fAdBuf[503]); } else { putch(0x07); printf("First Card: P1602_M_FUN3 Error !!!\n"); exit(0); } /**********************************************************/ printf("\n\n"); //--------- To Active Second P1602 Card -------------------- printf("Second P1602 Card: CH0,CH1,CH2...\n"); P1602_ActiveBoard( 1 ); for(i=0; i<750; i++) fAdBuf[i]=0.0; for(i=0; i<32; i++) wChannel[i]=0; wChannel[0]=wChannel[1]=wChannel[2]=1; for(i=0; i<32; i++) wConfigCode[i]=0; wRetVal=P1602_M_FUN_3(wDaFreq,wDaWave,fDaMagnitude,wAdClk,wAdNum, wChannel,wConfigCode,fAdBuf,-10.0,+10.0); if( wRetVal==0 ) { printf("Second Card: P1602_M_FUN3 OK.\n"); printf("Channel 0's first 4 data:\n"); printf("[ 0]=%+4.3f, [ 1]=%+4.3f, [ 2]=%+4.3f, [ 3]=%+4.3f\n", fAdBuf[0],fAdBuf[1],fAdBuf[2],fAdBuf[3]); printf("Channel 1's first 4 data:\n"); printf("[250]=%+4.3f, [251]=%+4.3f, [252]=%+4.3f, [253]=%+4.3f\n", fAdBuf[250],fAdBuf[251],fAdBuf[252],fAdBuf[253]); printf("Channel 2's first 4 data:\n"); printf("[500]=%+4.3f, [501]=%+4.3f, [502]=%+4.3f, [503]=%+4.3f\n", fAdBuf[500],fAdBuf[501],fAdBuf[502],fAdBuf[503]); } else { putch(0x07); printf("Second Card: P1602_M_FUN3 Error !!!\n"); exit(0); } P1602_DriverClose(); return wRetVal; }