百脑 发表于 2012-12-4 08:46:30

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进行比较么?

百脑 发表于 2012-12-5 11:18:20

我发现   ifdata==0xD0    这样直接判断不对

而先把0xD0赋值给一个变量   chara=0xD0   然后进行判断

ifdata==a


这样就可以正确运行了


不知道这是什么原因

admin 发表于 2012-12-6 14:50:00

0xD0为208,超出了CHAR型的范围;
改为UNSIGNED CHar即可。

注意按内容发帖。

tuoyukun 发表于 2013-2-28 12:57:06

回复 1# 百脑
你好,请问用inport函数如何判断数据的开始和结束啊?我用inport接收到的数据总是错误的,发送相同的数据接收到的总是变化的值.

pcsms_8UUZQ6Kl 发表于 2024-3-31 18:37:38

tuoyukun 发表于 2013-2-28 12:57
回复 1# 百脑
你好,请问用inport函数如何判断数据的开始和结束啊?我用inport接收到的数据总是错误的,发送 ...

我也遇到同样的问题,用串口调试助手发送同样的数据,接收的数据总是在变化。不知道是哪里出了问题。

weinview 发表于 2024-4-1 12:28:29

欢迎大家来威纶通论坛交流疑问。
论坛有分“HMI综合版”“Macro宏指令版”“变频器综合版”等
请大家“对号发帖”,谢谢配合。
页: [1]
查看完整版本: inport的一个问题