找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1511|回复: 15
收起左侧

如何再新增加一个按键程序

[复制链接]
ID:913288 发表于 2021-11-15 18:58 | 显示全部楼层 |阅读模式
本人软件小白,原视频教程只讲了一个按键的使用方法,但我现在要用到几个按键,现在不知道怎么弄第二个按键程序
下面是一个按键的代码,不知道怎么弄第二个按键的代码

void userapp_deal_key_msg(sys_msg_key_data_t  *key_msg)
{
        if(key_msg->key_index != KEY_NULL)
            {  

                if(key_msg->key_index == 1)            

                        if(MSG_KEY_STATUS_PRESS == key_msg->key_status)
                        {

                        }
                        else if(MSG_KEY_STATUS_PRESS_LONG == key_msg->key_status)
                        { //vr_flg
                                if(key_prs==0)
                                {
                                switch(vr_flg)
                                {
                                case 0:
                                        vr_flg=1;
                                        pause_voice_in();
                                        prompt_play_by_cmd_string("<A>",3,play_voice_callback,true);
                                                break;
                                case 1:
                                        vr_flg=0;
                                        pause_voice_in();
                                        prompt_play_by_cmd_string("<A>",4,play_voice_callback,true);
                                                break;
                                }
                                }
                                key_prs=1;

                        }
                        else if(MSG_KEY_STATUS_RELEASE == key_msg->key_status)
                        {
                                if(key_prs == 1)
                                {
                                        key_prs=0;
                                }else{
                                switch(power_flg)
                                {
                                case 0:
                                        power_flg=1;
                                        gpio_set_output_level_single(GPIO1,gpio_pin_6,1);
                                        gpio_set_output_level_single(GPIO1,gpio_pin_5,1);
                                                break;
                                case 1:
                                        power_flg=0;
                                        gpio_set_output_level_single(GPIO1,gpio_pin_6,0);
                                        gpio_set_output_level_single(GPIO1,gpio_pin_5,0);
                                                break;

                                                                {

                                }
                                }
                        }
                }
            }
}

回复

使用道具 举报

ID:913288 发表于 2021-11-16 00:00 | 显示全部楼层
if(key_msg->key_index == 1)
是按键一,按键二应该怎么弄?求教...
回复

使用道具 举报

ID:584195 发表于 2021-11-16 07:25 | 显示全部楼层
cy2634900 发表于 2021-11-16 00:00
if(key_msg->key_index == 1)
是按键一,按键二应该怎么弄?求教...

要学会用状态机,我还没学会!
回复

使用道具 举报

ID:115923 发表于 2021-11-16 09:54 | 显示全部楼层

if(key_msg->key_index == 2)  /// 在这了,  按键一就是==1,按键二就是==2  
回复

使用道具 举报

ID:913288 发表于 2021-11-16 12:55 | 显示全部楼层
zhaobolove 发表于 2021-11-16 09:54
if(key_msg->key_index == 2)  /// 在这了,  按键一就是==1,按键二就是==2  [e ...

这个地方是对应的按键号我知道,但改了后还不是只有一个按键吗?比如把1改为2那1号按键就没有了吗?我现在想问的问题是怎么才能让按键1 按键2以及按键三同时存在?感谢你的回复软件我噻也不懂。。。。
回复

使用道具 举报

ID:913288 发表于 2021-11-16 20:38 | 显示全部楼层
没有人知道吗?这个对懂软件的人来说应该没什么难度吧?
回复

使用道具 举报

ID:528362 发表于 2021-11-16 23:15 | 显示全部楼层
正好我也在找相关资料,看到过一个4按键的,是把各按键的程序都写了一遍。
回复

使用道具 举报

ID:624769 发表于 2021-11-17 00:12 | 显示全部楼层
cy2634900 发表于 2021-11-16 12:55
这个地方是对应的按键号我知道,但改了后还不是只有一个按键吗?比如把1改为2那1号按键就没有了吗?我现 ...

不是难度不难度的问题, 弄几个按键,基本大多数人都会,但是要切合你的实际情况,就比较麻烦了。
首先,         if(key_msg->key_index != KEY_NULL)   能写出这种代码的,我不认为会搞不定一两个按键。而实际上,个人觉得,用状态机写按键实在是有点大炮打蚊子。再然后,地板其实已经讲得挺清楚了, 你只要照虎画猫,复制一下你的按键1,然后写个2上去,就有按键2了。当然,如果物理上,你的单片机压根没接按键2,另说。

