#include #include #include #include #include #include #define WORD unsigned int #define DWORD unsigned long #define UCHAR unsigned char #define NoError 0 #define DriverHandleError 1 #define DriverCallError 2 #define AdControllerError 3 #define M_FunExecError 4 #define ConfigCodeError 5 #define FrequencyComputeError 6 #define HighAlarm 7 #define LowAlarm 8 #define AdPollingTimeOut 9 #define AlarmTypeError 10 #define FindBoardError 11 #define AdChannelError 12 #define DaChannelError 13 #define InvalidateDelay 14 #define DelayTimeOut 15 #define InvalidateData 16 #define FifoOverflow 17 #define TimeOut 18 #define ExceedBoardNumber 19 #define NotFoundBoard 20 #define OpenError 21 #define MAX_BOARD_NUMBER 16 /*** wBuf0[] -> the scaned data is stored as 0,1,0,1,0,1,0,1,... order |<-DATACOUNT->| |<-DATACOUNT->| wBuf1[] -> the scaned data is stored as 0,0,0,0,.....,0,1,1,1,1,.....,1 order ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ch:0 data ch:1 data ***/ WORD wBuf0[9000]; WORD wBuf1[9000]; float P1202_FloatSub2(float fA, float fB); short P1202_ShortSub2(short nA, short nB); WORD P1202_DriverInit(WORD *wBoards); WORD P1202_DriverClose(void); WORD P1202_GetDriverVersion(WORD *wDriverVersion); WORD GetAddress(void); WORD P1202_GetConfigAddressSpace(WORD wBoardNo, WORD *wAddrTimer, WORD *wAddrCtrl,WORD *wAddrDio, WORD *wAddrAdda); WORD P1202_DelayUs(WORD wDelayUs); WORD P1202_ActiveBoard( WORD wBoardNo ); WORD P1202_WhichBoardActive(void); WORD P1202_Di(WORD *wDi); WORD P1202_Do(WORD wDo); WORD P1202_Da(WORD wDaChannel, WORD wDaVal); WORD P1202_SetChannelConfig(WORD wAdChannel, WORD wConfig); WORD P1202_AdPolling(float *fAdVal); WORD P1202_AdsPolling(float fAdVal[], WORD wNum); WORD P1202_AdsPacer(float fAdVal[], WORD wNum, WORD wSample); WORD P1202_M_FUN_1(WORD wDaFrequency, WORD wDaWave, float fDaAmplitude, WORD wAdClock, WORD wAdNumber, WORD wAdConfig, float fAdBuf[], float fLowAlarm, float dfHighAlarm); WORD P1202_M_FUN_2(WORD wDaNumber, WORD wDaWave, WORD wDaBuf[], WORD wAdClock, WORD wAdNumber, WORD wAdConfig, WORD wAdBuf[]); WORD P1202_M_FUN_3(WORD wDaFrequency, WORD wDaWave, float fDaAmplitude, WORD wAdClock, WORD wAdNumber, WORD wChannelStatus[], WORD wAdConfig[], float fAdBuf[], float fLowAlarm, float fHighAlarm); WORD P1202_Card0_StartScan(WORD wSampleRate, WORD wChannelStatus[], WORD wChannelConfig[],WORD wCount); WORD ReadingData(void); WORD P1202_Card0_ReadData(void); void P1202_Card0_Stop(void); WORD pic_control(WORD i); void enable_timer0(WORD divv); void disable_timer0(void); void disable_timer1(void); WORD wait_until_pic_ok(); WORD P1202_ClearScan(void); WORD P1202_StartScan(WORD wSampleRate, WORD wNum); WORD magic_scan(); WORD P1202_AddToScan(WORD wAdChannel, WORD wAdConfig, WORD wAverage, WORD wLowAlarm, WORD wHighAlarm, WORD wAlarmType); WORD P1202_SaveScan(WORD wAdChannel, WORD wBuf[]); void P1202_ReadMagicScanResult(DWORD *dwHiAlarm, DWORD *dwLoAlarm); void WriteAddress(UCHAR bBus, UCHAR bDevice, UCHAR bFunction, UCHAR bWhichLong); void _outpd(WORD port,DWORD data); DWORD _inpd(WORD port); WORD wAddrTimer=0; WORD wAddrCtrl =0; WORD wAddrDio =0; WORD wAddrAdda =0; WORD wConfigSpace[MAX_BOARD_NUMBER][4]; WORD wTotalBoards=0; WORD wActiveBoardNo=0xffff; WORD wX2Total,wX2Count,wX2Stop,wX2ThreadStatus,wX2Count; DWORD dwX2Group,dwX2P1,dwX2P2; WORD wSysConfig; /* store for P1202 AdPolling */ WORD wGetAddress=0; WORD wM_FUN_INIT=0; DWORD DWDaFrequency; double DFDaAmplitude; WORD WDaFrequency; float FDaAmplitude; WORD wMagicChannel[32],wMagicConfig[32],wMagicAve[32],wMP=0; WORD wMagicNow[32],wMagicP[32]; WORD wMagicAlarmType[32]; WORD wMagicNum,wMagicP[32],wMagicLowAlarm[32],wMagicHighAlarm[32]; WORD *wMagicScanBuf[32],wMagicScanSave[32]; DWORD dwMagicSum[32],dwMagicLowAlarm,dwMagicHighAlarm;