本帖最后由 tql 于 2016-8-25 16:31 编辑
才学宏指令,论坛的条码机读取示例的宏指令,很多都看不懂,不知解释的对不对,一些没有解释的是看不懂的,请老师解释一下,谢谢
macro_command main()
short index,temp,string[8] ,name[8],var=0,i //定义短整型
bool OFF=false,flag=false //=0
GetData(index, "Local HMI", LW, 9200, 1) //地址索引寄存器
//GetData(string[0], "Barcode (COM port)", BARCODE, 1, 8)
GetData(string[0], "Local HMI", LW, 0, 8) //读取LW0-LW7共8个字就是16位的2微码到 string[0]-string[7]中
for i=0 to 19 step 1 //循环语句 重复检测20组,只保存20组的,超过20组删除,
GetData(name[0], "Local HMI", RW, var, 8)
if name[0]==string[0] and name[1]==string[1] and name[2]==string[2] and name[3]==string[3] and name[4]==string[4] and name[5]==string[5] and name[6]==string[6] and name[7]==string[7] then
//输入的2微码的8个字和以前的比较
flag=true //=1
SetData(flag, "Local HMI", LB, 20, 1) //相同的2微码时 LB20=ON弹出报警
else
var=var+8 //每次加8在比较每个2微码的8个字 如RW0 RW8 RW16 RW152=20次
end if
next i
//组别选择
if flag==false then //flag==false=0
SetData(string[0], "Local HMI", RW, 0+index, 8) //传送2微码到RW0里
index=index+8 //每次加8=每组8个字
SetData(index, "Local HMI", LW, 9200, 1)
temp=index/8
temp=temp+1
SetData(temp, "Local HMI", RW, 10000, 1) //显示第几组 RW10000=1-20 20个组
if index>152 then
index=152
temp=20
SetData(index, "Local HMI", LW, 9200, 1)
SetData(temp, "Local HMI", RW, 10000, 1)
end if
SetData(string[0], "Local HMI", LW, 100, 2) //二维码分类显示
SetData(string[3], "Local HMI", LW, 103, 2)
SetData(string[5], "Local HMI", LW, 105, 3)
end if
SetData(OFF, "Local HMI", LB, 0, 1)
end macro_command |