資源簡介
基于C MEX S函數(shù)的研華PCI1716驅動程序
S函數(shù) MATLAB 研華PCI1716 驅動程序
代碼片段和文件信息
/*?$Revision:?1?$?$Date:?2010/03/17?09:30:30?$?*/
/*?adadvenPCI1716.c?-?S-function?driver?for?A/D?on?Adventec?Boards?PCI-1716?Mutifunction?Boards*/
/*?Copyright?1996-2002?The?MathWorks?Inc.
*/
#define?????????S_FUNCTION_LEVEL????2
#undef??????????S_FUNCTION_NAME
#define?????????S_FUNCTION_NAME?????adadvenPCI1716
#include????????
#include????????
#include????????“simstruc.h“
#ifdef??????????MATLAB_MEX_FILE
#include????????“mex.h“
#endif
#ifndef?????????MATLAB_MEX_FILE
#include????????
#include????????“io_xpcimport.h“
#include????????“pci_xpcimport.h“
#endif
/*?Input?Arguments?*/
#define?NUMBER_OF_ARGS??????????(9)
#define?CHANNEL_ARG?????????????ssGetSFcnParam(S0)
#define?RANGE_ARG???????????????ssGetSFcnParam(S1)
#define?SAMP_TIME_ARG???????????ssGetSFcnParam(S2)
#define?SLOT_ARG????????????????ssGetSFcnParam(S3)
#define?DEV_ARG?????????????????ssGetSFcnParam(S4)
#define?COUPLING_ARG????????????ssGetSFcnParam(S5)
#define?MUX_ARG ssGetSFcnParam(S6)
#define?GAIN_ARG????????????????ssGetSFcnParam(S7)
#define OFFSET_ARG ssGetSFcnParam(S8)
#define?SAMP_TIME_IND???????????(0)
#define?base_ADDR_IND???????????(0)
#define?NO_I_WORKS??????????????(2)?//(66)
#define?base_ADDR_I_IND?????????(1)??//(0)
#define?CHANNELS_I_IND??????????(0)
#define?NO_R_WORKS??????????????(128)?//(64)
#define?GAIN_R_IND??????????????(0)
#define?OFFSET_R_IND????????????(64)
static?char_T?msg[256];
static?void?mdlInitializeSizes(SimStruct?*S)
{
????int?i;
#ifndef?MATLAB_MEX_FILE
#include?“io_xpcimport.c“
#include?“pci_xpcimport.c“
#endif
????ssSetNumSFcnParams(S?NUMBER_OF_ARGS);
????if?(ssGetNumSFcnParams(S)?!=?ssGetSFcnParamsCount(S))?{
????????sprintf(msg“Wrong?number?of?input?arguments?passed.\n%d?arguments?are?expected\n“NUMBER_OF_ARGS);
????????ssSetErrorStatus(Smsg);
????????return;
????}
????ssSetNumContStates(S?0);
????ssSetNumDiscStates(S?0);
????ssSetNumOutputPorts(S?mxGetPr(CHANNEL_ARG));
????for?(i=0;?i ????????ssSetOutputPortWidth(S?i?1);
????}
????ssSetNumInputPorts(S?0);
????ssSetNumSampleTimes(S?1);
????ssSetNumRWork(S?NO_R_WORKS);
????ssSetNumIWork(S?NO_I_WORKS);
????ssSetNumPWork(S?0);
????ssSetNumModes(S?0);
????ssSetNumNonsampledZCs(S?0);
????ssSetSFcnParamNotTunable(S0);
????ssSetSFcnParamNotTunable(S1);
????ssSetSFcnParamNotTunable(S2);
????ssSetSFcnParamNotTunable(S3);
????ssSetSFcnParamNotTunable(S4);
????ssSetSFcnParamNotTunable(S5);
????
????ssSetOptions(S?SS_OPTION_EXCEPTION_FREE_CODE?|?SS_OPTION_PLACE_ASAP);
}
static?void?mdlInitializeSampleTimes(SimStruct?*S)
{
????ssSetSampleTime(S?0?mxGetPr(SAMP_TIME_ARG)[SAMP_TIME_IND]);
????ssSetOffsetTime(S?0?0.0);
}
#define?MDL_START
static?void?mdlStart(SimStruct?*S)
{
#ifndef?MATLAB_MEX_FILE
????int_T?nChannels;
????int_T?i?channel?range?dacRange?coupling;
?
- 上一篇:最小二乘法 MATLAB
- 下一篇:BPA轉matpower格式Matlab程序
評論
共有 條評論