Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

LABORATOR 6

NIDAQmx_NewPhysChanDIPortCtrl(mainPanel, MAIN_PANEL_IDC_DI_CHANNEL, 1);

NIDAQmx_NewPhysChanDOPortCtrl(mainPanel, MAIN_PANEL_IDC_DO_CHANNEL, 1);

DAQmxReadDigitalU8 (diTask, 1, 6000, DAQmx_Val_GroupByChannel, &readTask, 1,


sampsPerChanRead, NULL);

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_DI_VALUE, readTask);

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_KEY_LED_3, !(readTask&8));

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_KEY_LED_2, !(readTask&4));

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_KEY_LED_1, !(readTask&2));

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_KEY_LED_0, !(readTask&1));

DAQmxWriteDigitalU8 (doTask, 1, TRUE, -1, DAQmx_Val_GroupByChannel, &writeTask,


sampsPerChanWritten, NULL);

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_LED_7, !(writeTask&128));

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_LED_6, !(writeTask&64));

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_LED_5, !(writeTask&32));

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_LED_4, !(writeTask&16));

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_LED_3, !(writeTask&8));

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_LED_2, !(writeTask&4));

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_LED_1, !(writeTask&2));

SetCtrlVal(mainPanel, MAIN_PANEL_IDC_LED_0, !(writeTask&1));

GetCtrlVal(mainPanel, MAIN_PANEL_IDC_DI_START, &button_value);

if(button_value==1)

GetCtrlVal(panel, MAIN_PANEL_IDC_DI_CHANNEL, channel);

//se creeaza un task


DAQmxCreateTask("", &diTask);

//se creaza canalul digital de intrare

DAQmxCreateDIChan(diTask, channel, "", DAQmx_Val_ChanForAllLines);

//starteaza task-ul

DAQmxStartTask(diTask);

SetCtrlAttribute(mainPanel, MAIN_PANEL_IDC_KEY_TIMER, ATTR_ENABLED, 1);

