OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 292|回复: 1

用EMWIN播放电影卡在这一句是怎么回事不动了, hMovie = GUI_MOVIE_CreateEx(_GetData, JPG_Buffer11, _cbNotify);///卡在...

[复制链接]

8

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2014-12-26
在线时间
29 小时
发表于 2024-6-26 22:41:28 | 显示全部楼层 |阅读模式
10金钱
用EMWIN播放电影卡在这一句是怎么回事不动了,                 hMovie = GUI_MOVIE_CreateEx(_GetData, JPG_Buffer11, _cbNotify);///卡在创建电影丙句
代码如下
#include "main.h"
#include "led.h"
#include "usart.h"
#include "sdram.h"  
#include "lcd_rgb.h"
#include "lcd_pwm.h"
#include "touch_800x480.h"
//#include "cg.h"
//#include "dqcg.h"
//#include "dqsb.h"
//#include "sb.h"
#include "GUI.h"
#include "WM.h"

#include "ff.h"
#include "ff_gen_drv.h"
#include "sd_diskio.h"


/********************************************** 变量定义 *******************************************/

FATFS         SD_FatFs;                 // 文件系统对象
FRESULT         MyFile_Res;    // 操作结果
char SDPath[4];                        // SD卡逻辑驱动路径
/////////////////////////////////////
static FILE *ffilm;
static GUI_MOVIE_INFO   Info;
static GUI_MOVIE_HANDLE hMovie = 0;
#define        File_BUFFER                        (JPEG_OUTPUT_DATA_BUFFER + 0x200000) // 存储从Fatfs中读到的图片数据(只有使用SD卡或者SPI Flash才用到)
        UINT br;              // 实际读取的字节数       
        FRESULT         JPG_FileRes;            // 操作结果
        FIL                JPG_File;                        // 文件对象
        UINT                JPG_FileCount;                // 数据数量
        FSIZE_t        JPG_FileSize;                 // 文件大小
BYTE buffer1[500000]; // 读取缓冲区


FIL file;
FRESULT res;




uint32_t JPG_Buffer11[1024*4096]__attribute__((at(0xC0CCA000)));        // 存储从SD卡读取到的图片数据


int _GetData(void * p, const U8 ** ppData, unsigned NumBytes, U32 Off)
{
        static int FileAddress = 0;
        FILE *file;
        U32    NumBytesRead;
        U8     * pData;

        pData  = (U8 *)*ppData;
        file = (FILE *)p;
       
        /*
        * 设置读取位置
        */
        if(Off == 1)
        {
                FileAddress = 0;               
        }
        else
        {
                FileAddress = Off;               
        }

        fseek (file, FileAddress, SEEK_SET);
       
        /*
        * 读取数据到缓存
        */
        NumBytesRead = fread (pData, 1, NumBytes, file);

        /*
        * 返回读取的字节数
        */
        return NumBytesRead;
}

////////////////////////////////////////////////////////



/********************************************** 函数声明 *******************************************/

void FatFs_Check(void);                                        // 判断FatFs是否挂载成功,若没有创建FatFs则格式化SD卡
void SystemClock_Config(void);                // 时钟初始化
void MPU_Config(void);                                        // MPU配置
       
/***************************************************************************************************
*        函 数 名: main
*        入口参数: 无
*        返 回 值: 无
*        函数功能: emWin
*        说    明: 无
****************************************************************************************************/
void _cbNotify(GUI_HMEM hMem, int Notification, U32 CurrentFrame)
{
        static uint32_t t0, t1;
       
        (void)t1;
       
        switch (Notification)
        {
                case GUI_MOVIE_NOTIFICATION_PREDRAW:
                        t0 = GUI_GetTime();
                        break;
               
                case GUI_MOVIE_NOTIFICATION_POSTDRAW:
                        t1 = GUI_GetTime() - t0;
                        //printf_videodbg("t = %d\r\n", t1);
                        break;
               
                case GUI_MOVIE_NOTIFICATION_STOP:
                        break;
               
                case GUI_MOVIE_NOTIFICATION_START:
                        break;
               
                case GUI_MOVIE_NOTIFICATION_DELETE:
                        break;
        }
}





