威纶通官方论坛

inport的一个问题

[复制链接]
发表于 2012-12-4 08:46:30 | 显示全部楼层 |阅读模式
macro_command main()

bool on=true,off=false

char  data[2]
short return_value

INPORT(data[0], "Free Protocol", 2, return_value)

if return_value>0  then

if  data[0]==0xD0  then                                         这条语句有错误么?

select case data[1]                             
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[0]=D0    data[1]=80

但是下面的判断好像没有运行    是我上面标注的那条语句出错误了么?

不能直接用data[0]跟0xD0进行比较么?
 楼主| 发表于 2012-12-5 11:18:20 | 显示全部楼层
我发现   if  data[0]==0xD0    这样直接判断不对

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

if  data[0]==a


这样就可以正确运行了


不知道这是什么原因
发表于 2012-12-6 14:50:00 | 显示全部楼层
0xD0为208,超出了CHAR型的范围;
改为UNSIGNED CHar即可。

注意按内容发帖。
发表于 2013-2-28 12:57:06 | 显示全部楼层
回复 1# 百脑
你好,请问用inport函数如何判断数据的开始和结束啊?我用inport接收到的数据总是错误的,发送相同的数据接收到的总是变化的值.
发表于 2024-3-31 18:37:38 | 显示全部楼层
tuoyukun 发表于 2013-2-28 12:57
回复 1# 百脑
你好,请问用inport函数如何判断数据的开始和结束啊?我用inport接收到的数据总是错误的,发送 ...

我也遇到同样的问题,用串口调试助手发送同样的数据,接收的数据总是在变化。不知道是哪里出了问题。
发表于 2024-4-1 12:28:29 | 显示全部楼层
欢迎大家来威纶通论坛交流疑问。
论坛有分“HMI综合版”“Macro宏指令版”“变频器综合版”等
请大家“对号发帖”,谢谢配合。
您需要登录后才可以发帖 登录 | 注册

本版积分规则

回复帖子

Archiver|小黑屋|威纶通官网 ( 粤ICP备06054553号 )

GMT+8, 2024-11-21 21:25

Powered by Discuz! X3.4

© 2001-2023 Comsenz Inc.

快速回复 返回顶部 返回列表