|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Аналоговый вывод
#include <utility.h> #include <NIDAQmx.h> #include <ansi_c.h> #include <cvirte.h> #include <userint.h> #include "ContGen.h"
static int panelHandle; char chan[256]; TaskHandle taskHandle=0; int waveformType; double min,max,frequency,rate,amp; uInt32 sampsPerCycle; float64 cyclesPerBuffer; uInt32 bufferSize; bool32 done=0; int32 written; int i,rr; double data[20000];
int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0) return -1; /* out of memory */ if ((panelHandle = LoadPanel (0, "ContGen.uir", PANEL)) < 0) return -1; DisplayPanel (panelHandle); RunUserInterface (); DiscardPanel (panelHandle); return 0; }
int CVICALLBACK StartCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: GetCtrlVal(panel,PANEL_CHANNEL,chan); GetCtrlVal(panel,PANEL_MINVAL,&min); GetCtrlVal(panel,PANEL_MAXVAL,&max); GetCtrlVal(panel,PANEL_AMP,&); SetCtrlAttribute(panel,PANEL_GRAPH,ATTR_XAXIS_GAIN,1.0/rate); for (i=0;i<100;i++) { data[i]=0;} DAQmxCreateTask("",&taskHandle); DAQmxCreateAOVoltageChan(taskHandle,chan,"",min,max,DAQmx_Val_Volts,NULL); DAQmxStartTask(taskHandle);
for (i=0;i<100;i++){ data[i]=i/20.0; DAQmxWriteAnalogScalarF64 (taskHandle, 1, 1.0, data[i], 0); DeleteGraphPlot(panel,PANEL_GRAPH,-1,VAL_DELAYED_DRAW); PlotY(panel,PANEL_GRAPH,data,100,VAL_DOUBLE,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_RED); Delay(0.05); } SetCtrlAttribute(panel,PANEL_START,ATTR_DIMMED,1); ProcessDrawEvents(); DAQmxStopTask(taskHandle); DAQmxClearTask(taskHandle); break; } return 0; } int CVICALLBACK StopCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: QuitUserInterface (0); break; } return 0; }
Пример панели интерфейса пользователя приведен на рис. 66.
Рис. 66 Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |