pcsms_mGDDHX7J 发表于 2024-12-25 10:16:48

字符串数值比较

本帖最后由 pcsms_mGDDHX7J 于 2024-12-25 10:18 编辑

这个程序在比较时为啥总显示相同,明明写入LW界面显示不一样,通过串口通讯写入界面显示,之后再写入前 ,比对一下是否重复,如果重复,就不写入。 关键读出来后比对,明明不一样,却显示相同

macro_command main()
//初始值
char c={0}
short ss =0
short cc=0,bb =0
//读取的数组
char c0={0}
char c1={0}
char c2={0}
char c3={0}
char c4={0}
char c5={0}
char c10={0}
bool ResultCp0 =false,ResultCp1=false,ResultCp2=false,ResultCp3=false,ResultCp4=false
short n =0
boolResult =true
//读取数据
FILL(c, 0, 28)
PURGE(2)
INPORT(c, "Free Protocol", 27, n)

//判定数据标头
LOBYTE(c, cc)
HIBYTE(c, bb)
//
if n >0 and cc ==0xAAand bb ==0xFF then
SetData(c, "Local HMI", LW, 260, 1)
SetData(c, "Local HMI", LW, 261, 1)
SetData(c, "Local HMI", LW, 262, 1)
SetData(c, "Local HMI", LW, 263, 1)
SetData(c, "Local HMI", LW, 264, 1)
SetData(c, "Local HMI", LW, 265, 1)
SetData(c, "Local HMI", LW, 266, 1)
SetData(c, "Local HMI", LW, 267, 1)
SetData(c, "Local HMI", LW, 268, 1)
SetData(c, "Local HMI", LW, 269, 1)
SetData(c, "Local HMI", LW, 270, 1)
SetData(c, "Local HMI", LW, 271, 1)
SetData(c, "Local HMI", LW, 272, 1)
SetData(c, "Local HMI", LW, 273, 1)
SetData(c, "Local HMI", LW, 274, 1)
SetData(c, "Local HMI", LW, 275, 1)


//读取前5个数据
//FILL(c0, 0, 32)
FILL(c1, 0, 32)
FILL(c2, 0, 32)
FILL(c3, 0, 32)
FILL(c4, 0, 32)
FILL(c10, 0, 32)

GetData(c10, "Local HMI", LW, 260, 16)

//测试使用
//SetData(c0, "Local HMI", LW, 500, 8)
//SetData(c1, "Local HMI", LW, 600, 8)
//SetData(c2, "Local HMI", LW, 700, 8)
//SetData(c3, "Local HMI", LW, 800, 8)
//SetData(c4, "Local HMI", LW, 900, 8)
SetData(c10, "Local HMI", LW, 500, 16)
//判定
GetData(c0, "Local HMI", LW, 107, 16)
ResultCp0=StringCompare(c10, c0)

SetData(c0, "Local HMI", LW, 600, 16)


GetData(c1, "Local HMI", LW, 144, 16)
ResultCp1=StringCompare(c10, c1)

GetData(c2, "Local HMI", LW, 160, 16)
ResultCp2=StringCompare(c10, c2)

GetData(c3, "Local HMI", LW, 176, 16)
ResultCp3=StringCompare(c10, c3)

GetData(c4, "Local HMI", LW, 192, 16)
ResultCp4=StringCompare(c10, c4)


//比较结果显示
SetData(ResultCp0, "Local HMI", LB, 6, 1)
SetData(ResultCp1, "Local HMI", LB, 7, 1)
SetData(ResultCp2, "Local HMI", LB, 8, 1)
SetData(ResultCp3, "Local HMI", LB, 9, 1)
SetData(ResultCp4, "Local HMI", LB, 11, 1)



关键读出来后比对,明明不一样,却显示相同

//判定是否更新andnot ResultCp3    andnot ResultCp4
ifcc ==0xAAand bb ==0xFF   and not ResultCp0andnot ResultCp1 and not ResultCp2 then
//if cc ==0xAAthen
ss =2
SetData(ss, "Local HMI", LW, 5, 1)


else

ss =8
SetData(ss, "Local HMI", LW, 5, 1)       

end if



//执行写指令


end macro_command

pcsms_BsKJa84Z 发表于 2024-12-25 14:46:35

具体是不是一样,你需要转化16进制数字每个寄存器比较就知道了
页: [1]
查看完整版本: 字符串数值比较