所以,结合各种因素,最大的可能,这代码你自己都看不明白。然后你要加按键,加了按键干什么,你其实也不知道,即便,给你写一个按键程序发给你,你的目的大概率也不会达成,而且会引申出各种其他问题,而解决这一系列引申出来的问题,也许比从零开始教一个小白学会添加几十个按键都要复杂很多倍。毕竟,你都用        if(key_msg->key_index != KEY_NULL) 来写按键了。

那么,你这问题,其实就像烫手的山芋,大多数人是不敢接的……,换个角度讲,地板试了水之后,大多数人对于你这个问题,感到无从下手啊……
回复

使用道具 举报

ID:213173 发表于 2021-11-17 09:36 | 显示全部楼层
按键是最基本的输入设备,用单键实现多功能无非就是短按、长按、连击等等。这就需要识别当前操作与过往状态的逻辑关系。常见的编程方法是定义若干状态标志,以此确定执行多分支功能的走向。楼主提供的代码不完整且有错误,可能是楼主抄写疏漏。但其不应该作为入门教材案例。倒像是某人炫技作品。不易读、易懂,缺乏普适性,新手不易去深究。
回复

使用道具 举报

ID:913288 发表于 2021-11-17 13:59 | 显示全部楼层
本帖最后由 cy2634900 于 2021-11-17 18:51 编辑
188610329 发表于 2021-11-17 00:12
不是难度不难度的问题, 弄几个按键,基本大多数人都会,但是要切合你的实际情况,就比较麻烦了。
首先 ...

这些代码都不是我写的,我软件噻也不懂只懂硬件,是在网上买的一个模块附带的,我就是你说的照虎画猫那种知道改一些IO端口
回复

使用道具 举报

ID:913288 发表于 2021-11-17 14:01 | 显示全部楼层
wulin 发表于 2021-11-17 09:36
按键是最基本的输入设备,用单键实现多功能无非就是短按、长按、连击等等。这就需要识别当前操作与过往状态 ...

我发的代码是我买模块的商家提供的,那些代码一个按键运行没有问题,只是不知道第二个按键的代码怎么弄
回复

使用道具 举报

ID:913288 发表于 2021-11-17 14:11 | 显示全部楼层
本帖最后由 cy2634900 于 2021-11-17 20:27 编辑
188610329 发表于 2021-11-17 00:12
不是难度不难度的问题, 弄几个按键,基本大多数人都会,但是要切合你的实际情况,就比较麻烦了。
首先 ...

我发的代码是我买模块的商家提供的,那些代码一个按键运行没有问题,只是不知道第二个按键的代码怎么弄
回复

使用道具 举报

ID:913288 发表于 2021-11-17 14:19 | 显示全部楼层
本帖最后由 cy2634900 于 2021-11-17 22:03 编辑
188610329 发表于 2021-11-17 00:12
不是难度不难度的问题, 弄几个按键,基本大多数人都会,但是要切合你的实际情况,就比较麻烦了。
首先 ...

这些代码不是我写的我软件噻也不懂,只懂硬件
回复

使用道具 举报

ID:955271 发表于 2021-11-17 14:36 | 显示全部楼层
看按键功能的,如果按键功能相似就复制一份,然后参数改一下就好了,如果主函数里面是用状态机实现的话就需要用到switch语句
回复

使用道具 举报

ID:161164 发表于 2021-11-17 14:50 | 显示全部楼层
cy2634900 发表于 2021-11-17 14:19
这些代码不是我写的我软件噻也不懂,只懂硬件。我就是你说那种照虎画猫的,增加按键的作用我很清楚,这个 ...

if(按键 == 1)
{
  开灯1
}
if(按键 == 2)
{
  开灯2
}
懂?
回复

使用道具 举报

ID:913288 发表于 2021-11-17 15:35 | 显示全部楼层
lkc8210 发表于 2021-11-17 14:50
if(按键 == 1)
{
  开灯1

懂了 ,感谢!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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