前面的博客记录了在wincc V7.3,使用vbs把常数数组在function
trend上绘制曲线,这篇博客记录如何使用c脚本实现同样的功能。画面上有一个按钮,名字叫做btn,有一个function
trend名字叫做trend,按钮的鼠标点击事件中添加以下c脚本
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char*
lpszPropertyName)
{
#pragma code("kernel32.dll")
#define GetObject GetObject
int i ;
__object *pdl=NULL;
__object *pic=NULL;
__object *objtrend=NULL;
__object * trend=NULL;
__object *btn=NULL;
int X_Values[11]={-1,1,2,3,4,5,6,7,8,9,10};
int Y_Values[11]={1,1,4,9,16,25,36,49,64,81,100};
pdl = __object_create("PDLRuntime");
pic=pdl->GetPicture("");
objtrend=pic->GetObject("trend");
btn=pic->GetObject("btn");
btn->Operation=FALSE;
objtrend->TrendIndex = 0;
objtrend->TrendRemove();
//初始化x轴
objtrend->XAxisAutorange =FALSE;
objtrend->XAxisBeginValue =-10;
objtrend->XAxisEndValue=20;
//初始化y轴
objtrend->YAxisAutorange =FALSE;
objtrend->YAxisBeginValue =-10;
objtrend->YAxisEndValue=200;
objtrend->TrendProvider=0;//无数据源,通过脚本赋值
objtrend->TrendAdd =TRUE;
trend=objtrend->GetTrend("趋势 1");
for(i=0;i<=10;i++)
trend->InsertData(X_Values[i],Y_Values[i]);
btn->Operation=TRUE;
__object_delete(btn);
__object_delete(trend);
__object_delete(objtrend);
__object_delete(pic);
__object_delete(pdl);
}
保存运行,同样可以得到上一篇博客那种曲线。