При выборе режима РАДИО и ТАЙМЕР зажигается надпись Radio On, обозначающее, что включено радио.
Через 30 минут в режиме таймер включился режим ВКЛ.
Заключение
Было разработано программное обеспечение микропроцессора будильника. ПО полностью соответствует требованием, предъявленным в разделе Требования к программе. В дальнейшем возможно развитие ПО, в частности возможно добавить количество звуковых сигналов с возможностью выбора этих сигналов в качестве основного, а также синхронизация текущего времени с серверами времени в сети Интернет.
Список использованной литературы:
1) Визуальное моделирование с помощью IBM Rational Software Architect и UML. Терри Кватрани, Джим Палистрант. Издательство: КУДИЦ-Пресс, 2007 г.
2) Intuit.ru Курс “Визуальное моделирование в Rational Rose”.
Приложение
Диаграмма Use Case
Activity diagram
Sequence diagram
Collaboration diagram
Statechart diagram
Class diagram
Component diagram
Руководство пользователя
Назначение кнопок:
CLOCK – переход в режим настройки часов
ALARM – переход в режим настройки будильника
HOUR – Настройка часа
MIN – Настройка минут
СБРОС – выключение звукового сигнала будильника
Комбобокс – выбор режима работы устройства
Настройка часов.
При помощи кнопки CLOCK переходим в режим настройки часов. Кнопками HOUR и MIN устанавливаем время. Выйти из режима настройки можно повторным нажатием CLOCK.
Настройка будильника.
При помощи кнопки ALARM переходим в режим настройки часов. Кнопками HOUR и MIN устанавливаем время. Выйти из режима настройки можно повторным нажатием ALARM.
Выбор режима.
С помощью переключателя режимов можно выбрать 4 режима.
ВЫКЛ – отключение будильника
ВКЛ – включение будильника
РАДИО – включение радио
ТАЙМЕР – включение радио, по истечении 30 минут радио отключается, включается будильник.
СБРОС
Сигнал будильника выключается кнопкой СБРОС, через 5 минут сигнал повторится. Чтобы сигнал не повторялся нужно переключателем выбрать режим ВЫКЛ.
Руководство программиста
Проект состоит из 5 файлов.
Form1.cs файл формы программы
Programm.cs файл основного модуля программы
AlarmClock.cs файл содержащий программный код класса AlarmClock
Clock.cs файл содержащий программный код класса Clock
Processor.cs файл содержащий программный код класса Processor
Проект создан в Microsoft Visual Studio 2008 Professional Russian и требуется для компиляции и запуска .Net Framework 2.0
Процесс компиляции:
После открытия файла выбрать конфигурацию Release и нажать кнопку F6.
Листинг
AlarmClock.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace Curs2
{
class AlarmClock
{
private DateTime _time;
public DateTime Time
{
get { return _time; }
}
public AlarmClock()
{
_time = new DateTime(1, 1, 1, 0, 0, 0);
}
public void SetHour()
{
TimeSpan t = new TimeSpan(1, 0, 0);
_time = _time + t;
}
public void SetMinute()
{
TimeSpan t = new TimeSpan(0, 1, 0);
_time = _time + t;
}
public int GetHour()
{
return _time.Hour;
}
public int GetMinute()
{
return _time.Minute;
}
}
}
Clock.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace Curs2
{
class Clock
{
private DateTime _time;
public DateTime Time
{
get { return _time; }
}
public Clock()
{
_time = new DateTime(1, 1, 1, 0, 0, 0);
}
public void SetHour()
{
TimeSpan t = new TimeSpan(1, 0, 0);
_time = _time + t;
}
public void SetMinute()
{
TimeSpan t = new TimeSpan(0, 1, 0);
_time = _time + t;
}
public int GetHour()
{
return _time.Hour;
}
public int GetMinute()
{
return _time.Minute;
}
public void Tick()
{
TimeSpan t = new TimeSpan(0, 0, 0, 0, 500);
_time = _time + t;
}
}
}
Processor.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace Curs2
{
class Processor
{
private bool signal;
private bool radio;
private int mode;
private Clock clock;
private AlarmClock alarmclock;
private int editmode;
private bool reset;
private DateTime timetoreset;
private DateTime timetoalarm;
public Processor()
{
clock = new Clock();
alarmclock = new AlarmClock();
signal = false;
mode = 1;
editmode = 0;
timetoreset = new DateTime();
timetoalarm = new DateTime();
}
public bool isSignal()
{
return signal;
}
public bool isRadio()
{
return radio;
}
private bool bracked = false;
public string Time()
{
string tmp="";
if (editmode == 0)
{
if (clock.GetHour() < 10)
{
tmp = "0" + clock.GetHour().ToString();
}
else tmp = clock.GetHour().ToString();
if (bracked) tmp = tmp + ":";
else tmp = tmp + " ";
if (clock.GetMinute() < 10)
{
tmp = tmp + "0" + clock.GetMinute().ToString();
}
else tmp = tmp + clock.GetMinute().ToString();
if (bracked) bracked = false;
else bracked = true;
}
if (editmode == 1)
{
if (bracked)
{
if (clock.GetHour() < 10)
{
tmp = "0" + clock.GetHour().ToString();
}
else tmp = clock.GetHour().ToString();
tmp = tmp + ":";
if (clock.GetMinute() < 10)
{
tmp = tmp + "0" + clock.GetMinute().ToString();
}
else tmp = tmp + clock.GetMinute().ToString();
}
if (bracked) bracked = false;
else bracked = true;
}
if (editmode == 2)
{
if (bracked)
{
if (alarmclock.GetHour() < 10)
{
tmp = "0" + alarmclock.GetHour().ToString();
}
else tmp = alarmclock.GetHour().ToString();
tmp = tmp + ":";
if (alarmclock.GetMinute() < 10)
{
tmp = tmp + "0" + alarmclock.GetMinute().ToString();
}
else tmp = tmp + alarmclock.GetMinute().ToString();
}
if (bracked) bracked = false;
else bracked = true;
}
return tmp;
}
public void Tick()
{
clock.Tick();
//проверки
if(reset)
{
TimeSpan t=new TimeSpan(0,0,0,0,500);
timetoreset=timetoreset+t;
}
if ((mode==2||mode==4) && clock.Time.Hour == alarmclock.Time.Hour && clock.Time.Minute == alarmclock.Time.Minute && clock.Time.Second==alarmclock.Time.Second)
{
signal = true;
reset=false;
}
if((mode==2&&timetoreset.Minute==5) || (mode ==4 && timetoreset.Minute==5 ))
{
signal=true;
}
if (mode == 4)
{
TimeSpan t=new TimeSpan(0,0,0,0,500);
timetoalarm = timetoalarm + t;
}
if (mode == 4 && timetoalarm.Minute == 30)
{
mode = 2;
radio = false;
}
if (mode == 1)
{
radio = false;
}
}
public void SetMode(int Mode)
{
mode = Mode;
if (mode == 2 || mode == 3) { reset = false; radio = false; }
if (mode == 3) radio = true;
if (mode == 4)
{
radio = true;
DateTime t = new DateTime();
timetoalarm = t;
}
}
public void EditClock()
{
if (editmode == 1) editmode = 0;
else editmode = 1;
}
public void EditAlarmClock()
{
if (editmode == 2) editmode = 0;
else editmode = 2;
}
public void SetHour()
{
if (editmode == 1) clock.SetHour();
if (editmode == 2) alarmclock.SetHour();
}
public void SetMinute()
{
if (editmode == 1) clock.SetMinute();
if (editmode == 2) alarmclock.SetMinute();
}
public void Reset()
{
signal = false;
DateTime t=new DateTime();
timetoreset = t;
reset = true;
}
}
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Media;
namespace Curs2
{
public partial class Form1 : Form
{
Processor processor;
public Form1()
{
InitializeComponent();
processor = new Processor();
timer1.Interval = 500;
// Enable timer.
timer1.Enabled = true;
processor = new Processor();
comboBox1.SelectedIndex = 0;
}
private void button5_Click(object sender, EventArgs e)
{
processor.Reset();
}
private void timer1_Tick(object sender, EventArgs e)
{
processor.Tick();
label1.Text = processor.Time();
if (processor.isSignal() == true) { SystemSounds.Beep.Play(); }
if (processor.isRadio() == true) label2.Text = "Radio On";
else label2.Text = "";
}
private void button1_Click(object sender, EventArgs e)
{
processor.EditClock();
}
private void button2_Click(object sender, EventArgs e)
{
processor.EditAlarmClock();
}
private void button3_Click(object sender, EventArgs e)
{
processor.SetHour();
}
private void button4_Click(object sender, EventArgs e)
{
processor.SetMinute();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
processor.SetMode(comboBox1.SelectedIndex+1);
}
}
}