广州大彩串口屏论坛_大彩开发者交流论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 86|回复: 3

想问一下 接收后的数据包怎么显示在屏幕上感谢!

[复制链接]

4

主题

11

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2026-4-28 11:53:25 | 显示全部楼层 |阅读模式
HMI软件,id和lw地址都部署了,相关的指令是什么呢,一直没到屏幕上会是什么问题?
回复

使用道具 举报

0

主题

988

帖子

2924

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2924
发表于 2026-4-28 15:27:38 | 显示全部楼层
什么协议 自定义协议还是什么默认DCBUS协议 把问题描述清楚下。
回复

使用道具 举报

4

主题

11

帖子

54

积分

注册会员

Rank: 2

积分
54
 楼主| 发表于 2026-4-28 15:52:35 | 显示全部楼层
自定义协议。环境说明:

软件版本:VisualHMI 最新版
屏型号: M 系列(指令集版本)
配置方式:数值显示控件,ID 为 1,读取地址为 LW0301,数据类型 INT16,小数位 1。
Lua 模式:已开启 uart_free_protocol = 1。
已确认的现象:

Lua 引擎正常运行:在 on_init 中调用 set_screen(2),模拟器能成功自动跳页。说明脚本已加载且能控制系统指令。
API 参数疑云:测试发现 set_uint16 在该固件下表现异常。
执行 set_uint16(1, 301, 1234) 时,屏幕上的 LW0001 变为了 301。
推测参数顺序为 (地址, 数值, 站号),但按照此顺序写 set_uint16(301, 2200, 1),对应的 LW0301 控件没有任何反应(保持 0.0)。
内存空间隔离:
在模拟器运行状态下,手动往 LW0301 框内输入 888,仪表盘指针会动,说明变量绑定成功。
但 Lua 脚本使用 get_uint16(t, 301) 对 t 从 0 到 15 进行全类型扫描,均读不到手动输入的 888。
使用全内存雷达(扫描地址 0-1000,类型 0-15)也搜不到手动输入的 888。
指令直达失败:在 Lua 中尝试 uart_send(0, {0xEE, 0xB1, 0x01, ...}) 直接发送修改控件指令,模拟器 UI 无任何刷新。
刷新函数无效:每次写入后均配合调用了 refresh_screen() 和 redraw(),依然无效。
核心问题: 在 VisualHMI 的 模拟器 环境下,Lua 脚本究竟应该使用哪个 API、哪个站号(Station)、哪个类型(Type)才能读写 LW 变量? 为什么 set_screen 有效而 set_uint16 对特定的 LW 地址(如 301)无效?是否有特定的“变量导出”步骤或者是模拟器本身的内存隔离限制?
回复

使用道具 举报

4

主题

11

帖子

54

积分

注册会员

Rank: 2

积分
54
 楼主| 发表于 2026-4-28 16:03:05 | 显示全部楼层
感谢!已经解决
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|广州大彩串口屏论坛_大彩开发者交流论坛

GMT+8, 2026-5-12 17:00 , Processed in 0.025325 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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