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

📄 aphearsaycommand.c

📁 本电子词典是名人928的学习机代码,主要是电子学习机AP,其他还没有传
💻 C
📖 第 1 页 / 共 2 页
字号:
            g_RrParam.wSndMode |= APHS_REPEAT_OCCUR;
//            break;
        case CMD_HS_RPT_MORE:
            #ifdef APHS_IFINITE_CYCLE_SET
                if (g_RrParam.wRptTotalCycles == APHS_IFINITE_CYCLE)
                {
	                g_RrParam.wRptCycles = g_RrParam.wRptTotalCycles;     //当前复读环数
                }
            #endif

            if ( g_RrParam.wRptCycles ==0 )
            {
                BOOL bStop =TRUE;
                if (  (!(g_RrParam.wRptMode & RR_MODE_NOMST))
                    && (uParam != HEARSAY_BTN2_CMD)           )
                {   // if MST FIle Auto Mode
                    // to Next Node
                    UINT16 xStep;
                    xStep = ApHsGetTextTimeNodeEx(g_RrParam.aPlay[0].dwPrevTm);
                    xStep +=1;
        			g_RrParam.aPlay[0].dwPlayTm	= ApHsGetTextNodeTime(xStep);
                    if (g_RrParam.aPlay[0].dwPlayTm < g_RrParam.aPlay[0].dwTotalTm)
                    {

                        ApHsSetPlayTm(0);
                        HearSayEvent_C2( pGui,uEvent,HEARSAY_BTN2_CMD);
                        bStop =  FALSE;
                    }
                }

                if (bStop)
                {
                    HearSayEvent_C2( pGui,uEvent,CMD_HS_RPT_END);
                }
            }
            else
            {
                g_RrParam.wRptCycles--;
                // Set current to A.B
	    	    g_RrParam.aPlay[0].dwPlayTm=g_RrParam.dwRptTmA;       // 0.5s
		        ApHsSetPlayTm(0);
   			    ApHsStartPlay(0);

                g_RrParam.bRpt = TRUE;
                g_RrParam.wSndMode |= (APHS_SOUND_PLAY);
	            g_RrParam.wSndMode |= APHS_REPEAT;

                // Skip 1s Display refresh current
    	        ApHSDisableTimerRefreshMst();
		    }
		    break;
		}
        DrawCurrentAp();
    }
    return nRet;
}
//==============================================================================
// Follow Mode
//--------------------------------
INT  HearSayEvent_C3 ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{

    if (!g_RrParam.bRpt)
    {   // if not repeat
        ApHsHint((const char *)APHS_RPT_REQUIRED);
    }
    else
    {   // if have repeat
        // Stop the sound First
        APHsStopCurrentSound();
        APHsStopMark();

        g_RrParam.wSndMode &= ~APHS_REPEAT;
        //==================================================
        switch(uParam)
        {
        case CMD_HS_FOLLOW_END:         // Follow Ending
            ApHsStopRecord();       // Record the same file

            // Close the sound mode 0
            g_RrParam.wSndMode &= ~APHS_SOUND_REC;
            g_RrParam.wSndMode &= ~APHS_SOUND_PLAYREC;
            g_RrParam.wSndMode &= ~APHS_SOUND_PLAY;

            ApHsClosePlay(1);
            ApHsOpenPlay(0);
            ApHsSetPlayTm(0);
            g_RrParam.wSndMode &= ~APHS_FOLLOW;
            break;
        case CMD_HS_FOLLOW_PLAYSND:     // play repeat sound
            ApHsClosePlay(1);
            g_RrParam.wSndMode &= ~APHS_SOUND_REC;
            g_RrParam.wSndMode &= ~APHS_SOUND_PLAYREC;
            g_RrParam.wSndMode |= APHS_FOLLOW;

            if (!HearSayEvent_SetRptTime())     // Set Repreat time
            {   // if not set AB pont
                HearSayEvent_C3(pGui,EVENT_COMMAND,CMD_HS_FOLLOW_END);
                ApHsHint((const char *)APHS_AB_REQUIRED);
            }
            else
            {
               // Reboot the mode 0
                ApHsOpenPlay(0);
                g_RrParam.aPlay[0].dwPlayTm=g_RrParam.dwRptTmA;
                ApHsSetPlayTm(0);           // Set time
                ApHsStartPlay(0);
                g_RrParam.wSndMode |= APHS_SOUND_PLAY;

                // Skip 1s Display refresh current
    	        ApHSDisableTimerRefreshMst();
            }
            break;
        case CMD_HS_FOLLOW_RECEND:      // Record Sound is Ending
            // Play Record Sound
            ApHsStopRecord();       // Record the same file
            g_RrParam.wSndMode &= ~APHS_SOUND_REC;
            g_RrParam.wSndMode &= ~APHS_FOLLOW;

            g_RrParam.wFollowCycles = g_RrParam.wRptTotalCycles;
            //    break;            // Note: this break is no needed
        case CMD_HS_FOLLOW_PLAYREC:     // Play record sound
            APHsRestorePlay0SndTm();    // Must Restore

            ApHsClosePlay(0);           // Close mode 0 and backup

            ApHsClosePlay(1);		    // Play
            g_RrParam.wSndMode &= ~APHS_SOUND_PLAY;
            g_RrParam.wSndMode &= ~APHS_SOUND_REC;

            if (g_RrParam.wFollowCycles--)
            {
                ApHsOpenPlay(1);        // Here is restore the time
                ApHsStartPlay(1);		// Play
                g_RrParam.wSndMode |= APHS_SOUND_PLAYREC;
                g_RrParam.wSndMode |= APHS_FOLLOW;
            }
            else
            {   // 这是一个递归
                return HearSayEvent_C3(pGui,EVENT_COMMAND,CMD_HS_FOLLOW_END);
            }
            break;
        default:                      // Start to record
            ApHsClosePlay(1);           // to avoid play record sound
            if (ApHsStartRecord(0))         // Record the same file
			{
                ApHsClosePlay(0);
                // Close the sound mode 0 and backup the time
                g_RrParam.wSndMode |=APHS_SOUND_REC;
				g_RrParam.wSndMode |=APHS_FOLLOW;
			}
			else
			{   // record fail
                HearSayEvent_C3(pGui, EVENT_COMMAND,CMD_HS_FOLLOW_RECEND);
                ApHsHint((const char *)APHS_REC_FAIL);
            }
        }
        DrawCurrentAp();
    }
    return 1;
}


/****************************************************************************/
/* FUNCTION:   INT  HearSayEvent_C4( APGUI_STRUCT *pGui,                   */
/*                                            UINT uEvent, UINT uParam )    */
/* INPUTS:     NONE                                                        */
/* OUTPUTS:    NONE                                                        */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan    2006-03-15          First Issue                            */
/****************************************************************************/
// Mark Command
INT  HearSayEvent_C4 ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
    if ( g_RrParam.wRptMode & RR_MODE_NOTEXT )
    {// if no file text
        ApHsHint( (const char *)APHS_CUR_NOTEXT);
        return 1;
    }

    // check the sound playing or not
    if (g_RrParam.wSndMode&(APHS_SOUND_REC|APHS_SOUND_PLAYREC|APHS_SOUND_PLAY) )
    {   // error for record, if record sound, do not
#if 0
        ApHsHint( (const char *)APHS_CUROP_INVALID);
        return 1;
#endif
        // Stop command
        HearSayEvent_C1(pGui,EVENT_COMMAND,HEARSAY_BTN1_CMD);
    }

    g_RrParam.bMarkFlag=TRUE;
    // Set Mark
    HearSayBrowserProc(g_RrParam.pBwrGui,EVENT_COMMAND, CM_BROWSER_MARKSTART);
    DrawCurrentAp();
    return 1;
}

//==========================================================================
// Command for play when an error
INT  HearSayEvent_OpenFail(APGUI_STRUCT *pGui, UINT uEvent, UINT uParam)
{

    if (g_RrParam.wSndMode &(APHS_SOUND_REC|APHS_SOUND_PLAYREC) )
    {   // if record file fail
       ApHsHint((const char *)APHS_REC_FAIL);
    }
	else
	{
		ApHsHint((const char *)APHS_PLAY_FAIL);
	}

    return HearSayEvent_C1  (pGui, uEvent, uParam );
}
#ifdef _WIN32
#define		APHS_STOPCNT_MAXDELAY		10000
#else
#define		APHS_STOPCNT_MAXDELAY		500
#endif
INT  HearSayEvent_PlayStop  ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
#if 0
	if (g_RrParam.uStopCntDelay<APHS_STOPCNT_MAXDELAY)
	{	// Added this for bug2866
		// for Delay
		MsgPost((APGUI_STRUCT_MODEL*)NULL,uEvent,uParam);
		g_RrParam.uStopCntDelay++;
		return 1;
	}
	g_RrParam.uStopCntDelay = 0;
#endif

    if (g_RrParam.wSndMode & APHS_REPEAT)
    {
		return HearSayEvent_C2(pGui,EVENT_COMMAND,CMD_HS_RPT_MORE);
	}
    return  HearSayEvent_C1(pGui, EVENT_COMMAND, uParam );
}

INT  HearSayEvent_PlayBreak  ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
    ApHsHint((const char *)APHS_CUROP_FAIL);
    return HearSayEvent_C1(pGui, uEvent, uParam );
}

/****************************************************************************/
/* FUNCTION:   INT  HearSayEvent_C5( APGUI_STRUCT *pGui,                   */
/*                                            UINT uEvent, UINT uParam )    */
/* INPUTS:     NONE                                                        */
/* OUTPUTS:    NONE                                                        */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan    2006-03-15          First Issue                            */
/****************************************************************************/
// Set funtion command
INT  HearSayEvent_C5 ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
INT nRet;
    if (g_RrParam.wSndMode& (APHS_SOUND_REC|APHS_SOUND_PLAY|APHS_SOUND_PLAYREC) )
    {   // Give one hint message  for operatin ???, if sound is playing or record
        ApHsHint((const char *)APHS_CUROP_INVALID);
        nRet=1;
    }
    else
    {
        nRet=HearSaySetMain(0);
    }
////////    EditLoadSetting();
    DrawCurrentAp();
    return nRet;
}

//====================================================================
// Reserved for ED135
// AB Switch of Button
INT  HearSayEvent_C6 ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
    return 0;
}

/****************************************************************************/
/* FUNCTION:   INT  HearSayEvent_SDPullout( APGUI_STRUCT *pGui,             */
/*                                            UINT uEvent, UINT uParam )    */
/* INPUTS:     NONE                                                        */
/* OUTPUTS:    NONE                                                        */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan    2006-03-15          First Issue                            */
/****************************************************************************/
// command for SD Card Pull out
INT  HearSayEvent_SDPullout( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
	/*如果SD卡拔出*/
	if (  (g_RrParam.pFile[0] == 'B')
		||(g_RrParam.pFile[0] == 'b')  )
	{
		MsgBoxRun (MSGBOX_NONE, (UINT8*)"SD卡已拔出,取消相关操作!");
		ExitAp (EXIT_CODE_ERROR);
	}
	return 1;
}

⌨️ 快捷键说明

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