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

📄 isd1790.c

📁 ISD1790-C程序
💻 C
📖 第 1 页 / 共 2 页
字号:
        PlayBackData->PlayAllNum=2;
        SetDayDigitalSound(DayData,PlayBackData);
    }
    else
    {
        PlayBackData->PlayData[0]=22;//一路顺风
        PlayBackData->PlayData[1]=24;//此卡可用日期
        PlayBackData->PlayAllNum=2;
        SetDayDigitalSound(DayData,PlayBackData);
    }
#endif
}

/*转换日期处理*/
//限制条件:天数只到‘千’位
static void DateConver(unsigned short ConverData,unsigned char *CommRSData)
{
#ifdef _ISD1790_EN_
	unsigned char i;
	unsigned short ConverDataTimes=1000;
	for(i=0;i<4;i++)
	{
		CommRSData[i]=(unsigned char)(ConverData/ConverDataTimes);
		ConverData%=ConverDataTimes;
		ConverDataTimes/=10;
	}
#endif
}


/*设置日期数字发音*/
//限制条件:四位数字的整数发音
static void SetDayDigitalSound(unsigned char *PlayData,PLAY_BACK_STRUCT *PlayBackData)
{
#ifdef _ISD1790_EN_
    unsigned char P_Cnt;
    unsigned char P_Flag;
    
    P_Flag=0;
    P_Cnt=PlayBackData->PlayAllNum;
    
    if(PlayData[0])
    {
        PlayBackData->PlayData[P_Cnt++]=PlayData[0];
        PlayBackData->PlayData[P_Cnt++]=13;//千 
        P_Flag=1;
    }
    
    if(PlayData[1])
    {
        PlayBackData->PlayData[P_Cnt++]=PlayData[1];
        PlayBackData->PlayData[P_Cnt++]=12;//百
        P_Flag=1;
    }
    else
    {
        if(P_Flag)
        {
           if(PlayData[2]|PlayData[3]) 
           {  
             PlayBackData->PlayData[P_Cnt++]=0;//零
           }
        }
        P_Flag=0;
    }
    
    if(PlayData[2])
    {
        PlayBackData->PlayData[P_Cnt++]=PlayData[2];
        PlayBackData->PlayData[P_Cnt++]=11;//十
        P_Flag=1;
    }
    else
    {
        if(P_Flag)
        {
           if(PlayData[3]) 
           {  
             PlayBackData->PlayData[P_Cnt++]=0;//零
           }
        }
        P_Flag=0;
    }
    if(PlayData[3]) 
    {
      PlayBackData->PlayData[P_Cnt++]=PlayData[3];
    }
    else
    {
      if(PlayData[0]|PlayData[1]|PlayData[2]==0)
      {
        PlayBackData->PlayData[P_Cnt++]=0;//零
      }
    }
    
    PlayBackData->PlayAllNum=P_Cnt;
    PlayBackData->PlayData[PlayBackData->PlayAllNum++]=19;//天
#endif
}

/*转换发送给显示屏收费数据处理*/
static void ChargeConver(unsigned long ConverData,unsigned char *CommRSData)
{
#ifdef _ISD1790_EN_
	unsigned char i;
	unsigned long ConverDataTimes=10000000;
	for(i=0;i<8;i++)
	{
		CommRSData[i]=(unsigned char)(ConverData/ConverDataTimes);
		ConverData%=ConverDataTimes;
		ConverDataTimes/=10;
	}
#endif
}

