如何解决WinCC画面切换错误(变量前缀和画面没有一一对应起来)?
在--里面连接的是N_Num(WORD型),在---里面编写了如下脚本,就是想在N_Num改变时画面也跟着改变,程序编译没有错误,也没有警告,可是在调试的时候出问题。画面切换错乱了。麻烦大家诊断下谢谢。
HWND hwnd=NULL;
WORD c;
char a[255];
char b[255];
char * p;
char *p1;
char *sti[41]={"PAU301.","PAU302.","PAU303.","PAU304.","PAU305.","PAU1201.","AHUB101.","AHUB102.","AHUB103.","AHU101.","AHU102.","AHU301.",",AHU302.","AHU303.","AHU304.","AHU305.","AHU306.","AHU307.","AHU308.","AHU309.","AHU310.","AHU311.","AHU312.","AHU313.","AHU314.","AHU315.","AHU316.","AHU317.","AHU318.","AHU319.","AHU320.","AHU321.","AHU322.","AHU323.","AHU401.","AHU402.","AHU601.","AHU1201.","AHU1202.","AHU1203.","AHU1204."};//初始化数组,变量前缀。
char *stl[41]={"PAU301","PAU301","PAU301","PAU301","PAU305","PAU1201","AHUB101","AHUB101","AHUB101","AHU101","AHUB101","AHU301","AHU301","AHU301","AHU304","AHU301","AHU301","AHU301","AHU301","AHU301","AHU301","AHU301","AHU301","AHU301","AHU301","AHU301","AHU301","AHU301","AHU301","AHU301","AHU301","AHU301","AHU322","AHU322","AHU401","AHU401","AHUB101","AHU1201","AHU1201","AHU1201","AHU1204"}; //初始化数组,画面名称。
hwnd=FindWindow(NULL,"WinCC-运行系统 - ");
p=GetTagChar("N_Char_1"); //Return-Type: char*
p1=GetTagChar("N_Char_2"); //Return-Type: char*
c=GetTagWord("N_Num");
//Letter_strupr(p); //Return-Type: char*
//(c>=0 && c<=40)
//{
SetTagChar("N_Char_1",sti[c]);
SetTagChar("N_Char_2",stl[c]);
//if (strcmp(p,p1)==0)
// {
sprintf(a,"%s",p);
sprintf(b,"004_NP_%s.pdl",p1);
SetVisible("002_NP_window_Middle.pdl","003_NPwindow_up1",0); //Return-Type: BOOL 把画面窗口1隐藏
SetPropChar("002_NP_window_Middle.pdl","003_NPwindow_up1","TagPrefix",a); //Return-Type: BOOL 把结构变量前缀给画面中画面窗口1中的变量前缀属性中
SetPictureName("002_NP_window_Middle.pdl.pdl","003_NPwindow_up1",b); //Return-Type: BOOL 把要打开的画面给画面窗口1
SetVisible("002_NP_window_Middle.pdl","003_NPwindow_up1",1); //Return-Type: BOOL 把画面窗口1显示
//SetTagWord("PIC0.COUNT",i);
//goto Exit0;
//}
//}
//Exit0:
// {}
}
*简单方法:
根本就用不着这么费力呀!你定义一个画面窗口,画面窗口的画面名称属性动态连接,弹出窗口选择变量N_num,然后在下面点击添加按钮,选择=1显示画面1,=2显示画面2,。。。。。。。。。default 显示画面n,文本列表改变变量N_num的值。