#include "../pch/pch.h" #include "CVoiceWorker.h" #include "mmsystem.h" void CVoiceWorker::Start() { m_is_work = true; m_nStopNum = 0; //处理声音提醒 std::thread(&CVoiceWorker::HandleVoice, this).detach(); } void CVoiceWorker::Stop() { m_is_work = false; m_voice_mutex.lock(); while (!m_voice_queue.empty()) { m_voice_queue.pop(); } m_voice_mutex.unlock(); } void CVoiceWorker::AddVoice(int voice_type) { m_voice_mutex.lock(); m_voice_queue.push(voice_type); m_voice_mutex.unlock(); } void CVoiceWorker::HandleVoice() { while (m_is_work) { m_voice_mutex.lock(); if (m_voice_queue.empty()) { m_voice_mutex.unlock(); CSystem::my_sleep(1); continue; } int voice_type = m_voice_queue.front(); m_voice_queue.pop(); m_voice_mutex.unlock(); if (voice_type == 1) { wstring path = CSystem::GetProgramDir() + L"\\music\\waimai_new.wav"; PlaySound(path.c_str(), NULL, SND_FILENAME | SND_ASYNC); } else if (voice_type == 2) { wstring path = CSystem::GetProgramDir() + L"\\music\\waimai_new_auto.wav"; PlaySound(path.c_str(), NULL, SND_FILENAME | SND_ASYNC); } else if (voice_type == 3) { wstring path = CSystem::GetProgramDir() + L"\\music\\waimai_quxiao.wav"; PlaySound(path.c_str(), NULL, SND_FILENAME | SND_ASYNC); } else if (voice_type == 4) { wstring path = CSystem::GetProgramDir() + L"\\music\\waimai_tuikuan.wav"; PlaySound(path.c_str(), NULL, SND_FILENAME | SND_ASYNC); } else if (voice_type == 5) { wstring path = CSystem::GetProgramDir() + L"\\music\\diannei_new.wav"; PlaySound(path.c_str(), NULL, SND_FILENAME | SND_ASYNC); } //8秒内最多播放一次 CSystem::my_sleep(8); } AddStopNum(); } void CVoiceWorker::AddStopNum() { m_nStopNumMutex.lock(); m_nStopNum++; m_nStopNumMutex.unlock(); }