void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int i; int boardNum = 0; int ULStat; int reward; LARGE_INTEGER frequency; // ticks per second char ErrMsg[ERRSTRLEN]; float duration; // get ticks per second QueryPerformanceFrequency(&frequency); if (nrhs > 0) { duration = *mxGetPr(prhs[0]); } else { duration = 10; } ULStat = cbDOut(boardNum, AUXPORT,8); waitMS(duration,frequency); ULStat = cbDOut(boardNum, AUXPORT,0); return; }
DCMotorCommand::~DCMotorCommand(void) { for(int i = 0; i < numMotors; i++) { cbVOut(BoardNumVoltage, 2 * i, voltageGain, 0, Options); } cbDOut(BoardNumVoltage, 1, 0); }
int DCMotorCommand::TurnAmplifiersOff() { for (int i = 0; i < numMotors; i++) { *(motorVoltages + i) = 0; } SendVoltageArrayOut(motorVoltages); cbDOut(BoardNumVoltage, 1, 0); bIsAmplifiersOn = false; return 0; }
DCMotorCommand::DCMotorCommand(void) { numMotors = 7; BoardNumVoltage = 0; Options = DEFAULTOPTION; voltageGain = UNI10VOLTS; minVoltage = 0.0; maxVoltage = 2.0; bIsAmplifiersOn = false; // Initializing VoltageOut modules for(int i = 0; i < numMotors; i++) { cbVOut(BoardNumVoltage, 2 * i, voltageGain, 0, Options); } // Configuring Digital Outputs cbDConfigPort(BoardNumVoltage, 1, DIGITALOUT); cbDOut(BoardNumVoltage, 1, 0); }
int DCMotorCommand::TurnAmplifiersOn() { cbDOut(BoardNumVoltage, 1, 255); bIsAmplifiersOn = true; return 0; }
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int i; int boardNum = 0; int ULStat; int lowPort,highPort,strobePort; LARGE_INTEGER frequency; // ticks per second double* doubleData; mxChar * charData; double waitTimeMS1,waitTimeMS2; /* These variables set the lag between bit flips (ms) */ /* 20-50 uS is the range needed for the Ripple system */ /* faster than that will likely cause dropped codes */ waitTimeMS1 = 0.050; /* between setting bits and the strobe */ waitTimeMS2 = 0.050; /* between setting the strobe to 1 and back to 0 */ // get ticks per second QueryPerformanceFrequency(&frequency); lowPort = FIRSTPORTA; highPort = FIRSTPORTB; strobePort = FIRSTPORTC; ULStat = cbDConfigPort (boardNum, lowPort, DIGITALOUT); ULStat = cbDConfigPort (boardNum, highPort, DIGITALOUT); ULStat = cbDConfigPort (boardNum, strobePort, DIGITALOUT); if (nrhs > 0) { switch (mxGetClassID(prhs[0])) { case mxDOUBLE_CLASS: doubleData = mxGetPr(prhs[0]); for (i = 0; i < mxGetNumberOfElements(prhs[0]); i++) { ULStat = cbDOut(boardNum, lowPort, ((int)doubleData[i]) % 256); ULStat = cbDOut(boardNum, highPort, ((int)doubleData[i]) / 256); waitMS(waitTimeMS1,frequency); ULStat = cbDOut(boardNum, strobePort,1); waitMS(waitTimeMS2,frequency); ULStat = cbDOut(boardNum, strobePort,0); } break; case mxCHAR_CLASS: charData = (mxChar*)mxGetData(prhs[0]); for (i = 0; i < mxGetNumberOfElements(prhs[0]); i++) { ULStat = cbDOut(boardNum, lowPort, charData[i]); waitMS(waitTimeMS1,frequency); ULStat = cbDOut(boardNum, strobePort, 1); waitMS(waitTimeMS2,frequency); ULStat = cbDOut(boardNum, strobePort, 0); } break; default: mexPrintf("Sorry, this data type cannot be transmitted.\n"); mexEvalString("drawnow;"); } } return; }