int main(void)
{
        //GUI_MEMDEV_Handle         hMem_emf_11;        // 存储设备句柄
       
//        MPU_Config();                                // MPU配置
        SCB_EnableICache();                // 使能ICache
        SCB_EnableDCache();                // 使能DCache
        HAL_Init();                                        // 初始化HAL库
        SystemClock_Config();        // 配置系统时钟,主频480MHz
        LED_Init();                                        // 初始化LED引脚
        USART1_Init();                                // USART1初始化         
        MX_FMC_Init();                                // SDRAM初始化       
        FatFs_Check();                                //判断FatFs是否挂载成功,若没有创建FatFs则格式化SD卡
       
        __HAL_RCC_CRC_CLK_ENABLE();         // 开启CRC校验,STemWin必须要开启               
        GUI_Init();                                                        // GUI初始化       
//        LCD_PWMinit(40);                                        // 背光引脚PWM初始化,占空比40%       
        Touch_Init();                                                // 触摸屏初始化               

// 窗口管理器自动使用多缓冲,可以让动态绘图更加流畅
        WM_MULTIBUF_Enable(1);       

///        GUI_SetFont(&GUI_FontD48);         //设置字体       
///        GUI_SetColor(GUI_BLUE);                //设置画笔色  
///        GUI_SetBkColor(GUI_RED );                 //设置背景色
          GUI_SetFont(&GUI_Font32B_ASCII);         //设置字体       
        GUI_SetColor(GUI_LIGHTGRAY);                //设置画笔色  
        GUI_SetBkColor(GUI_BLACK);                 //设置背景色
        GUI_Clear();
        ////////////////////////////////////////
       
        ///////////////////////////////////////       
        ////        GUI_DispStringAt("cuo  wu",50, 100);                                 ////在指定位置显示字符
        while (1)
        {
       
                JPG_FileSize = f_size(&file);        // 获取文件大小       
        res  =f_open(&file,"1.emf", FA_READ | FA_OPEN_EXISTING);///以只读方式打开文件。       
                                           if (res == FR_OK)////打开文件成功
                                        {
                                                GUI_DispStringAt("da kai chen gong",50, 100);                                 ////在指定位置显示字符
                                // 文件打开成功,现在可以使用 file 结构体进行读写操作
} else {
                GUI_DispStringAt("cuo  wu",50, 100);                                 ////在指定位置显示字符
    // 文件打开失败,处理错误
}
               
        JPG_FileSize = f_read(&file, JPG_Buffer11,JPG_FileSize, &br);////// 读取文件内容到缓冲区
                                                   if (JPG_FileSize == FR_OK)
                                        {
                                        GUI_DispStringAt("du qu wen jian cheng gong",50, 180);                                 ////在指定位置显示字符
                                                                                                //文件打开成功,现在可以使用 file 结构体进行读写操作 FR_DISK_ERR、FR_INT_ERR、FR_NOT_READY
                                        }else {
                GUI_DispStringAt("du qu wen jian shi bai",50, 180);                                 ////在指定位置显示字符
                                                                                                //文件打开失败,处理错误
                                                 f_close(&file);///关闭文件
                                }
////////////////////////////////////////////////////////////////////////////////


                               
                 hMovie = GUI_MOVIE_CreateEx(_GetData, JPG_Buffer11, _cbNotify);///卡在创建电影丙句

                        GUI_MOVIE_SetPeriod(  hMovie, 33);///设置电影帧播放时间33MS
                                        GUI_MOVIE_Show( hMovie, 0, 0, 1);//////在指定位置播放电影
                                        GUI_MOVIE_Pause(  hMovie);///////播放电影
                                        while(1);

                }

                                        }

               

       


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165312
金钱
165312
注册时间
2010-12-1
在线时间
2108 小时
发表于 2024-6-28 21:47:20 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 22:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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