Автор работы: Пользователь скрыл имя, 25 Июня 2013 в 22:01, дипломная работа
Останім часом все ширше стає застосовуватись мережі Інтернет. І якщо років 10 тому аналітики заперечували можливість передачі голосу і відео через мережу Інтернет, то сьогодні їхні погляди на ці речі повністю змінились. Наприклад, з прогнозу дослідницької фірми Analysys у 2003 році на Інтернет-телефонію буде припадати 36% всіх міждународних переговорів.
Великим поштовхом для прогресивного розвитку Інтернет-телефонії стало те що використання мережі Інтернет для передавання голосових і відео повідомлень є досить зручним і є набагато дешевшим чим звичайний телефоний дзвінок.
ІР - телефонія , за допомогою Інтернету дозволяє організовувати дзвінки між комп'ютерами . В ІР - телефонії використовуються канали зв'язку мережі Інтернет. При розмові наші голосові сигнали перетворюються в пакети даних які стискаються
ВСТУП 9
Розділ 1. IP - ТЕЛЕФОНІЯ і SIP ПРОТОКОЛ 13
1.1. Історія розвитку ІР - телефонії 13
1.2. Принцип дії ІР - телефонії 13
1.3. Якість Зв'язку ІР - телефонії 14
1.4. Протокол SIP 16
1.5.Можливості протоколу SIP 17
1.6. Повідомлення SIP 18
1.7. Приклад встановлення з'єднання 20
1.8.Мережа на базі протоколу SIP 22
1.9. Висновок до першого розділу 26
2. ВИБІР ЗАСОБІВ ДЛЯ РЕАЛІЗАЦІЇ ПРОГРАМИ 27
2.1. Вибір мови програмування 27
2.2. Опис мови програмування і її основні елементи 27
2.3. Структура програми 29
2.4. Характеристики Delphi SIP Component 31
2.5. Вимог до апаратних 32
2.6. Призначення програми 32
2.7. Вимоги до програми загалом 32
2.8. Розробка узагальненого алгоритму функціонування програми 33
2.9. Висновок до другого розділу 35
3. ПРОГРАМНА РЕАЛІЗАЦІЯ СИСТЕМИ 36
3.1. Розробка архітектури програмного рішення 36
3.1.1. MainForm - головне вікно 36
3.1.2 DialForm - форма дизайну і розташування всіх компонентів 37
3.1.3 AudiFrm - форма налаштування звуку. 38
3.1.4 AccountsFrm - форма налаштування користувачів. 39
3.2. Проектування інтерфейсу користувача 40
3.2.1 Головне вікно 40
3.2.2 Вікно "Account Settings" 41
3.2.3 Вікно "Audio Settings" 43
3.2.4 Вікно "About" 43
3.2.5 Розробка діаграм функцій для програми. 44
3.3. Тестування роботи програми 51
3.4. Висновок до третього розділу 53
4. ЕКОНОМІЧНА ЧАСТИНА 54
4.1. Розрахунок витрат на розробку та впровадження проектного рішення 54
4.3. Визначення комплексного показника якості 60
4.4. Визначення експлуатаційних витрат 62
4.5. Розрахунок ціни споживання проектного рішення 64
4.6. Визначення показників економічної ефективності 65
4.6.1. Показник конкурентоздатності: 65
4.6.2. Економічний ефект в сфері проектування рішення: 65
4.6.3. Економічний ефект в сфері експлуатації : 65
4.6.4. Оскільки Епр>0 і Еекс>0, розраховуємо додатковий економічний ефект в сфері проектування: 66
4.6.5. Сумарний ефект 66
4.7.Висновок до четвертого розділу 67
ВИСНОВОК 68
Згідно вимогам , що ставиться до функціонування ПЗ , програма повинна приймати вхідні дзвінки , а також уміти робити вихідні дзвінки. Зберігати голосову розмову по бажанню користувача, також по бажанню користувача можна буде зберігати настройки програми ( логін ,пароль і т.д. в зашифрованому вигляді).
Згідно поставлених вимог розроблено алгоритм роботи програми показаний на рис. 2.2.. При запуску програми, програма перевіряє чи є біля виконавчого файлу , файл з настройками (config.ini), якщо файлу немає то вона сама створює його і запускається з конфігурацією по замовчуванню , але якщо ж файл існує , тоді програма зчитує з нього конфігурацію , і запускається уже із заданою конфігурацією, конфігурацію можна міняти після запуску програми, або видалити її.
Рис.2.2.Cхема узагальненого алгоритму роботи пристрою
Для розробки прикладної програми SoftPhone було обрано мову програмування Delphi. Середовище розробки було використане Delphi 7 і додатковий компонент SIP Delphi Component.
Розроблений прикладний програмний продукт складається із 4 вікон ( form ):
1) MainForm - форма головного вікна
2) DialForm - форма дизайну і розташування всіх компонентів.
3) AudiFrm - форма налаштування звуку.
4) AccountsFrm - форма налаштування користувачів.
Основною функцією цієї форми є забезпечення зручного інтерфейсу для користувачів , а також вона виконує автоматичні налаштування при запуску програми.
До складу цієї форми входять такі компоненти і функції:
StatusPopupMenu - це компонент який дозволяє створити меню , в якому можна буде вибирати статус підключення "Online " або "Offline".
StatusImages - компонент в якому зберігаються картинки маленького розмірі для статус меню.
Timer1 - компонент відповідає за обновлення з'єднання кожних 800млс.
ActionList1 - компонент відповідає за функції які виконують кнопки.
FormCloseQuery - функція яка відповідає за закриття форми, а також за вивільнення ресурсів і відключення від сервера.
FormCreate - функція яка відповідає за запуск програми, а також за зчитування налаштувань із файлу налаштувань , якщо налаштування є , то зразу відбувається автоматичне підключення до сервера.
FormShow - функція відповідає за відображення компонентів при запуску програми.
Ця форма є макетом головної форми, на ній розташовані головні компоненти для роботи , кнопки , поля і т.д.
На цій формі є такі компоненти:
LineMemo - компонент відповідає за відображення інформації з'єднання , розмови і т.д.
CallBtn - компонент відповідає за дзвінок.
HangUpBtn - компонент відповідає за розрив дзвінка.
PhoneEdit - компонент відповідає за відображення набраного номера.
RecordBtn - компонент відповідає за запис розмови , а також за її збереження.
Exit - компонент відповідає за вихід з програми.
Clear PhoneEdit - компонент відповідає за очищення набраного номера.
Info - компонент відповідає за відображення інформації про виробника і програмний продукт.
SettingsAcc - компонент відповідає за відображення форми із налаштуваннями користувачів.
SettingsAudi- компонент відповідає за відображення форми із налаштуваннями звуку.
SpeedButton1 - SpeedButton12 - це компонент який є циферблатом , він відповідає за набір цифр і символів.
Ця форма відповідає за налаштування звукових пристроїв, вона автоматично шукає всі звукові пристрої і дає змогу вибрати потрібний.
На цій формі є такі компоненти:
Label2 - компонент відповідає за відображення тексту.
Image1 - Image3 - компонент відповідає за відображення зображень.
waveInDevice - компонент відповідає за відображення всіх пристроїв які приймають звік.
waveOutDevice - компонент відповідає за відображення всіх пристроїв які відтворюють звук.
waveRingDevice - компонент відповідає за відображення стандартних пристроїв звуку.
Ця форма відповідає за налаштування інформації про користувача.
На цій формі є такі компоненти:
AccountList - компонент відповідає за відображення інформації про користувача.
RegisterAction - компонент який відображає форму для додавання нового користувача.
RemoveAction - компонент який видаляє вибраного користувача.
EditAction - компонент за допомогою якого можна змінити інформацію про користувача.
AddAction - компонент який відображає форму для додавання нового користувача.
На формі розміщено компоненти для зручної роботи з програмним продуктом. З верху є меню за допомогою якого ми може перейти в форми налагодження звуку, користувачів, а також дізнатись інформацію про виробника. Нижче розміщене велике поле для відображення інформації про стан дзвінка. З права розміщено циферблат , за допомогою якого ми вводимо номер для дзвінка, введений номер відображається з права. Вище над полем де відображається введений номер , розміщено дві кнопки , які відповідають за приймання або здійснення дзвінка, а також для розриву дзвінка або його відхилення. Під полем де відображається набраний номер розташована кнопка "Записати", вона служить для збереження голосової розмови в *.wav формату. Нижче розташована кнопка "Вихід ", вона призначена для виходу із програми,а поряд з нею також розташована кнопка "Очистити" яка призначена для очистки поля де відображається введений номер. Самого низу відображається статус підключення програми до сервера. На рисунку 3.1 зображена головна форма програми.
Рис.3.1 Головне в SoftPhone
Вікно призначене для налаштування користувача який буде з'єднуватись із сервером. Зверху розміщене стандартне меню для переходу на інші форми. Нижче відображена таблиця в які показано користувачів, а також домен серверу до якого буде встановлене з'єднання. Під цим поле розміщено чотири кнопки:
Кнопки "З'єднати" відповідає за встановлення з'єднання із сервером, вибираємо потрібного нам користувача і нажимаємо на дану кнопку. Кнопка "Додати" відповідає за створення нового користувача. При натисканні на цю кнопку появляється додаткова форма, в котрій є такі поля:
На зображені 3.2 відображена форма для створення користувача.
Рис.3.2 Форма для створення користувача
Кнопка "Змінити" аналогічна до кнопки "Додати", при натисканні на кнопку відображається вікно аналогічне до рисунку 3.2.2. , але в ньому зразу відображається інформація про користувачів які уже були додані , і тоді можна робити зміни в їх обліковому записі.
Кнопка "Видалити" відповідає за видалення користувача. На рисунку 3.3 зображена форма Account Settings
Рис.3.3 Вікно Account Settings
Вікно призначене для налаштування звукових пристроїв. При відкриті форми, автоматично відбувається пошук всіх звукових пристроїв. В цьому вікні відображено 3 DropBox, які відображуються усі звукові пристрої . Перший DropBox відображає усі мікрофони які є на комп'ютері. Другий DropBox відображає усі пристрої які відтворюють звук. Третій DropBox відображає пристрої для прийому і передачі звуку віддаленого співрозмовника.
На рисунку 3.4 зображена форма Audio Settings
Рис.3.4 Вікно Audio Settings
Вікно відображає інформацію про версію програми, а також про розробника!
На рисунку 3.5 зображена форма About
Рис.3.5 Вікно About
Головна форма відповідає за обмін інформацією між іншими формами ,при відображені форми функція FormShow(), перевіряє наявність файлу з конфігураціє, якщо файл існує тоді з нього зчитуються настройки програми і користувача, а якщо ж файлу немає , тоді створюється файл з стандартними налаштуваннями. Також при появі форми активується меню статусу з'єднання і SIP компонент, а також запускається таймер таймер . Нижче приведена блок схема роботи рис 3.6.
Рис.3.6 Cхема функції FormShow().
Таймер відповідає за обновлення з'єднання, обновляється з інтервалом 800 мс.
Функція називається так:
procedure TMainForm.Timer1Timer(Sender: TObject);
На рисунку 3.7 показано властивості таймера.
Рис.3.7 Властивості таймера.
Для здійснення і прийому дзвінка потрібно використати функцію CallActionExecute.
Повна назва функції:
procedure TMainForm.CallActionExecute(
При її натиску спочатку провіряється чи користувач встановив з'єднання і є в режимі з'єднання функцією Assigned(Account), після цього провіряється чи це є дзвінок вхідний чи вихідний Assigned(FLines[FLineIndex]) і залежно від результату, ми здійснюємо дзвінок або його приймаємо. Нижче приведена блок схема роботи рис 3.8.
Рис.3.8 Cхема роботи функції здійснення і приймання дзвінка.
Для розриву або відхилення дзвінка потрібно використати функцію HangUpActionExecute.
Повна назва функції:
TMainForm.HangUpActionExecute(
Дана функція працює лише тоді коли вже здійснено дзвінок або коли є вхідний дзвінок, якщо одна з цих умов є істиною , тоді кнопка дзвінка робиться не активною , що б користувач випадково не натиснув її. Функція SipClient.EndCall відповідає за розрив дзвінка, а HangUpBtn.Enabled відповідає за те що би зробити кнопку дзвінка не активною. Нижче приведена блок схема роботи рис 3.9.
Рис.3.9 Cхема роботи функції розриву і відхилення дзвінка.
Функція StatusBar1DrawPanel відображає статус з'єднання програми із сервером.
Повна назва функції:
procedure
TMainForm.StatusBar1DrawPanel(
Дана
функція провіряє підключення до
сервера, якщо FConnected дорівнює FALSE тоді
в статусі відображається статус
"Offline", якщо ж все таки є
підключення провіряється користувач
Assigned(Account), якщо все добре тоді в
статусі появляється ім'я
Рис.3.10 Cхема роботи функції відображення статусу.
Функція RecordActionExecute записує і зберігає розмову між користувачами.
Повна назва функції:
procedure
TMainForm.RecordActionExecute(
Дана функція відповідає за збереження звукової розмови. Спочатку провіряється чи функція запису звуку вже не використовується Assigned(FRecorder), тоді компонент створює запис FRecorder := SipClient.CreateRecorder, тоді іде провірка на які лінії зв'язку проходить розмова, в наші версії програми вона тільки 1 , після цього іде запис , а назва кнопки змінюється на "Зберегти", коли ще раз нажати на кнопку, створюється діалогове вікно Dlg := TSaveDialog.Create(nil), після його створення перевіряється чи дійсно створилось вікно , якщо так , ми вибираємо місце куди зберегти файл із звуковим записом , після збереження очищаються ресурси. Нижче приведена блок схема роботи рис 3.11.
Рис.3.11 Cхема роботи функції запису і збереження звукової розмови.
Після створення програми потрібно провести її тестування.
Помилки які можуть виникати під час роботи системи:
-
Відсутність підключення до