Batman1983 兄弟发表的帖子:
http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=5&a_id=271266&s_id=0&num=6#anch
文章程序如下:
#include "apdefap.h"
long_main()
{
#define Tag1 "小车上行"
int i=100;//小车初始X坐标
if(GetTagBit(Tag1))
{while(i<200)
{
i=i+10;
return i;}
}
}
我经过试验的程序如下:
int x1;
if(GetTagBit("tag1"))
{
x1=GetTagWord("tag2");
x1=x1+2;
SetTagWord("tag2",x1);
if(x1>=300){x1=0;SetTagWord("tag2",x1);}
return x1;
}
解释如下:
我在项目中定义了两个变量:tag1 Binary Tag,tag2 Unsigned 16-bit value
tag1 用来做条件判断
tag2 用来存储中间数值
Batman1983 兄弟的问题是物体只能移动一次,这说明程序是执行了,但不是程序只运行一次,所以楼下的兄弟解释看触发器的设置。
我做了试验以后分析不是触发器的原因:
程序每次都执行了,只不过“int i”变量是内部变量,每次程序进来都重新赋初值,然后加一次,物体移动一次!因为“int i”是内部变量不能存储上次的值,所以必须把当前的“int i”值放到某个变量中去,所以:SetTagWord("tag2",x1);这个语句必须的。而且在判断是否超值的时候这个语句也要重新写一遍,对变量的重新赋值=0。
结论:在C中建立的变量是内部变量,只是存储当前执行程序时的值,程序执行完毕释放变量。