/*设置金额数字发音*/
static void SetMoneyDigitalSound(unsigned char *PlayData,PLAY_BACK_STRUCT *PlayBackData)
{
#ifdef _ISD1790_EN_
    unsigned char P_Cnt;
    unsigned char P_Flag;
    
    P_Flag=0;
    P_Cnt=PlayBackData->PlayAllNum;
    
    if(PlayData[0])
    {
        if(PlayData[0]!=1)
          PlayBackData->PlayData[P_Cnt++]=PlayData[0];
        PlayBackData->PlayData[P_Cnt++]=11;//十万 
        P_Flag=1;
    }
    
    if(PlayData[1])
    {
        PlayBackData->PlayData[P_Cnt++]=PlayData[1];
        PlayBackData->PlayData[P_Cnt++]=14;//万 
        P_Flag=1;
    }
    else
    {
        if(P_Flag)
        {
           if(PlayData[2]|PlayData[3]|PlayData[4]|PlayData[5]) 
           {  
             PlayBackData->PlayData[P_Cnt++]=14;//万 
             PlayBackData->PlayData[P_Cnt++]=0;//零
           }
        }
        P_Flag=0;
    }
    
    if(PlayData[2])
    {
        PlayBackData->PlayData[P_Cnt++]=PlayData[2];
        PlayBackData->PlayData[P_Cnt++]=13;//千
        P_Flag=1;
    }
    else
    {
        if(P_Flag)
        {
           if(PlayData[3]|PlayData[4]|PlayData[5]) 
           {  
             PlayBackData->PlayData[P_Cnt++]=0;//零
           }
        }
        P_Flag=0;
    }
    
    if(PlayData[3])
    {
        PlayBackData->PlayData[P_Cnt++]=PlayData[3];
        PlayBackData->PlayData[P_Cnt++]=12;//百
        P_Flag=1;
    }
    else
    {
        if(P_Flag)
        {
           if(PlayData[4]|PlayData[5]) 
           {  
             PlayBackData->PlayData[P_Cnt++]=0;//零
           }
        }
        P_Flag=0;
    }
    
    if(PlayData[4])
    {
        PlayBackData->PlayData[P_Cnt++]=PlayData[4];
        PlayBackData->PlayData[P_Cnt++]=11;//十
        P_Flag=1;
    }
    else
    {
        if(P_Flag)
        {
           if(PlayData[5]) 
           {  
             PlayBackData->PlayData[P_Cnt++]=0;//零
           }
        }
        P_Flag=0;
    }
        
    if(PlayData[5])
    {
        PlayBackData->PlayData[P_Cnt++]=PlayData[5];//个位
    }
    else
    {  
        if(PlayData[0]|PlayData[1]|PlayData[2]|PlayData[3]|PlayData[4]==0)
        {
            PlayBackData->PlayData[P_Cnt++]=0;//零
        }
    
    }
    PlayBackData->PlayData[P_Cnt++]=15;//元
    
    
    if(PlayData[6])
    {
        PlayBackData->PlayData[P_Cnt++]=PlayData[6];//
        PlayBackData->PlayData[P_Cnt++]=16;//角
    }
    
    if(PlayData[7])
    {
        PlayBackData->PlayData[P_Cnt++]=PlayData[7];//
        PlayBackData->PlayData[P_Cnt++]=17;//分
    }

    PlayBackData->PlayAllNum=P_Cnt;
#endif
}

/*处理金额或余额数据*/
static void HandleMoneyData(PLAY_FRAME_STRUCT *PlayFrameData,PLAY_BACK_STRUCT *PlayBackData)
{
#ifdef _ISD1790_EN_
    unsigned char PlayCMD;
    unsigned long MoneyData[2];
    unsigned char DayData0[8],DayData1[8];
    
    PlayCMD=PlayFrameData->PlayCommand;    
    PlayFrameData->PlayFData[0].PlayBackMoney=PlayFrameData->PlayFData[0].PlayBackMoney*100;
    PlayFrameData->PlayFData[1].PlayBackMoney=PlayFrameData->PlayFData[1].PlayBackMoney*100;    
    MoneyData[0]=(unsigned long)PlayFrameData->PlayFData[0].PlayBackMoney;
    MoneyData[1]=(unsigned long)PlayFrameData->PlayFData[1].PlayBackMoney;
    
    ChargeConver(MoneyData[0],DayData0);
    ChargeConver(MoneyData[1],DayData1);
    
    PlayBackData->PlayPointer=0;
    PlayBackData->PlayAllNum=0;
    switch(PlayCMD)
    {
         case 0x44:
           PlayBackData->PlayData[0]=20;//欢迎光临
           PlayBackData->PlayData[1]=25;//此卡余额
           PlayBackData->PlayAllNum=2;
           SetMoneyDigitalSound(DayData0,PlayBackData);
           break;
         case 0x49:  
           PlayBackData->PlayData[0]=22;//一路顺风
           PlayBackData->PlayData[1]=33;//此卡收费
           PlayBackData->PlayAllNum=2;
           SetMoneyDigitalSound(DayData0,PlayBackData);
           PlayBackData->PlayData[PlayBackData->PlayAllNum++]=27;//余额    
           SetMoneyDigitalSound(DayData1,PlayBackData);
           break;
         case 0x4a:
           PlayBackData->PlayData[0]=34;//请交费
           PlayBackData->PlayAllNum=1;
           SetMoneyDigitalSound(DayData0,PlayBackData);
           PlayBackData->PlayData[PlayBackData->PlayAllNum++]=35;//谢谢
           break;
    }
#endif
}


/*语音数据处理后进行发音*/
//整个语音播放未完成时FALSE
//整个语音播放完成时TRUE
static bool PlayBack(BSPI_FRAME_DATA_STRUCT *BspiFrameData,BSPI_DATA_STRUCT *BspiData,
              PLAY_BACK_STRUCT *PlayBackData)
{
#ifdef _ISD1790_EN_
    unsigned char PlayP,PlayNum;
    PlayP=PlayBackData->PlayPointer;
    PlayNum=PlayBackData->PlayAllNum;
    if(playflag==FALSE)//一个音播放结束,播放下一个音
    {
        if(PlayP==PlayNum)    return TRUE;//整个语音播放结束
        ISD17xxPlay(BspiFrameData,BspiData,PlayBackData->PlayData[PlayP]);
        (PlayBackData->PlayPointer)++;
        //return FALSE;
    }
#endif
    return FALSE;
}


⌨️ 快捷键说明

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