else{

DAQmxStopTask(diTask); //oprire task

DAQmxClearTask(diTask);//elibereaza eventualele resurse folosite de task

OnDiButtonRead(mainPanel,MAIN_PANEL_IDC_DI_READ_BTT,EVENT_COMMIT,NULL,
0,0);

LABORATOR 7

NIDAQmx_NewPhysChanAICtrl (mainPanel, MAIN_PANEL_IDC_CHANEL, 1);

DAQmxCreateTask("", &taskHandle);

GetCtrlVal(mainPanel, MAIN_PANEL_IDC_MIN, &min);

GetCtrlVal(mainPanel, MAIN_PANEL_IDC_MAX, &max);

GetCtrlVal(mainPanel, MAIN_PANEL_IDC_SAMPLING_RATE, &rate);

GetCtrlVal(mainPanel, MAIN_PANEL_IDC_SAMPLES_PER_CH , &samples);

GetCtrlVal(mainPanel, MAIN_PANEL_IDC_CHANEL , buffer_chanel);

DAQmxCreateAIVoltageChan(taskHandle, buffer_chanel, "", DAQmx_Val_RSE, min, max,


DAQmx_Val_Volts, NULL );

DAQmxCfgSampClkTiming(taskHandle, "", rate, DAQmx_Val_Rising,


DAQmx_Val_ContSamps, samples);
DAQmxRegisterEveryNSamplesEvent(taskHandle, DAQmx_Val_Acquired_Into_Buffer,
samples, 0, EveryNCallback, NULL);

DAQmxStartTask(taskHandle);

SetCtrlAttribute(mainPanel, MAIN_PANEL_IDC_START_BUTTON, ATTR_DIMMED, 1);

SetCtrlAttribute(mainPanel, MAIN_PANEL_IDC_STOP_BUTTON, ATTR_DIMMED, 0);

DAQmxStopTask(taskHandle); //oprire task

DAQmxClearTask(taskHandle); //elibereaza eventualele resurse folosite de task

SetCtrlAttribute(mainPanel, MAIN_PANEL_IDC_START_BUTTON, ATTR_DIMMED, 0);

SetCtrlAttribute(mainPanel, MAIN_PANEL_IDC_STOP_BUTTON, ATTR_DIMMED, 1);

GetCtrlVal(mainPanel, MAIN_PANEL_IDC_MIN, &min);

GetCtrlVal(mainPanel, MAIN_PANEL_IDC_MAX, &max);

GetCtrlVal(mainPanel, MAIN_PANEL_IDC_SAMPLES_PER_CH , &samples);

DAQmxReadAnalogF64(taskHandle, nSamples, 1, DAQmx_Val_GroupByScanNumber,


readArray, samples, &numRead, NULL);

//normalizarea axelor grafului

SetAxisScalingMode(mainPanel, MAIN_PANEL_IDC_DISPLAY, VAL_RIGHT_YAXIS ,


VAL_MANUAL, min, max);

PlotStripChart(mainPanel, MAIN_PANEL_IDC_DISPLAY, readArray, nSamples, 0, 0,


VAL_DOUBLE);

LABORATOR 8-IN

NIDAQmx_NewPhysChanAICtrl(panelHandle, MAIN_PANEL_IDC_CHANNELS, 1);

GetCtrlVal(panel, MAIN_PANEL_IDC_MIN, &cMin);

GetCtrlVal(panel, MAIN_PANEL_IDC_MAX, &cMax);

GetCtrlVal(panel, MAIN_PANEL_IDC_CHANNELS, channelRange);

GetCtrlVal(panel, MAIN_PANEL_IDC_SAMP_PER_CHANNEL, &samplesPerChannel);


GetCtrlVal(panel, MAIN_PANEL_IDC_RATE, &rate);

//creare task

DAQmxCreateTask(" ", &aiTask);

//configurare canal analogic de intrare

DAQmxCreateAIVoltageChan(aiTask, channelRange, "", DAQmx_Val_RSE, cMin, cMax,


DAQmx_Val_Volts, NULL );

//stabilirea mod de esantionare

DAQmxCfgSampClkTiming(aiTask, "", rate,DAQmx_Val_Rising, DAQmx_Val_ContSamps,


samplesPerChannel );

//inregistrare func'ie de callback

DAQmxRegisterEveryNSamplesEvent( aiTask ,DAQmx_Val_Acquired_Into_Buffer,


samplesPerChannel, 0, EveryNSamples, NULL );

//inregistrare functie DoneCallback

DAQmxRegisterDoneEvent(aiTask, 0, DoneCallback, NULL );

//determinare numar de canale de achizitie

DAQmxGetTaskAttribute(aiTask,DAQmx_Task_NumChans, &noChannels);

//setez numarul de puncte pe ecran pentru controlul de tip strichart

SetCtrlAttribute(panelHandle, MAIN_PANEL_IDC_STRIPCHART,
ATTR_POINTS_PER_SCREEN, samplesPerChannel);

//setez numarul de forme de unda pentur controlul de tip stripchart

SetCtrlAttribute(panelHandle, MAIN_PANEL_IDC_STRIPCHART, ATTR_NUM_TRACES,


noChannels);

DAQmxStartTask(aiTask);

//citire esantioane

DAQmxReadAnalogF64(aiTask, nSamples, 0, DAQmx_Val_GroupByChannel, buffer,


noChannels*nSamples, &numRead, NULL);

//setrgerea graph-ului
DeleteGraphPlot(panelHandle, MAIN_PANEL_IDC_GRAPH, -1,
VAL_IMMEDIATE_DRAW);

//plotare forme de unda pe un graph

for(i=0; i< noChannels; i++)

PlotY(panelHandle, MAIN_PANEL_IDC_GRAPH, buffer + i*nSamples, nSamples,


VAL_DOUBLE, VAL_CONNECTED_POINTS, VAL_SIMPLE_DOT, VAL_SOLID, 1,
VAL_RED+i);

//citire esantioane

DAQmxReadAnalogF64(aiTask, nSamples, -1, DAQmx_Val_GroupByScanNumber, buffer,


noChannels*nSamples, &numRead, NULL);

//plotare forme de unda pe un stripchart

PlotStripChart(panelHandle, MAIN_PANEL_IDC_STRIPCHART, buffer,


noChannels*numRead, 0, 0, VAL_DOUBLE);

LABORATOR 8-OUT

NIDAQmx_NewPhysChanAOCtrl(mainPanel,MAIN_PANEL_IDC_CHANNEL,0);

GetCtrlVal(mainPanel,MAIN_PANEL_IDC_MIN,&min);

GetCtrlVal(mainPanel,MAIN_PANEL_IDC_MAX,&max);

GetCtrlVal(mainPanel,MAIN_PANEL_IDC_FREQUENCY,&rate);

GetCtrlVal(mainPanel,MAIN_PANEL_IDC_POINTS_PERIOD,&samplesPerChanel);

GetCtrlVal(mainPanel,MAIN_PANEL_IDC_CHANNEL,channel);

GetCtrlVal(mainPanel,MAIN_PANEL_IDC_AMPLITUDE,&amp);

SetCtrlAttribute(mainPanel,MAIN_PANEL_IDC_BTT_START,ATTR_DIMMED,1);

SetCtrlAttribute(mainPanel,MAIN_PANEL_IDC_BTT_STOP,ATTR_DIMMED,0);

SineWave(samplesPerChanel,amp,1./samplesPerChanel,&phase,writeArray);

for(int i=0;i<samplesPerChanel-1;++i)

{writeArray[i]+=amp;}
DeleteGraphPlot(mainPanel,MAIN_PANEL_IDC_GRAPH,-1,VAL_IMMEDIATE_DRAW);

//PlotY(mainPanel,MAIN_PANEL_IDC_GRAPH,writeArray,samplesPerChanel,VAL_DOUBL
E,VAL_THIN_LINE,VAL_SOLID_DIAMOND,VAL_DASH_DOT,1,VAL_GREEN);

