📄 isd1790.c
字号:
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 + -