⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 musicmain.c

📁 Actions ucOS-II mp3方案源码,可以做参考
💻 C
📖 第 1 页 / 共 2 页
字号:
{
    msg_t msg;
    Music_CreateVolumnWindow(MusicTaskVars);
    SLIDER_Dec(MusicTaskVars->SliderWin);
    MusicTaskVars->CurVolumn = SLIDER_GetValue(MusicTaskVars->SliderWin);
    
    msg.type = MS_SetVolume;
    msg.msg.data[0] = MusicTaskVars->CurVolumn;
    MYOSQPost(MP3_Player_In,&msg);

}
void Music_SelectKeyResolve(muisc_vars *MusicTaskVars)
{
    MusicTaskVars->RedrawFlag = TRUE;
    
    if(Music_SelectVolumn(MusicTaskVars))
        return;
    Music_SelectSong(MusicTaskVars);
}
bool Music_SelectVolumn(muisc_vars *MusicTaskVars)
{
    if(MusicTaskVars->VolumWin)
    {
        MusicTaskVars->CurVolumn = SLIDER_GetValue(MusicTaskVars->SliderWin);
        Music_DeleteVolumnWindow(MusicTaskVars);
        return TRUE;
    }
    return FALSE;
}
void Music_RedrawSongInfo(muisc_vars *MusicTaskVars)
{
    if(MusicTaskVars->PlayWin)
    {
        GUI_RECT rClient;
        GET_NOWTIME_RECT(rClient);
        WM_InvalidateRect(MusicTaskVars->PlayWin, &rClient);
        GET_TOTALTIME_RECT(rClient);
        WM_InvalidateRect(MusicTaskVars->PlayWin, &rClient);
        GET_BITRATE_RECT1(rClient);
        WM_InvalidateRect(MusicTaskVars->PlayWin, &rClient);
    }
}
void Music_CreateVolumnWindow(muisc_vars *MusicTaskVars)
{
    if(!MusicTaskVars->VolumWin)// && MusicTaskVars->music_selectflag
    {
        MusicTaskVars->VolumWin= WM_CreateWindow(5,20,80,20,WM_CF_SHOW,&cbCallBack_MusicSetVolumn,0);
        MusicTaskVars->SliderWin= SLIDER_Create(2,2,76,16,MusicTaskVars->VolumWin,0,WM_CF_SHOW,0);
        SLIDER_SetRange(MusicTaskVars->SliderWin,0,31);
        SLIDER_SetValue(MusicTaskVars->SliderWin,MusicTaskVars->CurVolumn);
    }
}
void Music_DeleteVolumnWindow(muisc_vars *MusicTaskVars)
{
    if(MusicTaskVars->VolumWin)
    {
        WM_DeleteWindow(MusicTaskVars->VolumWin);
        MusicTaskVars->VolumWin = 0;
    }
}

void Music_CreatePlayingWindow(muisc_vars *MusicTaskVars)
{
    if(!MusicTaskVars->PlayWin)
    {
        MusicTaskVars->RedrawFlag = TRUE;
        if(MusicTaskVars->fileno != MusicTaskVars->g_music_var->infomation.fileno)
        {
            MusicTaskVars->fileno = MusicTaskVars->g_music_var->infomation.fileno;
            api_GetFileNameByNo(MusicTaskVars->g_music_var->infomation.FifoCntNo, MusicTaskVars->g_music_var->infomation.filename, MusicTaskVars->g_music_var->infomation.fileno);
        }
        MusicTaskVars->PlayWin = WM_CreateWindow(20,20,74,42,WM_CF_SHOW,&cbCallBack_MusicPlayingWindow,0);
    }
}

void Music_DeletePlayingWindow(muisc_vars *MusicTaskVars)
{
    if(MusicTaskVars->PlayWin)
    {
        WM_DeleteWindow(MusicTaskVars->PlayWin);
        MusicTaskVars->PlayWin = 0;
    }
}
void cbCallBack_MusicSetVolumn(WM_MESSAGE *pMsg)
{
    GUI_RECT rClient;
    GUI_COLOR color;

    switch(pMsg->MsgId)
    {
    case WM_PAINT:
        GUI_SetBkColor(GUI_LIGHTRED);
        GUI_Clear();
        GUI_GetClientRect(&rClient);
        color = GUI_GetColor();
        GUI_SetColor(GUI_WHITE);
        GUI_DrawRectEx(&rClient);
        GUI_SetColor(color);
        break;
    }
    WM_DefaultProc(pMsg);
}

