发布于 2013-01-25 11:19:41
2楼
谢谢斑竹的回复。这个问题我昨天晚上加班已经解决了,不过也是瞎猫碰着死老鼠而已,百思不得其解。具体的解决过程如下:
因为我这里面有好几个代码的提取,我就把所有的代码显示出来,我发现,在执行前三次的时候,所有的提取出来的代码都没有问题。超过三次,排在第1行的代码提取是有问题的,其他的没有问题。然后我就在想是不是前几次提取的代码没有释放掉,我就在执行代码提取的命令之前,把排在第一行的代码的提取赋值为空,具体修改后的程序如下:
#include "apdefap.h"
int gscAction( void )
{
#pragma option(mbcs)
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
// 1y??ì?êa×?·?
char *p2=NULL;
char D[50];
int i;
int j;
char C_00[15]=" "; // 与上一个程序不一样的地方
char C_01[15]="055" , C_02[15]="075" , C_03[15]="100" ;
char B_00[15];
char B_01[15]="M",B_02[15]="K";
char G_00[15];
char G_01[15]="1" ,G_02[15]="3" ,G_03[15]="6" ,G_04[15]="7" ,G_05[15]="8" ,G_06[15]="C" ,G_07[15]="D" ,G_08[15]="E" ,G_09[15]="G" ,G_10[15]="J" ,G_11[15]="L" ;
char W_00[15];
char W_01[15]="EBA",W_02[15]="EBB",W_03[15]="ECA",W_04[15]="EEA",W_05[15]="EED",W_06[15]="EEK",W_07[15]="EFA",W_08[15]="EFC",W_09[15]="EFE",W_10[15]="EFT",W_11[15]="EGG";
char W_12[15]="EHD",W_13[15]="JAA",W_14[15]="JAB",W_15[15]="JAD",W_16[15]="JAF",W_17[15]="JAG",W_18[15]="JAH",W_19[15]="JAL",W_20[15]="MAA",W_21[15]="MIX",W_22[15]="NNN";
char W_23[15]="EAJ",W_24[15]="CBD",W_25[15]="EAA",W_26[15]="EAF",W_27[15]="EAG",W_28[15]="EAH",W_29[15]="EEF",W_30[15]="EEH",W_31[15]="EFB",W_32[15]="EFJ",W_33[15]="EFM";
char W_34[15]="EFS",W_35[15]="EGH",W_36[15]="EGJ",W_37[15]="EGK",W_38[15]="EHK",W_39[15]="JAK",W_40[15]="JCA",W_41[15]="JCB",W_42[15]="LAB",W_43[15]="LAC",W_44[15]="CAA";
// ************** guo lv te shu zi fu
if ( GetTagBit("OP10_Query_Temp") ) //Return-Type: BOOL
{
p2=GetTagChar("OP10_MMC_Current_00"); //Return-Type: char*
for (i=0;i<45;p2++)
{
if ((*p2==0))
{
D[i]=*p2;
i=45;
}
else
{
if ( (*p2 >=48)&&(*p2<=57) (*p2 >=65)&&(*p2<=90) (*p2 >=97)&&(*p2<=122))
{
D[i]=*p2;
i++;
j=i;
}
}
}
SetTagChar("OP10_MMC_Current_01",D); //Return-Type: BOOL
// 本次程序添加的地方
SetTagChar("OP10_C_Code",C_00); //Return-Type: BOOL
NULL;
NULL;
NULL;
NULL;
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// 代码提取
MMC_CodeDraw("OP10_C_Code","OP10_MMC_Current_01","MMC_C_StartBit","MMC_C_BitLeth"); //Return-Type: void // C Code Displacement
MMC_CodeDraw("OP10_H_Code","OP10_MMC_Current_01","MMC_H_StartBit","MMC_H_BitLeth"); //Return-Type: void // H Code Flush Valve
MMC_CodeDraw("OP10_L_Code","OP10_MMC_Current_01","MMC_L_StartBit","MMC_L_BitLeth"); //Return-Type: void // L Code MainShaft
MMC_CodeDraw("OP10_W_Code","OP10_MMC_Current_01","MMC_W_StartBit","MMC_W_BitLeth"); //Return-Type: void // W Code Speed Sensor PPU
MMC_CodeDraw("OP10_B_Code","OP10_MMC_Current_01","MMC_R_StartBit","MMC_R_BitLeth"); //Return-Type: void // B Code Motor Moudle
MMC_CodeDraw("OP10_G_Code","OP10_MMC_Current_01","MMC_G_StartBit","MMC_G_BitLeth"); // G Code End_Cap
//马达类型提取
strcpy(B_00,GetTagChar("OP10_B_Code"));
if (strcmp(B_00,B_01)==0)
{
SetTagWord("OP10_Motor_Module",0); //Return-Type: BOOL
}
else if (strcmp(B_00,B_02)==0)
{
SetTagWord("OP10_Motor_Module",1); //Return-Type: K Motor
}
else
{
SetTagWord("OP10_Motor_Module",2); // not match
}
// 排量提取
strcpy(C_00,GetTagChar("OP10_C_Code"));
if (strcmp(C_00,C_01)==0)
{
SetTagWord("OP10_Motor_Displacement",55); //Return-Type: BOOL
SetTagWord("OP11_Motor_Displacement",55); //Return-Type: BOOL
}
else if (strcmp(C_00,C_02)==0)
{
SetTagWord("OP10_Motor_Displacement",75); //Return-Type: BOOL
SetTagWord("OP11_Motor_Displacement",75); //Return-Type: BOOL
}
else if (strcmp(C_00,C_03)==0)
{
SetTagWord("OP10_Motor_Displacement",100); //Return-Type: BOOL
SetTagWord("OP11_Motor_Displacement",100); //Return-Type: BOOL
}
else
{
SetTagWord("OP10_Motor_Displacement",200); //Return-Type:not mtch
SetTagWord("OP11_Motor_Displacement",200); //Return-Type:not mtch
}
// ?D???÷?á
// Query IS ok
SetTagBit("OP10_Query_OK",1); //Return-Type: BOOL
SetTagBit("OP10_Query_Temp",0);
}
return 0;
}
所以百思不得其解。望高手帮忙解答。
every day is new day !