查看: 2357|回复: 0

C5000音频电容式触摸扩展板 功能拆解之 文件操作函数分析2

[复制链接]
  • TA的每日心情
    奋斗
    2018-8-29 20:40
  • 签到天数: 1341 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-1-15 01:04:05 | 显示全部楼层 |阅读模式
    分享到:
    UpdateDisplay_File
    该函数用于更新显示文件
    如果文件存在,则显示,不存在,显示empty

    Print_PwrOff
    该函数用于在液晶上显示系统待机的提示信息
    首先将以下四个字符串
            "Hui Tou Jian...      ",    //displayStrings.PWROFF1
            "Hasta La Vista..     ",    //displayStrings.PWROFF2
            "   Ciao...           ",    //displayStrings.PWROFF3
            " And Goodbye!        ",    //displayStrings.PWROFF4
    依次打印在虚拟的坐标
    /**< For Power off window >*/
    #define CURSOR_PWROFF1   (0x0000)    // Starts at Line 0 Pixel 0
    #define CURSOR_PWROFF2   (0x0100)    // Starts at Line 1 Pixel 0
    #define CURSOR_PWROFF3   (0x0200)    // Starts at Line 2 Pixel 0
    #define CURSOR_PWROFF4   (0x0300)    // Starts at Line 3 Pixel 0
    即 第 0 1 2 3 行
    然后调用SETVP 命令,实际显示出来
    注意, SETVP 命令设置的视点是 0x0000 为了能够将四行的信息全部显示出来,又调用了SetScreen 函数
    SetScreen((unsigned int) LINE_MSG0, (unsigned int) LINE_MSG1, (unsigned int) 1, (unsigned int) 1, (unsigned int) 0xFFFF);


    void SetScreen(unsigned int line_from, unsigned int line_to, unsigned int vpixel_incr, unsigned int do_vscroll, unsigned int vscroll_delay),而且在现实的时候多次用到
    注释给的英文的意思应该是为了能够在屏幕上显示两行信息进行设置

    之所以要左移8位 是因为对C5000的显示命令而言,前8位控制行 后8位控制列
    而  vpixel_incr 参数控制每次垂直滚动的间隔。该函数根据LINE_MSG0 参数和 LINE_MSG1参数之间的大小关系 既能实现从上到下的滚动 也能实现从下到上的滚动。

    附图说明
    图片1.png 图片2.png 图片3.png

    黑色字体代表虚拟屏幕上打印
    红色边框代表根据不同变化的视点而实际显示的效果,通过视点的不断下移或上移,从而实现了垂直滚动显示信息的效。

    Go_NextFile
    该函数用于播放下一个音乐文件
    该函数首先判断系统上一个状态,如果不是在浏览文件,则先定位到当前文件夹的第一个文件,在多次循环调用 NEXTF 命令,找到文件后进行播放;如果是在浏览文件,则直接调用 NEXTF 命令进入下一个文件,并进行播放。

    关于更新命令函数 ,实现了状态机编程,可参见状态转换图
    600px-ACTBPSW_StateMch.png
    current_state 的 BROWSE_DIR 下面分      
    current_event 的 SCROLL_RIGHT、 SCROLL_LEFT、 MID、 UP_HOLD、 DOWNx2

    current_state 的 BROWSE_FILE 下面分      
    current_event 的 SCROLL_RIGHT、 SCROLL_LEFT、 MID、 DOWN_HOLD、 DOWNx2、 UP_HOLD UP

    current_state 的 FF

    current_state 的 RWD

    current_state 的 RECORD、 REC_PAUSE下面分      
    current_event 的 MID、 MID_HOLD、UP_HOLD

    current_state 的 USB_MSC下面分      
    current_event 的 DOWNx2

    current_state 的 PWR_OFF下面分      
    current_event 的 UP_HOLD

    还发现有几个命令C5000的开发板没用上 准备有机会试验下
    静音操作命令 RESUME_RECORD command
    删除文件或者文件夹命令 DEL command
    创建新的文件夹命令MKDIR command
    进入下一个子文件夹NEXTD command
    还能设置平衡 BALANCE_RESET command


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-12 21:29 , Processed in 0.119674 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.