/****************************************************************************** ** ** Fonction de démarage du comptage de la voie A du compteur incrémentale. ** ******************************************************************************/ bool NI6211::startCounter() { int32 error=0; taskCounter = new TaskHandle; /*------ DAQmx Configure Code Reading Task ------*/ DAQmxErrChk (DAQmxCreateTask("",taskCounter)); DAQmxErrChk (DAQmxCreateCIAngEncoderChan(*taskCounter,"Equilibreuse/ctr0","",DAQmx_Val_X1,TRUE,999,DAQmx_Val_AHighBLow,DAQmx_Val_Ticks,1000,0,NULL)); DAQmxErrChk (DAQmxSetArmStartTrigType(*taskCounter,DAQmx_Val_DigEdge)); DAQmxErrChk (DAQmxSetDigEdgeArmStartTrigSrc(*taskCounter,"/Equilibreuse/PFI2")); /*------ DAQmx Start Code ------*/ DAQmxErrChk (DAQmxStartTask(*taskCounter)); Erreur: checkError(error); return 0; }
motorControl::motorControl(double offset1, double offset2) { encoderBias[0] = encoderBias[1] = 0; encoderGain[0] = encoderGain[1] = 0; I = 4; cortexVoluntaryAmp = 10000; cortexVoluntaryFreq = 0.25; char errBuff[2048]={'\0'}; int32 error=0; angle = 0; velocity = 0; trialTrigger = 0; gammaStatic1 = 0; gammaDynamic1 = 0; gammaStatic2 = 0; gammaDynamic2 = 0; cortexDrive[0] = 0; cortexDrive[1] = 0; spindleIa[0] = 0; spindleII[0] = 0; spindleIa[1] = 0; spindleII[1] = 0; isEnable = FALSE; isWindUp = FALSE; isControlling = FALSE; live = FALSE; loadCellOffset1 = offset1; loadCellOffset2 = offset2; loadCellData[0] = 0; loadCellData[1] = 0; motorRef[0] = 4; motorRef[1] = 4; encoderData1[0] = 0; encoderData2[0] = 0; resetMuscleLength = TRUE; muscleLengthPreviousTick[0] = 1; muscleLengthPreviousTick[1] = 1; muscleLengthOffset [0] = 0; muscleLengthOffset [1] = 0; strcpy(header,"Time, Exp Prot, Len1, Len2, ForcMeas1, ForcMeas2,"); if (dataAcquisitionFlag[0]){ strcat (header, ", ForceDes1, ForceDes2"); } if (dataAcquisitionFlag[1]){ strcat (header, ", EMG1, EMG2"); } if (dataAcquisitionFlag[2]){ strcat (header, ", Ia1, Ia2"); } if (dataAcquisitionFlag[3]){ strcat (header, ", II1, II2"); } if (dataAcquisitionFlag[4]){ strcat (header, ", Spike Count1, Spike Count2"); } if (dataAcquisitionFlag[5]){ strcat (header, ", Raster 1-1, Raster 2-1"); } if (dataAcquisitionFlag[6]){ strcat (header, ", Raster 1-2, Raster 2-2"); } if (dataAcquisitionFlag[7]){ strcat (header, ", Raster 1-3, Raster 2-3"); } if (dataAcquisitionFlag[8]){ strcat (header, ", Raster 1-4, Raster 2-4"); } if (dataAcquisitionFlag[9]){ strcat (header, ", Raster 1-5, Raster 2-5"); } if (dataAcquisitionFlag[10]){ strcat (header, ", Raster 1-6, Raster 2-6"); } char dataTemp[100]=""; strcat(header,"\n"); sprintf(dataTemp,"%d,%d,%d,%d,",dataAcquisitionFlag[0],dataAcquisitionFlag[1],dataAcquisitionFlag[2],dataAcquisitionFlag[3]); strcat(header,dataTemp); sprintf(dataTemp,"%d,%d,%d,%d,",dataAcquisitionFlag[4],dataAcquisitionFlag[5],dataAcquisitionFlag[6],dataAcquisitionFlag[7]); strcat(header,dataTemp); sprintf(dataTemp,"%d,%d,%d,%d\n",dataAcquisitionFlag[8],dataAcquisitionFlag[9],dataAcquisitionFlag[10],dataAcquisitionFlag[11]); strcat(header,dataTemp); DAQmxErrChk (DAQmxCreateTask("",&loadCelltaskHandle)); DAQmxErrChk (DAQmxCreateAIVoltageChan(loadCelltaskHandle,"PXI1Slot5/ai8","loadCell1",DAQmx_Val_RSE,loadCellMinVoltage,loadCellMaxVoltage,DAQmx_Val_Volts,NULL)); DAQmxErrChk (DAQmxCreateAIVoltageChan(loadCelltaskHandle,"PXI1Slot5/ai9","loadCell2",DAQmx_Val_RSE,loadCellMinVoltage,loadCellMaxVoltage,DAQmx_Val_Volts,NULL)); //DAQmxErrChk (DAQmxCreateAIVoltageChan(loadCelltaskHandle,"PXI1Slot5/ai16","ACC z",DAQmx_Val_RSE,loadCellMinVoltage,loadCellMaxVoltage,DAQmx_Val_Volts,NULL)); //DAQmxErrChk (DAQmxCreateAIVoltageChan(loadCelltaskHandle,"PXI1Slot5/ai17","ACC y",DAQmx_Val_RSE,loadCellMinVoltage,loadCellMaxVoltage,DAQmx_Val_Volts,NULL)); //DAQmxErrChk (DAQmxCreateAIVoltageChan(loadCelltaskHandle,"PXI1Slot5/ai18","ACC x",DAQmx_Val_RSE,loadCellMinVoltage,loadCellMaxVoltage,DAQmx_Val_Volts,NULL)); //DAQmxErrChk (DAQmxCreateAIVoltageChan(loadCelltaskHandle,"PXI1Slot5/ai19","Side LoadCell1",DAQmx_Val_RSE,loadCellMinVoltage,loadCellMaxVoltage,DAQmx_Val_Volts,NULL)); //DAQmxErrChk (DAQmxCreateAIVoltageChan(loadCelltaskHandle,"PXI1Slot5/ai20","Side LoadCell2",DAQmx_Val_RSE,loadCellMinVoltage,loadCellMaxVoltage,DAQmx_Val_Volts,NULL)); DAQmxErrChk (DAQmxCfgSampClkTiming(loadCelltaskHandle,"",controlFreq,DAQmx_Val_Rising,DAQmx_Val_HWTimedSinglePoint,NULL)); DAQmxErrChk (DAQmxSetRealTimeConvLateErrorsToWarnings(loadCelltaskHandle,1)); DAQmxErrChk (DAQmxCreateTask("",&motorTaskHandle)); DAQmxErrChk (DAQmxCreateAOVoltageChan(motorTaskHandle,"PXI1Slot2/ao9","motor1",motorMinVoltage,motorMaxVoltage,DAQmx_Val_Volts,NULL)); DAQmxErrChk (DAQmxCreateAOVoltageChan(motorTaskHandle,"PXI1Slot2/ao11","motor2",motorMinVoltage,motorMaxVoltage,DAQmx_Val_Volts,NULL)); DAQmxErrChk (DAQmxCreateAOVoltageChan(motorTaskHandle,"PXI1Slot2/ao31","speaker",motorMinVoltage,motorMaxVoltage,DAQmx_Val_Volts,NULL)); DAQmxErrChk (DAQmxCfgSampClkTiming(motorTaskHandle,"",controlFreq,DAQmx_Val_Rising,DAQmx_Val_HWTimedSinglePoint,1)); DAQmxErrChk (DAQmxCreateTask("",&motorEnableHandle)); DAQmxErrChk (DAQmxCreateDOChan(motorEnableHandle,"PXI1Slot2/port0","motorEnable",DAQmx_Val_ChanForAllLines)); DAQmxErrChk (DAQmxCreateTask("",&encodertaskHandle[0])); DAQmxErrChk (DAQmxCreateCIAngEncoderChan(encodertaskHandle[0],"PXI1Slot3/ctr7","Enoder 1",DAQmx_Val_X4,0,0.0,DAQmx_Val_AHighBHigh,DAQmx_Val_Degrees,encoderPulsesPerRev,0.0,"")); DAQmxErrChk (DAQmxCfgSampClkTiming(encodertaskHandle[0],"/PXI1Slot5/ai/SampleClock",controlFreq,DAQmx_Val_Rising,DAQmx_Val_HWTimedSinglePoint,1)); DAQmxErrChk (DAQmxCreateTask("",&encodertaskHandle[1])); DAQmxErrChk (DAQmxCreateCIAngEncoderChan(encodertaskHandle[1],"PXI1Slot3/ctr3","Enoder 2",DAQmx_Val_X4,0,0.0,DAQmx_Val_AHighBHigh,DAQmx_Val_Degrees,encoderPulsesPerRev,0.0,"")); DAQmxErrChk (DAQmxCfgSampClkTiming(encodertaskHandle[1],"/PXI1Slot5/ai/SampleClock",controlFreq,DAQmx_Val_Rising,DAQmx_Val_HWTimedSinglePoint,1)); Error: if( DAQmxFailed(error) ) { DAQmxGetExtendedErrorInfo(errBuff,2048); DAQmxClearTask(motorTaskHandle); DAQmxClearTask(loadCelltaskHandle); DAQmxClearTask(motorEnableHandle); printf("DAQmx Error: %s\n",errBuff); printf("Motor, load cell or encoder initialization error\n"); } }