打开
停产版本---查看--》工程文件窗口--》往上拖到最高--》触摸屏
数据类型
新版本 工程结构窗口---下拉 ---宏文件
宏编辑设置路径失败
宏代码变量窗口
触发
元件-数据传输-定时器
寄存器地址
调用子程序
基础

案例一 刷卡系统
//判断登录
int MacroEntry()
{
char buf[10]="";
char kahao[10]="";
short flag[1]={0};
ReadLocal("LW",8900,5, (void*)kahao, 0);
ReadLocal("RW",100,5, (void*)buf, 0);
short i;
for (i=0;i<15;i++) //在15组用户密码中对比
{
ReadLocal("RW", 100+5*i, 5, (void*)buf, 0);
if (((strcmp(kahao,buf))==0)&&(strlen(kahao)>0))
{
loginuser=5*(i+1);//算出来偏移地址
quanxian=shouquan[i];//把对应用户的权限赋值
WriteLocal("LB", 8999, 1, (void*)flag, 0);
tanchuang=0;
break;
}
else
{
if(strlen(kahao)>0) tanchuang=1;
}
}
return 0;
}
//退出登录
int MacroEntry()
{
char buf[10]="";
WriteLocal("LW", 8900, 5, (void*)buf, 0);
flag=0;
return 0;
}
多屏互锁
//HMI1
int MacroEntry()
{
if (locker & BitMask(0)) //本机被锁
{
int unlockVal = 6;
int reqVal = BitMask(0);
if (!(locker & BitMask(1)))
{
if (!WriteData(reqHmi1, 0, 0, 1, &reqVal)) //发送请求
{
WriteData(locker, 1, 0, 1, &unlockVal); //对方掉线,强制解锁
}
}
if (!(locker & BitMask(2)))
{
if (!WriteData(reqHmi2, 0, 0, 1, &reqVal))
{
WriteData(locker, 1, 0, 1, &unlockVal); //对方掉线,强制解锁
}
}
}
return 0;
}
//HMI2
#d