硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3678|回复: 3
收起左侧

[有问必答] 安富莱的教程代码里 这个函数怎么返回的状态字 没看到有return

[复制链接]

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2018-9-26 22:41:38 | 显示全部楼层 |阅读模式
/*
*********************************************************************************************************
*        函 数 名: MainMenu
*        功能说明: 主界面
*        形    参:无
*        返 回 值: 状态字
*********************************************************************************************************
*/
uint8_t MainMenu(void)
{
        uint8_t ucKeyCode;                /* 按键代码 */
        uint8_t ucTouch;                /* 触摸事件 */
        uint8_t fRefresh;                /* 刷屏请求标志,1表示需要刷新 */
        FONT_T tFont;                        /* 定义一个字体结构体变量,用于设置字体参数 */
        FONT_T tIconFont;                /* 定义一个字体结构体变量,用于图标文本 */

        int16_t tpX, tpY;
        uint16_t i;

        DispBackground();        /* 显示背景 */

        /* 设置字体参数 */
        {
                tFont.FontCode = FC_ST_16;        /* 字体代码 16点阵 */
                tFont.FrontColor = MAIN_TEXT_COLOR;        /* 字体颜色 */
                tFont.BackColor = CL_MASK;        /* 文字背景颜色 */
                tFont.Space = 0;                                /* 文字间距,单位 = 像素 */

                tIconFont.FontCode = FC_ST_12;                /* 字体代码 16点阵 */
                tIconFont.FrontColor = MAIN_TEXT_COLOR;        /* 字体颜色 */
                tIconFont.BackColor = CL_MASK;                /* 文字背景颜色 */
                tIconFont.Space = 1;                                /* 文字间距,单位 = 像素 */
        }

        LCD_DispStr(5, 3, VER_INFO, &tFont);                        /* 在(8,3)坐标处显示一串汉字 */
        LCD_DispStr(5, g_LcdHeight - 13, KEY_INFO, &tIconFont);                        /* 在(8,3)坐标处显示一串汉字 */

        fRefresh = 1;        /* 1表示需要刷新LCD */
        while (1)
        {
                bsp_Idle();

                if (fRefresh)
                {
                        fRefresh = 0;

                        /* 显示图标阵列 */
                        {
                                for (i = 0; i < ICONS_COUNT; i++)
                                {
                                        //LCD_DrawIcon(&s_tMainIcons[i], &tIconFont, 0);        /* 0 表示正常显示, 1表示选中 */
                                        LCD_DrawIcon32(&s_tMainIcons[i], &tIconFont, 0);        /* 0 表示正常显示, 1表示选中 */
                                }
                        }
                }

                ucTouch = TOUCH_GetKey(&tpX, &tpY);        /* 读取触摸事件 */
                if (ucTouch != TOUCH_NONE)
                {
                        switch (ucTouch)
                        {
                                case TOUCH_DOWN:                /* 触笔按下事件 */
                                        /* 绘制图标阵列 */
                                        {
                                                for (i = 0; i < ICONS_COUNT; i++)
                                                {
                                                        if (TOUCH_InRect(tpX, tpY, s_tMainIcons[i].Left, s_tMainIcons[i].Top,
                                                                 s_tMainIcons[i].Height, s_tMainIcons[i].Width))
                                                        {
                                                                LCD_DrawIcon32(&s_tMainIcons[i], &tIconFont, 1);        /* 0 表示正常显示, 1表示选中 */
                                                        }
                                                }
                                        }
                                        break;

                                case TOUCH_MOVE:                /* 触笔移动事件 */
                                        break;

                                case TOUCH_RELEASE:                /* 触笔释放事件 */
                                        for (i = 0; i < ICONS_COUNT; i++)
                                        {
                                                if (TOUCH_InRect(tpX, tpY, s_tMainIcons[i].Left, s_tMainIcons[i].Top,
                                                         s_tMainIcons[i].Height, s_tMainIcons[i].Width))
                                                {
                                                        return s_RetStatus[i];        /* 返回程序状态 */
                                                }
                                        }

                                        /* 绘制图标阵列,消除选中状态 */
                                        {
                                                for (i = 0; i < ICONS_COUNT; i++)
                                                {
                                                        LCD_DrawIcon32(&s_tMainIcons[i], &tIconFont, 0);        /* 0 表示正常显示, 1表示选中 */
                                                }
                                        }
                                        break;

                                default:
                                        break;
                        }
                }

                ucKeyCode = bsp_GetKey();        /* 读取键值, 无键按下时返回 KEY_NONE = 0 */
                if (ucKeyCode != KEY_NONE)
                {
                        /* 有键按下 */
                        switch (ucKeyCode)
                        {
                                case  KEY_DOWN_K3:        /* K3键 */
                                        return MS_CALIBRATION;        /* 进入触摸界面 */
                                        //break;

                                case  KEY_DOWN_K1:        /* K1键 */
                                        if (++s_ColorIndex >= STYLE_COUNT)
                                        {
                                                s_ColorIndex = 0;
                                        }
                                        /* 重新绘制背景 */
                                        {
                                                DispBackground();        /* 显示背景 */

                                                /* 设置字体参数 */
                                                {
                                                        tFont.FontCode = FC_ST_16;        /* 字体代码 16点阵 */
                                                        tFont.FrontColor = MAIN_TEXT_COLOR;        /* 字体颜色 */
                                                        tFont.BackColor = CL_MASK;        /* 文字背景颜色 */
                                                        tFont.Space = 0;                                /* 文字间距,单位 = 像素 */

                                                        tIconFont.FontCode = FC_ST_12;                /* 字体代码 16点阵 */
                                                        tIconFont.FrontColor = MAIN_TEXT_COLOR;        /* 字体颜色 */
                                                        tIconFont.BackColor = CL_MASK;                /* 文字背景颜色 */
                                                        tIconFont.Space = 1;                                /* 文字间距,单位 = 像素 */
                                                }

                                                LCD_DispStr(5, 3, VER_INFO, &tFont);                        /* 在(8,3)坐标处显示一串汉字 */
                                                LCD_DispStr(5, g_LcdHeight - 13, KEY_INFO, &tIconFont);                        /* 在(8,3)坐标处显示一串汉字 */
                                        }
                                        fRefresh = 1;
                                        break;

                                default:
                                        break;
                        }
                }
        }
}


回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2018-9-26 22:42:18 | 显示全部楼层
case MS_MAIN_MENU:                                  ucStatus = MainMenu();                /* 主界面状态 */                                  break;
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107118
QQ
发表于 2018-9-27 00:06:37 | 显示全部楼层
QQ截图20180927000619.png
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2018-10-7 11:11:01 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 14:04 , Processed in 0.197294 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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