void cbCallBack_MusicPlayingWindow(WM_MESSAGE* pMsg)
{
    char string[11];
    GUI_RECT rClient;
    music_t *g_music_var;
    GUI_COLOR color;
    muisc_vars *MusicTaskVars;
    
    switch (pMsg->MsgId) 
    {
    case WM_PAINT:
        MusicTaskVars = (muisc_vars *)OSGetTaskOwnPtr(MUSIC_FACE_ID);
        g_music_var   =    (music_t *)OSGetTaskOwnPtr(PLAYER_ENGINE_ID);
        GUI_SetBkColor(GUI_LIGHTBLUE);
        GUI_SetColor(GUI_WHITE);
        if(MusicTaskVars->RedrawFlag)
        {
            MusicTaskVars->RedrawFlag = FALSE;
            GUI_SetBkColor(GUI_LIGHTBLUE);
            GUI_Clear();
            GUI_GetClientRect(&rClient);
            color = GUI_GetColor();
            GUI_SetColor(GUI_WHITE);
            GUI_DrawRectEx(&rClient);
            GUI_SetBkColor(GUI_LIGHTBLUE);
            GUI_SetColor(GUI_WHITE);
            GET_FILENAME_RECT(rClient);
            GUI_DispStringInRect(g_music_var->infomation.filename, &rClient, GUI_TA_LEFT | GUI_TA_TOP);
            GET_BITRATE_RECT2(rClient);
            GUI_DispStringInRect((char *)MusicTaskVars->point[1]+18, &rClient, GUI_TA_LEFT | GUI_TA_TOP);
        }    
        GET_BITRATE_RECT1(rClient);
        GUI_DispStringInRect(ConvertBitrateToString(g_music_var->cur_info.BitRate,string), &rClient, GUI_TA_LEFT | GUI_TA_TOP);
        GET_TOTALTIME_RECT(rClient);
        GUI_DispStringInRect(ConvertTimeToString(g_music_var->dec_info.total_time,string), &rClient, GUI_TA_LEFT | GUI_TA_TOP);
        GET_NOWTIME_RECT(rClient);
        GUI_DispStringInRect(ConvertTimeToString(g_music_var->cur_info.NowTime,string), &rClient, GUI_TA_LEFT | GUI_TA_TOP);
        GET_MODE_RECT(rClient);
        if(g_music_var->status <= music_NormalPlay)
            GUI_DispStringInRect((char *)MusicTaskVars->point[1]+8, &rClient, GUI_TA_LEFT | GUI_TA_TOP);
        else if(g_music_var->status >= music_WaitSetA && g_music_var->status <= music_ABLoopPlay)
        {
            GUI_DispStringInRect((char *)MusicTaskVars->point[1], &rClient, GUI_TA_LEFT | GUI_TA_TOP);
            if(g_music_var->status == music_WaitSetA)
            {
                MusicTaskVars->ABFlashFlag ^= 1;
                if(MusicTaskVars->ABFlashFlag)
                     GUI_DispStringAt((char *)MusicTaskVars->point[1]+15 , rClient.x0 + 22, rClient.y0);
            }
        }
        break;
    
    }
    WM_DefaultProc(pMsg);

}  

char *ConvertTimeToString(full_time_t time,char *string)
{
    if(time.hour !=0)
    {
        string[0] = time.hour /10 +'0';
        string[1] = time.hour %10 +'0';
        string[2] = ':';
        string[3] = time.minute /10 + '0';
        string[4] = time.minute %10 + '0';
    }
    else
    {
        string[0] = time.minute /10 +'0';
        string[1] = time.minute %10 +'0';
        string[2] = ':';
        string[3] = time.second /10 + '0';
        string[4] = time.second %10 + '0';
    }
    string[5] = 0;
    return string;
}
char *ConvertBitrateToString(BYTE bitrate[],char *string)
{   
    if(bitrate[0] | bitrate[1] | bitrate[2])
    { 
        string[0] = bitrate[0];
        string[1] = bitrate[1];
        string[2] = bitrate[2];
    }
    else
    {
        string[0] = '0';
        string[1] = '0';
        string[2] = '0';
    }     
    string[3] = 0;  
    return string;
}

