C#

10. C# CONSOLE - 알람프로그램 만들기

지니 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 파일입니다.


일어나세요.exe





반응형