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

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

关于VisualHMI开发中,初始化函数进行485写操作的问题

[复制链接]

1

主题

8

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2024-9-16 17:20:54 | 显示全部楼层 |阅读模式
本帖最后由 pda 于 2024-9-18 09:06 编辑

在on_init()函数中,进行超过100次的485写操作时(即set_uint32(VT_4x)函数),会导致运行白屏,且将该程序烧录后会导致屏幕黑屏且无法再更新程序(可以正常更新固件),想问下具体是什么原因,屏幕型号是DC48270M043

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
There's nothing better than yourself
回复

使用道具 举报

25

主题

118

帖子

747

积分

高级会员

Rank: 4

积分
747
QQ
发表于 2024-9-16 20:32:18 | 显示全部楼层
本帖最后由 小逸老师 于 2024-9-16 20:34 编辑

set_uint32是VisualHMI软件的函数哦,在VisualTFT的固件里不好使用。还有就是不建议在on_init函数中有那么多的复杂操作
欢迎加入大彩爱好者QQ群:14769485
回复

使用道具 举报

1

主题

8

帖子

66

积分

注册会员

Rank: 2

积分
66
 楼主| 发表于 2024-9-18 08:38:32 | 显示全部楼层
小逸老师 发表于 2024-9-16 20:32
set_uint32是VisualHMI软件的函数哦,在VisualTFT的固件里不好使用。还有就是不建议在on_init函数中有那么 ...

那现在屏幕黑屏有办法修复吗,就是上面提到的在init函数中进行了一百多次485写操作后,烧写进屏幕导致屏幕黑屏且无法更新程序
There's nothing better than yourself
回复

使用道具 举报

25

主题

118

帖子

747

积分

高级会员

Rank: 4

积分
747
QQ
发表于 2024-9-18 18:14:34 | 显示全部楼层
改了协议后就不能再用串口更新固件了,需要使用TF卡或者U盘下载固件后更
欢迎加入大彩爱好者QQ群:14769485
回复

使用道具 举报

1

主题

8

帖子

66

积分

注册会员

Rank: 2

积分
66
 楼主| 发表于 2024-9-19 08:50:59 | 显示全部楼层
小逸老师 发表于 2024-9-18 18:14
改了协议后就不能再用串口更新固件了,需要使用TF卡或者U盘下载固件后更

当前的情况是:1、用的是HMI进行开发(之前标题写错了)2:当前程序在on_init()函数中进行了超过100次的set_uint32(VT_4x)操作,该程序在虚拟屏运行时会白屏且无通讯命令发出(表现就像上面的图片一样)3:原本以为是虚拟屏无法显示的问题,而后尝试将该程序通过u盘下载到实体屏幕(下载成功后拔出sd卡显示黑屏且无响应)4:后续想通过别的程序刷掉当前的程序,但屏幕能正常更新固件,却不能再更新程序了(就是不会再出现更新程序的那个蓝屏界面,但会出现更新固件的那个蓝屏界面,在更新完固件后黑屏)。
我想了解的就是这块无法更新新程序的屏是否还有办法解决
还有就是在on_init()函数中进行set_uint32(VT_4x)操作是否有次数限制
There's nothing better than yourself
回复

使用道具 举报

25

主题

118

帖子

747

积分

高级会员

Rank: 4

积分
747
QQ
发表于 2024-9-19 16:29:17 | 显示全部楼层
set_int32(vtype, addr, value)
这个没有次数限制,主板放电和重置按钮试试,刷回官方预制DEMO试试,如过还不行就得@dctechnology看看
欢迎加入大彩爱好者QQ群:14769485
回复

使用道具 举报

1

主题

8

帖子

66

积分

注册会员

Rank: 2

积分
66
 楼主| 发表于 2024-9-19 16:42:40 | 显示全部楼层
主板放电和按钮重置具体该怎么操作,背板拆开没找到按钮

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
There's nothing better than yourself
回复

使用道具 举报

1

主题

8

帖子

66

积分

注册会员

Rank: 2

积分
66
 楼主| 发表于 2024-9-19 16:46:07 | 显示全部楼层
小逸老师 发表于 2024-9-19 16:29
set_int32(vtype, addr, value)
这个没有次数限制,主板放电和重置按钮试试,刷回官方预制DEMO试试,如过还 ...

那为何在on_init()中使用set_uint32()这个函数次数少于一定次数就能正常运行,而超出一定次数会导致虚拟屏白屏且让实体屏幕黑屏无法更新程序,之前定位问题发现是这个原因,有点不明所以
There's nothing better than yourself
回复

使用道具 举报

25

主题

118

帖子

747

积分

高级会员

Rank: 4

积分
747
QQ
发表于 2024-9-19 16:56:32 | 显示全部楼层
pda 发表于 2024-9-19 16:46
那为何在on_init()中使用set_uint32()这个函数次数少于一定次数就能正常运行,而超出一定次数会导致虚拟 ...

on_init是屏幕上电时立即执行,可能系统尚未就绪就进行瞬间大量对屏幕内部进行读写导致的故障。
毕竟LUA不是单片机原生,所以不建议进行对屏幕内部瞬间N多的读写。
欢迎加入大彩爱好者QQ群:14769485
回复

使用道具 举报

25

主题

118

帖子

747

积分

高级会员

Rank: 4

积分
747
QQ
发表于 2024-9-19 17:04:03 | 显示全部楼层
本帖最后由 小逸老师 于 2024-9-19 17:13 编辑

我觉得你的代码需要优化一下。
1、不要在上电立即执行写那么多读写屏幕自身数据的,建议启用一个定时,上电过一会再进行操作。
2、建议slave分别循环,先select_slave(1)后循环1的读写,再select_slave(2)后循环2的读写.3、stat读出的地址和数据都一样的,建议只读一次就行



还有个很重要的问题,你+10000这里要注意,你的add那里要注意,这里是16进制,请注意你的地址是否超出了屏幕的限制。
欢迎加入大彩爱好者QQ群:14769485
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 21:57 , Processed in 0.059038 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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