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

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

MCU发指令让屏幕按钮动作能触发屏内LUA的on_control_notify回调吗

[复制链接]

1

主题

4

帖子

37

积分

新手上路

Rank: 1

积分
37
发表于 2022-5-28 15:10:47 | 显示全部楼层 |阅读模式
使用86屏,用LUA已经写好程序,触摸这个屏上的按钮可以正常理想的工作,但因为还有一个上位机是用指令来控制的,因而想通过单片机串口发指令控制屏上按钮的动作(模拟手在屏幕上的操作),以达到用手操作屏幕的目的,但好像这样不能触发on_control_notify回调函数,有不有其它的变通办法能实现这个想法?如果要再在单片机这边再写程序,那就太累了太慢了。那就相对于屏幕那边的LUA白写了,没用了。(说明开始考虑用LUAl来写就错了?)特请教,谢谢。
回复

使用道具 举报

10

主题

45

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
发表于 2022-5-29 11:22:22 | 显示全部楼层
LUA事件直接调用按钮触发事件函数就可以了,
on_control_notify(0,0,1)
回复

使用道具 举报

1

主题

4

帖子

37

积分

新手上路

Rank: 1

积分
37
 楼主| 发表于 2022-5-29 12:07:57 | 显示全部楼层
xjb1783 发表于 2022-5-29 11:22
LUA事件直接调用按钮触发事件函数就可以了,
on_control_notify(0,0,1)

谢谢关注和回复。LUA事件是直接调用on_control_notify函数,我的意思是用单片机发指令让屏上的按钮按下或者断开模拟手在屏上的触摸从而触发lua回调函数,仔细看了大彩的文档,说是不行的,不知有不有变通的办法?
回复

使用道具 举报

2

主题

1253

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12526
发表于 2022-5-30 08:57:46 | 显示全部楼层
fsy 发表于 2022-5-29 12:07
谢谢关注和回复。LUA事件是直接调用on_control_notify函数,我的意思是用单片机发指令让屏上的按钮按下或 ...

回调函数里面的按钮按下或者弹起后lua脚本要实现的操作,全部用指令来实现
Easy doesn't enter into Grown-up life
成年人的生活里面没有“容易”二字
回复

使用道具 举报

10

主题

45

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
发表于 2022-5-30 15:45:18 | 显示全部楼层
按钮按下或弹起指令后跟一句事件函数不就是你所要了
set_value(0,0,1)
on_control_notify(0,0,1)
set_value(0,0,0)
on_control_notify(0,0,0)
回复

使用道具 举报

1

主题

4

帖子

37

积分

新手上路

Rank: 1

积分
37
 楼主| 发表于 2022-6-1 16:14:04 | 显示全部楼层
xjb1783 发表于 2022-5-30 15:45
按钮按下或弹起指令后跟一句事件函数不就是你所要了
set_value(0,0,1)
on_control_notify(0,0,1)

谢谢朋友的回复,知道了。第一次用lua,很多地方不清楚。好像用lua来写,要根据自己对屏的功能要求来定,有利有弊。
回复

使用道具 举报

1

主题

6

帖子

41

积分

新手上路

Rank: 1

积分
41
发表于 2023-7-14 11:00:02 | 显示全部楼层
本帖最后由 woutnme 于 2023-7-14 11:01 编辑

Hi, you can try, you can adapt to your protocol of communication
function on_timer( timer_id )
        if(timer_id==1)then
                local flag_uart_change = get_variant("UART_BITS_BUTTONS")
                if(flag_uart_change>0)then --if some button
                        if( (flag_uart_change&1)>0)then
                                my_actionbutton(0)
                                flag_uart_change = flag_uart_change&65534 --mask for down bit
                        end
                        --all bits you have
                        if((flag_uart_change&16384)>0)then --bit 14
                                my_actionbutton(14)
                                flag_uart_change = flag_uart_change&49151 --mask for down bit
                        end

                end
                set_variant("UART_BITS_BUTTONS",flag_uart_change) --reset bits
        end
        --body
end

function on_init()
        start_timer(1,100,0,0) --check if the variable have ch anger
end

function on_control_notify(screen,control,value)
        if(screen == 6) then
                if (control == 14 and value == 1) then --my screen button
                        my_actionbutton(14)
                end
        end
end

function my_actionbutton(number_button)
        -- here its the action make press the button, maybe simple change of state
        if(number_button==14) then
                --Make something
        end
end


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 13:41 , Processed in 0.057036 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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