威纶通官方论坛

有关触摸屏和条码枪通讯问题(包括宏指令),求高手指导

[复制链接]
发表于 2012-12-3 13:43:30 | 显示全部楼层 |阅读模式
用条码枪扫描条码8962012324,跳出对应的触摸屏window11界面并在界面中显示出来扫描的位数10和条码数8962012324,之后再把读书的条码数8962012324储存在触摸屏的数据存储器中,随后通过宏指令定值比较选择从触摸屏中传数据到PLC数据储存器中。
指令思路:
    macro_command main()
int  a  //定义变量a
GetData(a, "Barcode (USB/COM)", BARCODE_BCD, 1, 1)// 从条码枪中读数据
SetData(a, "Local HMI", LW_BCD, 1, 1) //把从条码枪中读出的数据传输到屏中
short  f[2] //定义数组
if  a == 8962012324  then   
f[1]=1//数组
f[2]=2
SetData(f[0], "Mitsubishi FX0s/FX0n/FX1s/FX1n/FX2", D, 128, 1)//传数组到PLC中
SetData(f[1], "Mitsubishi FX0s/FX0n/FX1s/FX1n/FX2", D, 129, 1)
else  if  a ==6962014253  then
  f[1]=4
  f[2]=5
SetData(f[0], "Mitsubishi FX0s/FX0n/FX1s/FX1n/FX2", D, 128, 1)
SetData(f[1], "Mitsubishi FX0s/FX0n/FX1s/FX1n/FX2", D, 129, 1)
End if
end macro_command
出现的问题为只读出89,我赋值a==89后也不传输后面数组面到屏中,但是改用屏上面输入数值比较小于10的都能传输后面的数组到PLC中,是不是数据的型号不对呢?
发表于 2012-12-5 16:44:24 | 显示全部楼层
GetData(a, "Barcode (USB/COM)", BARCODE_BCD, 1, 1)// 从条码枪中读数据
你只读了一个数据,因此显示89,把其定义为数组char a[10] 或short a[5],具体得看你扫描枪说明书定义的格式是什么。
if  a == 8962012324  then   
f[1]=1//数组
f[2]=2
SetData(f[0], "Mitsubishi FX0s/FX0n/FX1s/FX1n/FX2", D, 128, 1)//传数组到PLC中
SetData(f[1], "Mitsubishi FX0s/FX0n/FX1s/FX1n/FX2", D, 129, 1)
改成
if  a == 89  then   
f[0]=1//数组
f[1]=2
SetData(f[0], "Mitsubishi FX0s/FX0n/FX1s/FX1n/FX2", D, 128, 1)//传数组到PLC中
SetData(f[1], "Mitsubishi FX0s/FX0n/FX1s/FX1n/FX2", D, 129, 1)
 楼主| 发表于 2012-12-6 16:18:26 | 显示全部楼层
解决了谢谢您!
您需要登录后才可以发帖 登录 | 注册

本版积分规则

回复帖子

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

GMT+8, 2024-4-30 01:03

Powered by Discuz! X3.4

© 2001-2023 Comsenz Inc.

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