DAQmxCreateTask("",&doTask);

DAQmxCreateAOVoltageChan(doTask, channel,"", min, max,DAQmx_Val_Volts, NULL );

DAQmxStartTask(doTask);

SetCtrlAttribute( mainPanel,MAIN_PANEL_IDC_GEN_TIMER,ATTR_ENABLED,1) ;

SetCtrlAttribute(mainPanel,MAIN_PANEL_IDC_BTT_START,ATTR_DIMMED,0);

SetCtrlAttribute(mainPanel,MAIN_PANEL_IDC_BTT_STOP,ATTR_DIMMED,1);

SetCtrlAttribute( mainPanel,MAIN_PANEL_IDC_GEN_TIMER,ATTR_ENABLED,0) ;

DAQmxStopTask(doTask); //oprire task

DAQmxClearTask(doTask); //elibereaza

DAQmxWriteAnalogF64 (doTask,1, 1, -1, DAQmx_Val_GroupByChannel,writeArray+index


,&numwrite, 0);

DeleteGraphPlot(mainPanel,MAIN_PANEL_IDC_GRAPH,-1,VAL_IMMEDIATE_DRAW);

PlotY(mainPanel,MAIN_PANEL_IDC_GRAPH,writeArray,samplesPerChanel,VAL_DOUBLE
,VAL_THIN_LINE,VAL_SOLID_DIAMOND,VAL_DASH_DOT,1,VAL_GREEN);

DAQmxReadAnalogF64( taskHandle, nSamples, 0, DAQmx_Val_GroupByChannel,


READ_array, nSamples, &nSamples, NULL);

DeleteGraphPlot(mainPanel,MAIN_PANEL_IDC_GRAPH,-1,VAL_IMMEDIATE_DRAW);

PlotY(mainPanel,MAIN_PANEL_IDC_GRAPH,READ_array,nSamples,VAL_DOUBLE,VAL_
THIN_LINE,VAL_SOLID_DIAMOND,VAL_DASH_DOT,1,VAL_GREEN);

You might also like