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

📄 aphearsay.c

📁 本电子词典是名人928的学习机代码,主要是电子学习机AP,其他还没有传
💻 C
📖 第 1 页 / 共 3 页
字号:
//    {EVENT_KEYUP,       'A',                (FPGUIHANDLEEVENT)HearSayEvent_KeyA},
    {EVENT_KEY,         'a',                (FPGUIHANDLEEVENT)HearSayEvent_KeyAB},
//    {EVENT_KEYUP,       'a',                (FPGUIHANDLEEVENT)HearSayEvent_KeyA},


    {EVENT_KEY,         'b',                (FPGUIHANDLEEVENT)HearSayEvent_KeyAB},
//    {EVENT_KEYUP,       'b',                (FPGUIHANDLEEVENT)HearSayEvent_KeyB},
    {EVENT_KEY,         'B',                (FPGUIHANDLEEVENT)HearSayEvent_KeyAB},
//    {EVENT_KEYUP,       'B',                (FPGUIHANDLEEVENT)HearSayEvent_KeyB},


    {EVENT_KEY,         's',                (FPGUIHANDLEEVENT)HearSayEvent_KeySet},
//    {EVENT_KEYUP,       's',                (FPGUIHANDLEEVENT)HearSayEvent_KeySet},
    {EVENT_KEY,         'S',                (FPGUIHANDLEEVENT)HearSayEvent_KeySet},
//    {EVENT_KEYUP,       'S',                (FPGUIHANDLEEVENT)HearSayEvent_KeySet},
    //-------------
    // Command area
    {EVENT_COMMAND,     CM_SDCARD_PULLOUT,  (FPGUIHANDLEEVENT)HearSayEvent_SDPullout},
//    {EVENT_COMMAND,     HEARSAY_BTN1_CMD,   (FPGUIHANDLEEVENT)HearSayEvent_C1},     // Play /pause
//    {EVENT_COMMAND,     HEARSAY_BTN2_CMD,   (FPGUIHANDLEEVENT)HearSayEvent_C1},     // Stop

    {EVENT_COMMAND,     HEARSAY_BTN1_CMD,   (FPGUIHANDLEEVENT)HearSayEvent_CPlay},     // Play /pause
//	{EVENT_COMMAND,     'Q',   (FPGUIHANDLEEVENT)HearSayEvent_CPlay},     // Play /pause
//	{EVENT_COMMAND,     'q',   (FPGUIHANDLEEVENT)HearSayEvent_CPlay},     // Play /pause

    {EVENT_COMMAND,     HEARSAY_BTN7_CMD,   (FPGUIHANDLEEVENT)HearSayEvent_CStop},     // Stop
//    {EVENT_COMMAND,     'W',   (FPGUIHANDLEEVENT)HearSayEvent_CStop},     // Stop
//  {EVENT_COMMAND,     'w',   (FPGUIHANDLEEVENT)HearSayEvent_CStop},     // Stop

    {EVENT_COMMAND,     HEARSAY_BTN2_CMD,   (FPGUIHANDLEEVENT)HearSayEvent_C2},     // Repreat
//    {EVENT_COMMAND,     'E',   (FPGUIHANDLEEVENT)HearSayEvent_C2},     // Repreat
//    {EVENT_COMMAND,     'e',   (FPGUIHANDLEEVENT)HearSayEvent_C2},     // Repreat

    {EVENT_COMMAND,     HEARSAY_BTN4_CMD,   (FPGUIHANDLEEVENT)HearSayEvent_C4},     // jump
//    {EVENT_COMMAND,     'R',   (FPGUIHANDLEEVENT)HearSayEvent_C4},     // jump
//    {EVENT_COMMAND,     'r',   (FPGUIHANDLEEVENT)HearSayEvent_C4},     // jump

    {EVENT_COMMAND,     HEARSAY_BTN5_CMD,   (FPGUIHANDLEEVENT)HearSayEvent_C5},
    {EVENT_COMMAND,     HEARSAY_BTN6_CMD,   (FPGUIHANDLEEVENT)HearSayEvent_C6},
    {EVENT_COMMAND,     CMD_HS_OPENFAIL,    (FPGUIHANDLEEVENT)HearSayEvent_OpenFail},
    {EVENT_COMMAND,     CMD_HS_STOP,        (FPGUIHANDLEEVENT)HearSayEvent_PlayStop},
    {NULL,              NULL,           NULL                                }
};

/****************************************************************************/
/* FUNCTION:   INT  HearSayEventProc( APGUI_STRUCT *pGui, UINT uEvent,       */
/*                                     UINT uParam )                        */
/* DESCRIPTION:HearSay应用事件处理函数                                       */
/* INPUTS:     NONE                                                        */
/* OUTPUTS:    NONE                                                        */
/* RETURN:     事件处理结束后的的返回值                                    */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan    2006-01-26          First Issue                            */
/****************************************************************************/
INT  HearSayEventProc( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
INT     nRet;

    nRet = HanldeEventTable( pGui, uEvent, uParam,
                            (APEV_HANDLE_TABLE*)g_aHearSayEvTable );

    if ( nRet == 0 )
        nRet = HanldeEventTableEx( pGui, uEvent, uParam,
                                    (APEV_HANDLE_TABLE_EX*)g_aHearSayEvTableEx );

    return nRet;
}

/****************************************************************************/
/* FUNCTION:   INT  HearSayEvent_Initialize( APGUI_STRUCT *pGui,             */
/*                                            UINT uEvent, UINT uParam )    */
/* DESCRIPTION:HearSay应用初始化事件处理                                     */
/* INPUTS:     NONE                                                        */
/* OUTPUTS:    NONE                                                        */
/* RETURN:     运行初始化事件的返回值                                      */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan    2006-01-26          First Issue                            */
/****************************************************************************/
INT  HearSayEvent_Initialize( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
	//===================================
	// SHow One Message for Initialize
#ifndef _WIN32
	//---------
	{
#define	APHS_INIT_MSG_W		(12*8+8)
#define	APHS_INIT_MSG_H		20
#define	APHS_INIT_MSG_X		((LCD_SCREEN_WIDTH-APHS_INIT_MSG_W)/2)
#define	APHS_INIT_MSG_Y		((LCD_SCREEN_HEIGHT-APHS_INIT_MSG_H)/2)
#define	APHS_INIT_MSG_TX	(APHS_INIT_MSG_X+4)
#define	APHS_INIT_MSG_TY	(APHS_INIT_MSG_Y+4)
#define	APHS_INIT_MSG		((const char *)" 正在打开......")
	GraphDisableRefresh();
	GraphClearRect( APHS_INIT_MSG_X,APHS_INIT_MSG_Y,
				 APHS_INIT_MSG_X+APHS_INIT_MSG_W-1,
					APHS_INIT_MSG_Y+APHS_INIT_MSG_H-1);

	GraphDrawRect( APHS_INIT_MSG_X,APHS_INIT_MSG_Y,
				 APHS_INIT_MSG_X+APHS_INIT_MSG_W-1,
					APHS_INIT_MSG_Y+APHS_INIT_MSG_H-1);
	GraphDrawText( APHS_INIT_MSG_TX,APHS_INIT_MSG_TY,
					0, 0, (UINT8*)APHS_INIT_MSG);

	GraphEnableRefresh();
	}
#endif
	//==================-----------
	SetGuiHelp(HEARSAY_HELP_ID);

    g_RrParam.hRrMstFile = NUF_NOFILE;
    g_RrParam.hTimer=TimerCreateTimer(APHS_TIMERID, APHS_TIMER_LEN);
    if (g_RrParam.hTimer==NULL)
    {
        ExitAp(EXIT_CODE_NORMAL);
        return 1;
    }

    g_RrParam.pBwrGui=HS_BWR_GUI(pGui);

    //=========================================
    // Flow control
    g_RrParam.wSndMode=APHS_SOUND_NONE;

    //---------------------------------
	g_RrParam.pDispBuf=NULL;
	//---------------------------------------------
	// Open sound file and time stamp
	g_RrParam.aPlay[0].hPlay=-1;
	g_RrParam.aPlay[1].hPlay=-1;
	if (!ApHsOpenPlay(0))
	{
		ExitAp(EXIT_CODE_NORMAL);
		return 1;
	}

	// Init file
	if (!__RrReadText() )
	{
		ExitAp(EXIT_CODE_NORMAL);
	}
	else
	{
		if ( !(g_RrParam.wRptMode&RR_MODE_NOMST))
		{	// is MST file Mode, do not supprot BROWSER_OPTION_RELOAD;
			pGui->uCurrentIme &= (~BROWSER_OPTION_RELOAD);
		}

        EditLoadSetting();
        if (g_RrParam.wRptMode& RR_MODE_NOTEXT)
        {
		    BrowserLoadData((MBrowser *)HS_BWR_GUI(pGui),NULL,BROWSER_STATE_NULL,0);
        }
        else
        {
		    BrowserLoadData((MBrowser *)HS_BWR_GUI(pGui),g_RrParam.pTextBuf,BROWSER_STATE_NULL,0);
        }

		ApHsSetTextOffset();
		ApHSSetTmAStep(0);
		ApHSSetTmBStep((UINT16)400);			// to Max
	}
    // 在此进行AP的初始化;
    return 1;
}

/****************************************************************************/
/* FUNCTION:   INT  HearSayEvent_Destroy( APGUI_STRUCT *pGui,                */
/*                                         UINT uEvent, UINT uParam )       */
/* DESCRIPTION:HearSay应用销毁事件处理                                       */
/* INPUTS:     NONE                                                        */
/* OUTPUTS:    NONE                                                        */
/* RETURN:     运行销毁事件的返回值                                        */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan    2006-01-26          First Issue                            */
/****************************************************************************/
INT  HearSayEvent_Destroy( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
	// 销毁创建的定时器等;
    if (g_RrParam.hTimer)
    {
        TimerDestroyTimer(g_RrParam.hTimer);
    }

    // 释放申请的内存
	if (g_RrParam.pDispBuf)
	{
		MemFree(g_RrParam.pDispBuf);
	}

	APHSSndReturn();

	// Del Recorded File
    ApHsDelRecordFile();
    if (  (g_RrParam.hRrMstFile != NUF_NOFILE)
        && (g_RrParam.hRrMstFile>=0        ) )
    {
        FileClose( g_RrParam.hRrMstFile );
    }

    ApHsFileTextDel();
    return 1;
}

/****************************************************************************/
/* FUNCTION:   INT  HearSayEvent_Exit( APGUI_STRUCT *pGui,                   */
/*                                      UINT uEvent, UINT uParam )          */
/* DESCRIPTION:HearSay应用退出事件处理                                       */
/* INPUTS:     NONE                                                        */
/* OUTPUTS:    NONE                                                        */
/* RETURN:     运行退出事件的返回值                                        */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan    2006-01-26          First Issue                            */
/****************************************************************************/
INT  HearSayEvent_Exit( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
    return HearSayEvent_KeyEsc( pGui,uEvent,uParam );

    // 不允许退出则返回1表示已经处理此消息;
	// 如果允许缺省退出,则直接返回0表示不处理此消息即可
    return 0;
	// 如果要特殊退出,则返回1,并调用函数“ExitAp”退出本AP
}

/****************************************************************************/
/* FUNCTION:   INT  HearSayEvent_Draw( APGUI_STRUCT *pGui,                   */
/*                                      UINT uEvent, UINT uParam )          */
/* DESCRIPTION:HearSay应用显示事件处理                                       */
/* INPUTS:     NONE                                                        */
/* OUTPUTS:    NONE                                                        */
/* RETURN:     运行显示事件的返回值                                        */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan    2006-01-26          First Issue                            */
/****************************************************************************/
INT  HearSayEvent_Draw( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
    GraphDisableRefresh();

    GraphClearScreen();

	// Draw title
	ApDrawTitleBar((UINT8*)g_RrParam.pTitle,TITLETEXT_STYLE_LEFT);


/*
	GraphClearRect(0,(pGui+1)->nY+(pGui+1)->uHeight,
					LCD_SCREEN_WIDTH-1,
					LCD_SCREEN_HEIGHT-1);*/

	//=================================
	// Draw the "A" and "B" and Hint Area
	//=================================
    HearSayDraw_ProBar (pGui, EVENT_DRAW,0 );

	//----------------------------------------------------
	GraphEnableRefresh();
    return 1;
}

/****************************************************************************/
/* FUNCTION:   INT  HearSayDraw_ProBar( APGUI_STRUCT *pGui,                */
/*                                      UINT uEvent, UINT uParam )          */
/* DESCRIPTION:HearSay应用显示事件处理                                     */
/* INPUTS:     NONE                                                        */
/* OUTPUTS:    NONE                                                        */
/* RETURN:     运行显示事件的返回值                                        */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan    2006-01-26          First Issue                            */
/****************************************************************************/
#if 0
const char * const g_aHSHint[]=
{
    "",
    "请按\"A/B\"设置复读点",
    "正在播放......",
    "正在复读......",
    "正在录音......",
    "正在对比:录音播放......",
    "正在对比:原音播放......",
    "请按\"B\"设置复读点",
    "模式: 自动",
    "模式: A-B",
};

VOID  __HearSayDraw_ProBarHInt (VOID)
{
const UINT8*  p;
INT     x;

	GraphDisableRefresh();

⌨️ 快捷键说明

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