C++ Builder XE 用sndPlaySound写的简单的语音播报算法
admin
2024-02-03 19:13:25

void __fastcall TForm2::N6Click(TObject *Sender)
{
//语音报时
// char   *wav_handle   ;
//HRSRC  h =FindResource(HInstance, "Resource_1", "RCData");
//HGLOBAL  h1=LoadResource(HInstance,h);
//wav_handle = (char   *)LockResource(h1);
//sndPlaySound(wav_handle,   SND_MEMORY   |   SND_SYNC);
AnsiString SoftStr= ExtractFilePath(Application->ExeName);
AnsiString Wstr=SoftStr +"res\\VoiceTime\\TIMENOW.wav";
//sndPlaySound(wav_handle,   SND_MEMORY   |   SND_SYNC);
sndPlaySound(Wstr.c_str() ,SND_ASYNC);
Sleep(2000);   //延时1秒
//
TDateTime dt = Now();
unsigned short hour,min, sec, msec;
//dt.DecodeTime(

dt.DecodeTime(&hour, &min,&sec,&msec);
if(hour>=0 && hour <=5)
{ //凌晨
 Wstr= SoftStr +"res\\VoiceTime\\AM0.wav";
 sndPlaySound(Wstr.c_str() ,SND_ASYNC);
 Sleep(800);   //延时1秒
 //点
 Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",hour) +".wav";
 sndPlaySound(Wstr.c_str() ,SND_ASYNC);
 Sleep(800);   //延时1秒
}
else if(hour >5 && hour<=12)
{ //上午
 Wstr= SoftStr +"res\\VoiceTime\\AM1.wav";
 sndPlaySound(Wstr.c_str() ,SND_ASYNC);
 Sleep(800);   //延时1秒
 //点
 Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",hour) +".wav";
 sndPlaySound(Wstr.c_str() ,SND_ASYNC);
 Sleep(800);   //延时1秒
}
else if(hour>12)
{   //下午
    Wstr= SoftStr +"res\\VoiceTime\\PM.wav";
    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
    Sleep(800);   //延时1秒
    //点
    Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",hour-12) +".wav";
    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
    Sleep(800);   //延时1秒
}
else
{ //晚上
    Wstr= SoftStr +"res\\VoiceTime\\EM.wav";
    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
    Sleep(800);   //延时1秒
   //点
    Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",hour-12) +".wav";
    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
    Sleep(800);   //延时1秒
}
//点
    Wstr= SoftStr +"res\\VoiceTime\\POINT.wav";
    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
    Sleep(800);   //延时1秒
   //分
   if(min/10>0)
   {
    Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",min/10*10) +".wav";
    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
    Sleep(800);   //延时1秒
    Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",min%10) +".wav";
    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
    Sleep(800);   //延时1秒
   }
   else
   {
    Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",min) +".wav";
    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
    Sleep(800);   //延时1秒
   }
    Wstr= SoftStr +"res\\VoiceTime\\Min.wav";
    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
    Sleep(800);   //延时1秒
   //秒
//    Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",sec) +".wav";
//    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
//    Sleep(1000);   //延时1秒
//    Wstr= SoftStr +"res\\VoiceTime\\Min.wav";
//    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
//    Sleep(1000);   //延时1秒
}

相关内容

热门资讯

原创 夏... 夏天湿热重、脾胃易虚寒,这4道汤健脾祛湿、暖胃护胃、清热不伤阳,适合连续两个月常喝,步骤清晰、做法简...
明日四月十六,记得“吃4样,做... 明日农历四月十六,记得“吃4样,做1事”五谷丰登迎福气,老传统别丢! 时光如梭,转眼间来到了农历四月...
今年目标全国销售网点突破200... 5月16日下午6点,贵阳市吾茶白·贵茶潮饮烘焙概念店里排起小队。 “就要这款,上次喝完一直惦记着。”...
原创 淄... 很多人认识淄博只靠烧烤但真正撑起淄博饮食底蕴的从来不是网红热度而是一代代扎根老城的老字号烟火。这些老...
原创 夏... “赤日炎炎似火烧”,这话一到夏天,可算是说到大家心坎里去了。天热起来,不光人没精神,连胃口也跟着变差...