inport的一个问题
macro_command main()bool on=true,off=false
chardata
short return_value
INPORT(data, "Free Protocol", 2, return_value)
if return_value>0then
ifdata==0xD0then 这条语句有错误么?
select case data
case 0x80
SetData(on, "Local HMI", LB, 80, 1)
break
case 0x40
SetData(on, "Local HMI", LB, 81, 1)
break
end select
end if
end if
end macro_command
我设置了2个数值显示元件 将inport到的数据显示在上面 结果表明 我的确接收到了下位机发来的信息
例如我发送的是16进制的D0 80 dota=D0 data=80
但是下面的判断好像没有运行 是我上面标注的那条语句出错误了么?
不能直接用data跟0xD0进行比较么? 我发现 ifdata==0xD0 这样直接判断不对
而先把0xD0赋值给一个变量 chara=0xD0 然后进行判断
ifdata==a
这样就可以正确运行了
不知道这是什么原因 0xD0为208,超出了CHAR型的范围;
改为UNSIGNED CHar即可。
注意按内容发帖。 回复 1# 百脑
你好,请问用inport函数如何判断数据的开始和结束啊?我用inport接收到的数据总是错误的,发送相同的数据接收到的总是变化的值. tuoyukun 发表于 2013-2-28 12:57
回复 1# 百脑
你好,请问用inport函数如何判断数据的开始和结束啊?我用inport接收到的数据总是错误的,发送 ...
我也遇到同样的问题,用串口调试助手发送同样的数据,接收的数据总是在变化。不知道是哪里出了问题。 欢迎大家来威纶通论坛交流疑问。
论坛有分“HMI综合版”“Macro宏指令版”“变频器综合版”等
请大家“对号发帖”,谢谢配合。
页:
[1]