sbq.c
来自「cvi编程举例」· C语言 代码 · 共 218 行
C
218 行
#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include "sbq.h"
static int panelHandle;
int TD1=0,TD2=0,TD3=0,TD4=0;
int X0=0,ii;
double Y1=0,Y2=0,Y3=0,Y4=0;
int TD_11,TD_22,TD_33,TD_44;
double MinY=-10;MaxY=10;
void DispCurve(void);
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "sbq.uir", PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}
int CVICALLBACK ExitP (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}
int CVICALLBACK TD1_CLICK (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_TD_1, &TD1);
TD_11=1;
break;
}
return 0;
}
int CVICALLBACK TD2_CLICK (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_TD_2, &TD2);
TD_22=1;
break;
}
return 0;
}
int CVICALLBACK TD3_CLICK (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_TD_3, &TD3);
TD_33=1;
break;
}
return 0;
}
int CVICALLBACK TD4_CLICK (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_TD_4, &TD4);
TD_44=1;
break;
}
return 0;
}
int CVICALLBACK Timer_Disp (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_TIMER_TICK:
DispCurve();
break;
}
return 0;
}
void DispCurve(void)
{
int kk;
double TD_D1,TD_D2,TD_D3,TD_D4;
if (TD1==1)
{
TD_D1=2*sin(ii*2*3.1415/50);
if (TD_11==1)
{
Y1=TD_D1;
TD_11=0;
}
PlotLine (panelHandle, PANEL_GRAPH, X0, Y1, ii, TD_D1, VAL_RED);
Y1=TD_D1;
}
if (TD2==1)
{
TD_D2=2*sin(ii*2*3.1415/80);
if (TD_22==1)
{
Y2=TD_D2;
TD_22=0;
}
PlotLine (panelHandle, PANEL_GRAPH, X0, Y2, ii, TD_D2, VAL_BLUE);
Y2=TD_D2;
}
if (TD3==1)
{
//TD_D3=2*sin(ii*2*3.1415/80);
kk=ii%40;
if( kk<10)
TD_D3 = kk*(2.5/10);
else if( kk<=30)
TD_D3 = kk*(-2.5/10)+2.0*2.5;
else
TD_D3 = kk*(2.5/10) - 4.0*2.5;
if (TD_33==1)
{
Y3=TD_D3;
TD_33=0;
}
PlotLine (panelHandle, PANEL_GRAPH, X0, Y3, ii, TD_D3, VAL_CYAN);
Y3=TD_D3;
}
X0=ii;
ii++;
if ((ii % 200)==0)
{
SetAxisScalingMode (panelHandle, PANEL_GRAPH, VAL_BOTTOM_XAXIS, VAL_MANUAL, ii, ii+200);
}
}
int CVICALLBACK SetupSD (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int VV;
double Ttimer[5]={1,0.5,0.1,0.05,0.01};
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_NUMERICKNOB, &VV);
SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_INTERVAL, Ttimer[VV-1]);
break;
}
return 0;
}
int CVICALLBACK SetupFZ (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int VV;
double FZ_V[5]={1,2,5,10,20};
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_NUMER_FZ, &VV);
SetAxisScalingMode (panelHandle, PANEL_GRAPH, VAL_LEFT_YAXIS, VAL_MANUAL, -FZ_V[VV-1],FZ_V[VV-1]);
break;
}
return 0;
}
int CVICALLBACK StartORstop (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int SS;
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_TOGGLEBUTTON, &SS);
SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_ENABLED,SS);
SetCtrlAttribute (panelHandle, PANEL_TOGGLEBUTTON, ATTR_ON_COLOR, VAL_RED);
if (SS==1)
{
ii=0;
SetAxisScalingMode (panelHandle, PANEL_GRAPH, VAL_BOTTOM_XAXIS, VAL_MANUAL, ii, ii+200);
DeleteGraphPlot (panelHandle, PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW);
TD_11=1;
TD_22=1;
TD_33=1;
TD_44=1;
X0=0;
}
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?