void cbCallBack_MusicStopSongWindow(WM_MESSAGE *pMsg)
{
    msg_t msg;
    switch(pMsg->MsgId)
    {
    case WM_KEY:
        switch(((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt)
        {
        case 0:
            msg.type = MSG_KEY;
            msg.msg.data[0] = ((WM_KEY_INFO*)(pMsg->Data.p))->Key | GUI_Key_Up; 
            MYOSQPost(MP3_Player_Out,&msg); 
            return;
        case 1:
            msg.type = MSG_KEY;
            msg.msg.data[0] = ((WM_KEY_INFO*)(pMsg->Data.p))->Key | GUI_Key_Down; 
            MYOSQPost(MP3_Player_Out,&msg); 
            return;    
        case 2:
            msg.type = MSG_KEY;
            msg.msg.data[0] = ((WM_KEY_INFO*)(pMsg->Data.p))->Key | GUI_Key_Long; 
            MYOSQPost(MP3_Player_Out,&msg); 
            return;    
        case 3:
            msg.type = MSG_KEY;
            msg.msg.data[0] = ((WM_KEY_INFO*)(pMsg->Data.p))->Key | GUI_Key_Hold; 
            MYOSQPost(MP3_Player_Out,&msg); 
            return; 
        case 4:
            System_DealMessage(pMsg);
            return;
        }   
    }
}

void Music_ShowSelectWindow(muisc_vars *MusicTaskVars)
{
//获得歌曲列表,存入ListMusicBox
    char **ListMusicBox = (GUI_ConstString *)MusicTaskVars->point[0];

    
    GUI_SetLanguageMode(0);
    MusicTaskVars->ListWin = LISTBOX_Create(ListMusicBox, 0, 0, 0, 0, cbCallBack_MusicStopSongWindow,WM_CF_SHOW);
    LISTBOX_SetBackColor(MusicTaskVars->ListWin, 0, GUI_BLUE);
    LISTBOX_SetBackColor(MusicTaskVars->ListWin, 1, GUI_LIGHTBLUE);
    LISTBOX_SetTextColor(MusicTaskVars->ListWin, 0, GUI_WHITE);
    LISTBOX_SetTextColor(MusicTaskVars->ListWin, 1, GUI_BLACK);
    LISTBOX_SetFont(MusicTaskVars->ListWin, &GUI_Font13B_1);
 
    WM_SetFocus(MusicTaskVars->ListWin);
}
void Music_DeleteAllWindow(muisc_vars *MusicTaskVars)
{
    if(MusicTaskVars->ListWin != 0)
           WM_DeleteWindow(MusicTaskVars->ListWin);
    Music_DeleteVolumnWindow(MusicTaskVars);
    Music_DeletePlayingWindow(MusicTaskVars);
    //MusicTaskVars->music_selectflag = FALSE;
}  

#ifdef WIN32
bool MusicTaskExistFlag = FALSE;
#endif

void MusicTaskCreate()
{
    int result;
    msg_t msg_send;
    //IF MUSICTASK IS NOT EXIST THEN
    if(!MusicTaskDetect())
    {
        //OS_ENTER_CRITICAL(); ///////////////////////////////////////////////////////
#ifdef WIN32
        CREATE_TASK(&aTCB[4], "MusicMenu", MusicTask,  6, Stack_4);
#else   
        if( (result = PlayerEngineDetect()) <= 0)
        {
            if( result == -1 )
            {
                msg_send.type = MS_END;
                MYOSQPost(Engine_In, &msg_send);
                
                do
                {
                    OSTimeDly(5);
                }while(PlayerEngineDetect() != 0);
            }
            OSTaskCreate((void(*)(void *))(long)PlayerEngine,    (void *)0x0000, 
                            (void *)PLAYER_ENGINE_SPACE, PLAYER_ENGINE_PRIO, PLAYER_ENGINE_ID); 
            for(;MP3_Player_Out == 0;)
                OSTimeDly(1);   
        }
                      
        OSTaskCreate((void(*)(void *))(long)MusicTask,    (void *)0x0000,  
                        (void *)MUSIC_FACE_SPACE, MUSIC_FACE_PRIO, MUSIC_FACE_ID);
#endif
        //OS_EXIT_CRITICAL();/////////////////////////////////////////////////////////////////
    }
    //ELSE THEN DO NOTHING
    else
    {
        msg_t msg;
        msg.type = MSG_REBUILDWIN;
        MYOSQPost(MP3_Player_Out,&msg);
    }
}
    
void MusicTaskDelete()
{
    for(;;)
    {
        output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
        OSTaskDel(OS_PRIO_SELF);
    }
}

  
bool MusicTaskDetect()
{   
#ifndef WIN32 
    OS_ENTER_CRITICAL();
    if(OSTCBPrioTbl[MUSIC_FACE_PRIO] != (OS_TCB *)0)
    {
        OS_EXIT_CRITICAL();
        return TRUE;
    }
    OS_EXIT_CRITICAL();
    return FALSE;
#else
    if(!MusicTaskExistFlag)
    {
        MusicTaskExistFlag = TRUE;
        return FALSE;
    }
    return TRUE;
#endif    
}  
int PlayerEngineDetect()
{   
    OS_ENTER_CRITICAL();
    if(OSTCBPrioTbl[PLAYER_ENGINE_PRIO] != (OS_TCB *)0)
    {
        if(OSGetIDFromPrio(PLAYER_ENGINE_PRIO) == PLAYER_ENGINE_ID)
        {
            OS_EXIT_CRITICAL();
            return 1;
        }
        OS_EXIT_CRITICAL();
        return -1;
    }
    OS_EXIT_CRITICAL();
    return 0;
}  


#endif



















/*
char *ConvertInt3ToString(int pecent,char *string)
{
    if(pecent >100 || pecent <0)
    {
        string[0] = 'e';
        string[1] = 'r';
        string[2] = 'r';
        string[3] = 0;
        return string;
    }
    if(pecent ==100)
           string [0] = '1';
    string[1] = (pecent /10)%10 +'0';
    string[2] = pecent %10  +'0';
    string[3] = 0;
    return string;
}
char *GetCurMusicName(muisc_vars *MusicTaskVars,int sel)
{
    char **FileNamePtr = (char **)MusicTaskVars->point[0];
    return FileNamePtr[sel];
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -