📄 e20_dis.c
字号:
#include "E20_main.h"
/*******************************************************************************************/
/*********** 函数功能为解码板回传对应指令,由用户主机接收处理, ***********/
/*******************************************************************************************/
void mcCTB_CommandA03(){
switch (gCTBCommandBuffer[1]){
case cCTB_RECORD :
FRecordPause = 0;
#ifndef OTG_MODE
FRecord_doing = 1;
MMDIP_Menu_Record_doing();
#endif
gAUDAction_State = cAUDAction_RECORD; /*当前状态为播放状态*/
break;
case cCTB_RECORD_PAUSE :
gAUDAction_State = cAUDAction_RECPause; /*当前状态为播放状态*/
#ifndef OTG_MODE
if (gPlay_Minute == gRecord_Minute){
//继续录入下一段
FRecordPause = 1;
FRecord_doing = 0;
//按进入选择保存/不保存退出菜单
gCursorMove = 1;
MDIP_Menu_EnterSaveRevord(gCursorMove);
gMenuSelect = cMenu_EnterSaveRevord;
}
#endif
break;
case cCTB_RECORD_STOP :
gAUDAction_State = cAUDAction_RECStop; /*当前状态为播放状态*/
FRecord_doing = 0;
if (FRecordExit) MSpecify_Delect(gTrack_Max+1);//在不储存退出时要删除最后生成曲目
FRecordExit = 0;
break;
default : break;
}
return;
}
void mcCTB_CommandA04(){
switch (gCTBCommandBuffer[1]){
case cCTB_PLAY : /*回传播放状态*/
gAUDAction_State = cAUDAction_Play; /*当前状态为播放状态*/
FKyWillPlay = 0;
#ifndef OTG_MODE
gCTBCommandBuffer[0] = cCTB_CommandA04;
gCTBCommandBuffer[1] = cCTB_REARD_INFO;
gCTBCommandBuffer[2] = cCTB_TRACK_NAME;
gCTBCommandBuffer[3] = 0;
MCTBCommandWrite();
#else
mCTB_Read_TreakName();
#endif
break;
case cCTB_PAUSE : /*回传暂停状态*/
gAUDAction_State = cAUDAction_Pause; /*当前状态为暂停状态*/
break;
case cCTB_STOP : /*回传停止状态*/
gAUDAction_State = cAUDAction_Stop;
break;
case cCTB_REARD_INFO :
switch (gCTBCommandBuffer[2]){
case cCTB_ReadTrack_Max : /* 回传播放目录下的曲目最大值,如目录下有3个曲目,最大值回传为3, */
gTrack_Max = gCTBCommandBuffer[3]; /*回传字节D为曲目最大值*/
#ifndef OTG_MODE
if (gMenuSelect == cMenu_Main02_SectionErase){
gBellLong = gTrack_Max;
MDIP_Menu_SectionErase(gCursorMove,gTrack_Max);
}
else if (gMenuSelect == cMenu_Main02_ALLErase){
if (gTrack_Max == 0){
FDIPReverse = 1;
MDIPWriteChinese_String(64-16*3,cDOTLine2, "成功删");
MDIPChineseToScreen(64, cDOTLine2, cDIP_cu);
MDIPWriteChinese_String(64+16,cDOTLine2, "曲目");
}
else {
MSpecify_Delect(gTrack_Max);
FDIPReverse = 1;
MDIPWriteChinese_String(64-16*3,cDOTLine2, "删");
MDIPChineseToScreen(64-16*2, cDOTLine2, cDIP_cu);
MDIPWriteChinese_String(64-16*1, cDOTLine2, "第");
MDIPWriteChinese_String(64+7*2,cDOTLine2, "段");
MDIPASCIIToScreen(64,cDOTLine2, gTrack_Max/10 + '0');
MDIPASCIIToScreen(64+7*1,cDOTLine2, gTrack_Max%10 + '0');
}
MDIP_Menu_Quit();
}
else if (gMenuSelect == cMenu_Main02_Record_doing){
Mplay_Stop(cCTB_RECORD);
FRecord_doing = 0;
}
#endif
break;
case cCTB_Escalate :
if (gCTBCommandBuffer[3]) { //正在升级中。。。
MDIPClearALL();
MDIPWriteEngChinese_String(0,cDOTLine2, " UpDate Setuping..");
FErase_UpData = 1;
}
else {
//升级版本为
MDIPClearALL();
gUpdateCPU_DelayTm = 120;
MReturnMenu();
}
break;
default : break;
}
break;
case cCTB_DRIVER_SELECT : /*接入USB闪盘或拨出USB闪盘回传指令*/
#ifdef OTG_MODE
if ((gCTBCommandBuffer[2] == 0x00) && (gCTBCommandBuffer[3] == 0x01)){ // 检测到有U盘接入
gCTBCommandBuffer[0] = 0x02;
gCTBCommandBuffer[1] = cCTB_PLAY;
MCTBCommandWrite();
}
else { // 检测到U盘已拨出
}
#else
if ((gCTBCommandBuffer[2] == 0x0c) && (gCTBCommandBuffer[3] == 01)){ /*接入USB闪盘时,回传指令为字节A 0x04/字节B 0x72/字节C 0x0c/字节D 0x01*/
FInitiaizeOK = 1; /*读起闪盘标志*/
FKyWillPlay = 1; /*自动播放标志*/
/*显示曲目号码*/
}
else { /*拨出USB闪盘时,回传指令为字节A 0x04/字节B 0x72/字节C 0x00/字节D 0x00, */
}
#endif
break;
default : break;
}
return;
}
void mcCTB_CommandA05(){
switch (gCTBCommandBuffer[1]){
case cCTB_REARD_INFO :
if (gCTBCommandBuffer[2] == cCTB_PLAY_TIMER){ /* 回传指令为05H/70H/15H/2个字节的曲目播放时间*/
g2Main01 = (gCTBCommandBuffer[3] << 8) | gCTBCommandBuffer[4]; /*回传指令字节D、E组成16位的曲目播放总时间*/
g2Goto_TimePlay = g2Main01; /*播放总时间,即总秒数*/
gPlay_Hour = g2Main01/3600; /*计算得出播放的小时数*/
gPlay_Minute = (g2Main01%3600)/60; /*计算得出播放的分钟数*/
gPlay_Second = (g2Main01%3600)%60; /*计算得出播放的秒钟数*/
if (!FDSPLoad_OK){ /*读起硬盘或闪盘时,第一次回传时间标志*/
FInitiaizeOK = 1; /*读起硬盘或闪盘标志*/
FKyWillPlay = 1; /*自动播放标志*/
}
FDSPLoad_OK = 1;
if (FInitiaizeOK){ /*读起硬盘或闪盘标志*/
if ((gMenuSelect == cMenu_Main02_Select_MP3)||(gMenuSelect == cMenu_Main03_LoopPlayMP3)
||(gMenuSelect ==cMenu_Main03_MP3Name)||(gMenuSelect ==cMenu_Main02_Record_doing)) {
gTAB_HourMinsecond[2] = mNumeration_DecToHex(gPlay_Second); //秒
gTAB_HourMinsecond[1] = mNumeration_DecToHex(gPlay_Minute); //分
gTAB_HourMinsecond[0] = mNumeration_DecToHex(gPlay_Hour); //小时
if (gMenuSelect == cMenu_Main02_Record_doing){
#ifndef OTG_MODE
FRecord_doing = 1;
MMDIP_Menu_Record_doing();
if (gPlay_Minute == gRecord_Minute){ //分段储存前要暂停
if (gTAB_HourMinsecond[2] == 0){
Mplay_Stop(cCTB_RECORD_PAUSE);
}
}
#endif
}
else {
if ((gAUDAction_State != cAUDAction_Stop) && (gAUDAction_State != cAUDAction_Pause)){
MDIP_SetupTime_List(0,cDOTLine3,0);
}
}
}
if ((gMenuSelect == cMenu_Main02_SectionErase)
||(gMenuSelect == cMenu_Main02_ALLErase)
||(FRecordPause &&(gMenuSelect == cMenu_Main02_Record_doing))){
#ifdef OTG_MODE
gCTBCommandBuffer[0] = cCTB_CommandA03;
gCTBCommandBuffer[1] = cCTB_REARD_INFO;
gCTBCommandBuffer[2] = cCTB_ReadTrack_Max;
MCTBCommandWrite();
#else
gCTBCommandBuffer[0] = cCTB_CommandA04;
gCTBCommandBuffer[1] = cCTB_REARD_INFO;
gCTBCommandBuffer[2] = cCTB_ReadTrack_Max;
gCTBCommandBuffer[3] = 0x00;
MCTBCommandWrite();
#endif
}
}
}
break;
case cCTB_SYSTEM :
if ((gCTBCommandBuffer[2] & 0x03) == 0x03) mCTB_SYSTEM();
break;
default : break;
}
return;
}
void MDIPHostDataProcs(){
#ifdef OTG_MODE
if ((gCTBCommandBuffer[1] == cCTB_TRACK_NAME)||(gCTBCommandBuffer[1] == (cCTB_TRACK_NAME+1))){
mCTB_TrackNameFONT(); //汉字左半
}
if ((gCTBCommandBuffer[1] == 0x70)&&(gCTBCommandBuffer[2] == 0x50)) mCTB_SYSTEM();
mcCTB_CommandA03();
mcCTB_CommandA04();
mcCTB_CommandA05();
#endif
switch (gCTBCommandBuffer[0]){
case cCTB_CommandA03 : /*回传对应指令长度为3字节*/
mcCTB_CommandA03();
break;
case cCTB_CommandA04 : /*回传对应指令长度为4字节*/
mcCTB_CommandA04();
break;
case cCTB_CommandA05 : /*回传对应指令长度为5字节*/
mcCTB_CommandA05();
break;
case cCTB_CommandA06 : /*回传对应指令长度为6字节*/
switch (gCTBCommandBuffer[1]){
case cCTB_REARD_INFO:
if (gCTBCommandBuffer[2] == cCTB_TRACK_NUMBER){
gTrackNumber = gCTBCommandBuffer[5];/*回传指令字节E为播放曲目的号码*/
#ifdef OTG_MODE
gCTBCommandBuffer[0] = cCTB_CommandA03;
gCTBCommandBuffer[1] = cCTB_REARD_INFO;
gCTBCommandBuffer[2] = cCTB_ReadTrack_Max;
MCTBCommandWrite();
mCTB_Read_TreakName(); // 读歌名字库发送指令
#else
gCTBCommandBuffer[0] = cCTB_CommandA04;
gCTBCommandBuffer[1] = cCTB_REARD_INFO;
gCTBCommandBuffer[2] = cCTB_ReadTrack_Max;
gCTBCommandBuffer[3] = 0x00;
MCTBCommandWrite();
#endif
FDIPSimble_VolDn(0);
FDIPSimble_VolUp(0);
}
break;
default : break;
}
break;
case cCTB_CommandA10 :
if (gCTBCommandBuffer[1] == 0x80){
gTrack_Name[0] = gCTBCommandBuffer[2];
gTrack_Name[1] = gCTBCommandBuffer[3];
gTrack_Name[2] = gCTBCommandBuffer[4];
gTrack_Name[3] = gCTBCommandBuffer[5];
gTrack_Name[4] = gCTBCommandBuffer[6];
gTrack_Name[5] = gCTBCommandBuffer[7];
gTrack_Name[6] = gCTBCommandBuffer[8];
gTrack_Name[7] = gCTBCommandBuffer[9];
}
break;
default : break;
}
return;
}
void mCTB_TrackNameFONT(){
BYTE gLocal_0;
BYTE gLocal_1;
BYTE gLocal_2;
gLocal_2 = gCTBCommandBuffer[0] - 4; //回传长度
gLocal_1 = gCTBCommandBuffer[3]; //第1个ASCII码
gLocal_0 = 4;
do {
gTrack_Name[gTrackNameLength++] = gCTBCommandBuffer[gLocal_0++];
} while (gLocal_0 < (gLocal_2+4));
if (gCTBCommandBuffer[1] == (cCTB_TRACK_NAME+1)){
gLocal_0 = gTrackNameLength;
do {
gTrack_Name[gLocal_0] = ' ';
} while (++gLocal_0 < 60);
//启动显示
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -