效果如图
#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include "plotTrip.h"
static int panelHandle;
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "plotTrip.uir", PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
/*
SetCtrlAttribute(panelHandle,PANEL_STRIPCHART,ATTR_SCROLL_MODE,VAL_CONTINUOUS);
SetCtrlAttribute(panelHandle,PANEL_STRIPCHART,ATTR_POINTS_PER_SCREEN,100); //设置每屏数据显示的数目
SetCtrlAttribute (panelHandle, PANEL_STRIPCHART, ATTR_SCROLL_MODE, VAL_BLOCK); //设置Strip Chart显示模式
SetCtrlAttribute (panelHandle, PANEL_STRIPCHART, ATTR_NUM_TRACES, 2);//设置显示的波形数目
SetTraceAttribute (panelHandle, PANEL_STRIPCHART, 1, ATTR_TRACE_COLOR, VAL_RED);//设置波形颜色
SetTraceAttribute (panelHandle, PANEL_STRIPCHART, 2, ATTR_TRACE_COLOR, VAL_GREEN);
SetTraceAttribute (panelHandle, PANEL_STRIPCHART, 1, ATTR_TRACE_VISIBLE, 1);//设置波形是否可见
SetTraceAttribute (panelHandle, PANEL_STRIPCHART, 2, ATTR_TRACE_VISIBLE, 1);
SetTraceAttribute (panelHandle, PANEL_STRIPCHART, 1, ATTR_TRACE_LG_VISIBLE, 1);//设置波形说明是否可见
SetTraceAttribute (panelHandle, PANEL_STRIPCHART, 2, ATTR_TRACE_LG_VISIBLE, 1);
SetTraceAttributeEx (panelHandle, PANEL_STRIPCHART, 1, ATTR_TRACE_LG_TEXT, "Device 1");
SetTraceAttributeEx (panelHandle, PANEL_STRIPCHART, 2, ATTR_TRACE_LG_TEXT, "Device 2");
*/
SetCtrlAttribute (panelHandle, PANEL_STRIPCHART, ATTR_NUM_TRACES, 2);//设置显示的波形数目
SetTraceAttribute (panelHandle, PANEL_STRIPCHART, 1, ATTR_TRACE_COLOR, VAL_RED);//设置波形颜色
SetTraceAttribute (panelHandle, PANEL_STRIPCHART, 2, ATTR_TRACE_COLOR, VAL_GREEN);
SetTraceAttribute (panelHandle, PANEL_STRIPCHART, 1, ATTR_TRACE_LG_VISIBLE, 1);//设置波形说明是否可见
SetTraceAttribute (panelHandle, PANEL_STRIPCHART, 2, ATTR_TRACE_LG_VISIBLE, 1);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}
int CVICALLBACK pannelFunction (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{
switch (event)
{
case EVENT_CLOSE:
QuitUserInterface (0);
break;
}
return 0;
}
int CVICALLBACK timerFunction (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
//柱形图ID
static int plotHandle10=0;
static int plotHandle11=0;
static int plotHandle20=0;
static int plotHandle21=0;
int y=0;
char tt[50];
double aa[2];
switch (event)
{
case EVENT_TIMER_TICK:
//
aa[0]=(double)(rand()%10);
aa[1]=(double)(rand()%10);
PlotStripChart(panelHandle,PANEL_STRIPCHART,aa,2,0,0,VAL_DOUBLE);
sprintf(tt,"chanel1 %.2f",aa[0]);
SetTraceAttributeEx (panelHandle, PANEL_STRIPCHART, 1, ATTR_TRACE_LG_TEXT, tt);
sprintf(tt,"chanel2 %.2f",aa[1]);
SetTraceAttributeEx (panelHandle, PANEL_STRIPCHART, 2, ATTR_TRACE_LG_TEXT, tt);
//graph
y= rand()%100 ;
sprintf(tt,"chanel1 %d",y);
DeleteGraphPlot (panelHandle, PANEL_GRAPH, plotHandle10, VAL_IMMEDIATE_DRAW);
plotHandle10 = PlotRectangle(panelHandle, PANEL_GRAPH, 5,0,10,y, VAL_RED, VAL_RED);
SetPlotAttribute (panel, PANEL_GRAPH, plotHandle10, ATTR_PLOT_LG_TEXT, tt);
//plotText
DeleteGraphPlot (panelHandle, PANEL_GRAPH, plotHandle11, VAL_IMMEDIATE_DRAW);
plotHandle11=PlotText(panelHandle, PANEL_GRAPH, 0, y, tt, VAL_APP_FONT, VAL_RED, VAL_TRANSPARENT);
y= rand()%100 ;
sprintf(tt,"chanel2 %d",y);
DeleteGraphPlot (panelHandle, PANEL_GRAPH, plotHandle20, VAL_IMMEDIATE_DRAW);
plotHandle20 = PlotRectangle(panelHandle, PANEL_GRAPH, 25,0,30,y, VAL_BLUE, VAL_BLUE);
SetPlotAttribute (panel, PANEL_GRAPH, plotHandle20, ATTR_PLOT_LG_TEXT, tt) ;
DeleteGraphPlot (panelHandle, PANEL_GRAPH, plotHandle21, VAL_IMMEDIATE_DRAW);
plotHandle21=PlotText(panelHandle, PANEL_GRAPH, 20, y, tt, VAL_APP_FONT,VAL_RED,VAL_TRANSPARENT );
break;
}
return 0;
}
文字的删除也是通过句柄来删除的
DeleteGraphPlot (panelHandle, PANEL_GRAPH, plotHandle21, VAL_IMMEDIATE_DRAW);
plotHandle21=PlotText(panelHandle, PANEL_GRAPH, 20, y, tt, VAL_APP_FONT,VAL_RED,VAL_TRANSPARENT );