-
10. C# CONSOLE - 알람프로그램 만들기C# 2017. 2. 4. 00:57반응형
- 이론만 배우기 재미없어서 하는 알람만들기.
안녕하세요.
이번엔 개허접한 알람을 들고왔습니다..;;;
예외처리가 전혀! 안된 프로그램이니까! 많이많이 보완해야합니다;
무튼 이번에 새롭게 나오는게
- Timer
- Media
- Speech
- DateTime
뭐 이정도...??
참고로 아래 예제는 TTS 로 되어있습니다.
TTS 설정은 아래글을 확인하시면 됩니다.
//====================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//Timer 관련 라이브러리
using System.Timers;
//미디어 관련 라이브러리
using System.Media;
//TTS
using Microsoft.Speech;
using Microsoft.Speech.Synthesis;
namespace ConsoleApplication_alarm
{
/*
* 2017-02-03 일 제작
* 1. 미디어파일을 컴파일 하면서 같이 컴파일은 불가한지,?
* 2. 가능하다면 방법
* 3. 불가능하다면 어떻게 처리하는지?
* 4. 미디어파일이 현재 재생중인지 , 일시정지인지, 중지했는지 알 수 있는 방법이 궁금
* 5. 아아 텍스트를 음성으로 읽어주기가 가능한가?? --> TTS 사용
* 6. 콘솔에서 붙여넣기 가능하게... 불편해서..ㅎㅎ
* ---
* 2가지.
*/
class Program
{
//전역변수 설정..
private static Timer aTimer;
private static Timer aTimer2;
public static String RingingTime = "";
//public static SoundPlayer wp = new SoundPlayer("D:/Visual Studio 2015/Projects/ConsoleApplication_alarm/ConsoleApplication_alarm/media/alarm.wav");
public static SoundPlayer wp = new SoundPlayer("../../media/alarm.wav");
public static Boolean SoundPlayerFlag = false;
public static Int64 SoundPlayerFlag2 = 0;
//wav파일이 들어 있는 경로를 설정해주세요
static void Main(string[] args)
{
Console.Title = "일어나세요~";
Console.WriteLine("yyyymmddHHmmss 형식 ");
Console.WriteLine("알람시간을 입력해주세요. : ");
String RequestTime = Console.ReadLine();
//int dsfsdf = Console.Read();
Console.WriteLine(RequestTime);
//데이터 형식 검사 - 일단 패스..ㅋ
RingingTime = RequestTime;
//System.Threading.Thread.Sleep(3000);
Console.WriteLine("---");
//1초마다 반복
aTimer = new System.Timers.Timer(1000);
//1분마다 반복 -- 화면정리
aTimer2 = new System.Timers.Timer(60000);
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += OnTimedEvent;
aTimer.Enabled = true;
aTimer2.Elapsed += OnTimedEvent2;
aTimer2.Enabled = true;
//Console.WriteLine("프로그램을 종료하려면 아무키를 누르세요.");
//Console.ReadLine();
Console.WriteLine("프로그램을 종료하려면 아무키를 누르세요.");
ProjectFinish();
//Console.ReadKey();
}
private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
//Console.WriteLine("The Elapsed event was raised at {0}", e.ToString);
String NowTime = DateTime.Now.ToString("yyyyMMddHHmmss");
//String NowTime = "2";
Console.WriteLine("현재시각 :" + NowTime +" 알람시각 :"+ RingingTime);
if (Convert.ToInt64(NowTime.ToString()) > Convert.ToInt64(RingingTime.ToString()))
{
//Console.Beep();
//소리재생을 위해 namespace를 추가해 줍니다.
if (SoundPlayerFlag2 + 2 < Convert.ToInt64(NowTime.ToString()))
{
Console.WriteLine("FLAG FALSE");
SoundPlayerFlag = false;
}
if (SoundPlayerFlag == false)
{
Console.WriteLine("울어라..");
SoundPlayerFlag = true;
SoundPlayerFlag2 = Convert.ToInt64(NowTime);
//wp.PlaySync();
SpeechSynthesizer ts = new SpeechSynthesizer();
//System.Threading.Thread.Sleep(3000);
// 보이스를 선택하지 않아도 처리됨
//ts.SelectVoice("Microsoft Server Speech Text to Speech Voice (ko-KR, Heami)");
ts.SetOutputToDefaultAudioDevice();
ts.Speak("일어나세요 일어날 시간입니다.");
}
}
}
private static void OnTimedEvent2(Object source, ElapsedEventArgs e)
{
Console.Clear();
}
public static void ProjectFinish()
{
//Console.WriteLine("프로그램을 종료하려면 아무키를 누르세요.");
ConsoleKeyInfo cki;
cki = Console.ReadKey(true);
switch (cki.Key)
{
/*
case ConsoleKey.Enter:
Console.WriteLine("3초후 종료됩니다.");
//타이머 종료?
aTimer.Enabled = false;
wp.Stop();
System.Threading.Thread.Sleep(3000);
return;
*/
default:
//그 이외의 키 눌렀을때 반응
Console.WriteLine("3초후 종료됩니다.");
//타이머 종료?
aTimer.Enabled = false;
//wp.Stop();
System.Threading.Thread.Sleep(3000);
Console.WriteLine("---");
return;
//return;
}
}
}
}
//====================================================
일단, 프로그램 소스는 저게 전부입니다;;;
나중에 보면 얼마나 쪽팔릴까???
exe 파일과 alarm.wav 파일입니다.
반응형'C#' 카테고리의 다른 글
C# microsoft.mshtml.dll DOWNLOAD (0) 2017.02.04 C# SHDocVw.dll download (0) 2017.02.04 9. C# Console - TTS 서비스 이용하기. (1) 2017.02.04 8. C# 상수(데이터 타입) (0) 2017.02.01 7. C#배포시 주의사항 (0) 2017.01.28