Розробка гнучкої системи інтерактивної взаємодії для підтримки спільного навчання на основі платформи Microsoft.net

Дослідження та представлення моделі інтерактивного засобу навчання, заснованого на платформі Microsoft.net технології ConferenceXP. Розробка програмного середовища, що обслуговує навчальний процес, з метою удосконалення викладання навчального матеріалу.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 22.10.2012
Размер файла 4,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Project Folder -- шлях до файлу з проектом.

Output File -- назва файлу, що створюється при компіляції, -- вихідного файлу. Співпадає з ім'ям проекту.

На вкладці Configuration Properties / Build розглянемо деякі властивості.

Рис. 3.24 Вікно Configuration Properties / Build

Optimize Code -- оптимізація програми, значення цієї властивості true може значно збільшити продуктивність додатку.

Allow Unsafe Code Blocks -- вирішити використання ключового слова unsafe в коді проекту.

Warning Level -- рівень попереджень, що відображаються при компіляції програми.

Treat Warnings As Errors -- сприймати всі попередження як помилки. Якщо оголосити змінну в коді, але ніде не використовувати її, при значенні цієї властивості False додаток скомпілюється, при значенні True -- ні.

Output Path -- шлях, де формується вихідний файл. Тека bin знаходиться усередині теки проекту.

Generate Debugging Information -- виводити інформацію при відладці. Ця властивість повинна бути включена: саме ці повідомлення допомагають виправляти код.

3.9 Компіляція програми

Для перевірки програми використовуються два способи відладки. Перший спосіб -- Build Solution, який перевіряє код і компілює програму, не запускаючи її. Це дуже зручно, коли ви працюєте над окремим модулем великої розробки, і немає можливості перевіряти весь продукт в цілому. Для запуску цього способу вибираємо в головному меню пункт Build --> Build Solution (або поєднання клавіш Ctrl+Shift+B).

Рис. 3.25 Пункт головного меню Build

При цьому з'являється вікно Output, в якому виводиться інформація про всі стадії компіляції.

Рис. 3.26 Вікно Output, додаток не містить помилок

Якщо в коді є помилки, вікно Output виведе повідомлення про помилки, потім з'явиться їх список, причому для відладки достатньо двічі клацнути на відповідній помилці для переходу до потрібної ділянки коду:

Рис. 3.27 Вікно Output, в коді не вистачає фігурної дужки

Інший спосіб компіляції програми -- Debug, при якому перевіряється код, компілюється програма і формується призначений для користувача інтерфейс.

Рис. 3.28 Пункт головного меню Debug

Для запуску цього способу натискаємо клавішу F5. На екрані знову з'являється вікно Output, що інформує нас про хід компіляції. Якщо додаток не містить помилок, то на екрані з'явиться готова форма:

Рис. 3.29 Додаток запущено

При запуску додатку в каталозі bin\Debug усередині каталогку проекту виникає файл FirstForm.exe і файли, необхідні для відладки. Файл FirstForm.exe і є готовий додаток. Готовий додаток для розповсюдження необхідно скомпілювати в режимі Release -- тоді з'явиться каталог bin\Release, яка міститиме тільки FirstForm.exe. Ми можемо просто скопіювати його на інший комп'ютер, і якщо там є .NET Framework, все працюватиме.

У меню Debug також розташовані всі засоби для покрокової відладки коду, які ми вже зустрічали при роботі з консольними додатками.

Яка різниця між компіляціями Build і Debug? Припустимо, що ми розробляємо додаток, який підключатиметься до бази даних на видаленому комп'ютері, недоступному у момент розробки. Додаток одержуватиме дані відразу ж при запуску. Для відладки коду програми зручніше використовувати режим Build, оскільки відладка в режимі Debug супроводжуватиметься повідомленнями про помилки, що виникають із-за неможливості підключення до іншого комп'ютера. Саме підключення також займатиме якийсь час.

4. ФУНКЦІОНАЛЬНІ МОЖЛИВОСТІ ТА ПРОГРАМНА РЕАЛІЗАЦІЯ СИСТЕМИ. МОДУЛЬ ПЕРЕДАЧІ ДАНИХ

4.1 Функціональне призначення та технологічні особливості розробки

Розроблена в результаті виконання дипломної роботи система написана на мові програмування C# для платформи Microsoft .NET і використовує Microsoft Research ConferenceXP в якості платформи для розробки функцій спільної роботи і передачі мультимедійного вмісту в реальному режимі часу. Архітектура, побудована на основі ConferenceXP, призначена для роботи в широкосмугових мережах і надає собою розширювану інфраструктуру з широкими можливостями для спільної роботи і міжособової взаємодії.

Розроблена система - це рішення, реалізоване на основі многоагентного підходу для побудови системи для сумісного навчання. Це дозволяє викладачу використовувати розроблену систему для запуску трансляції своєї презентації в мережу, а студентам, в незалежності від їх місцеположення, переглядати на свої персональних комп'ютерах трансльовані дані.

Для прийому голосової інформації була використана бібліотека voice.dll написана, так само як і основна програма, на мові С#, в якій були надані всі необхідні класи для організації голосового спілкування. А для отримання і перетворення зображення видаленого робочого столу були використані імпортовані стандартні функції бібліотек Windows API user32.dll і gdi32.dll.

Розроблена система надає наступні можливості:

1. захоплення і передача зображення з відеокамери;

2. можливість голосового спілкування;

3. можливість обміну текстовими повідомленнями;

4. захоплення і передача зображення області робочого столу.

4.2 Розробка схеми інформаційних потоків системи

Схема інформаційних потоків розробленої системи наведена на рис. 4.1

Рис.4.1 Схема інформаційних потоків системи

4.3 Інтерфейс та програмні модулі розробленого комплексу

Програмний комплекс «Система конференцій» був розроблений таким чином, що складається з не залежних один від одного блоків (модулів), які можуть працювати як окремо, так і в будь-якому бажаному поєднанні один з одним. Для реалізації задуманого була обрана мова C#, яка є досить простою для вивчення і при цьому містить всі необхідні можливості для реалізації поставленого завдання. Середовищем розробки була вибрана IDE Microsoft Visual Studio 2008 C # Express Edition, яка має усі необхідні інструменти, як для створення інтерфейсу програми, так і для безпосереднього написання вихідного коду класів і бібліотечних функцій.

Модуль відеоконференції

Одразу після запуску модуля відбувається ініціалізація нового вікна і перевіряється, чи було проведене налаштування відеокамери і якщо налаштування не було проведено, вікно приймає наступний вигляд:

Рис. 4.2 Вікно налаштувань відеокамери

Після установки бажаних налаштувань відеокамери вікно приймає наступний вигляд:

Рис. 4.3 Вікно відео конференції

Найбільшим і складним модулем програми «Система конференцій» є модуль «Відео конференція». Цей модуль складається з декількох методів, за допомогою яких проводиться настроювання параметрів, отримання зображення з відеокамери, підключеної до ПК і вивод отриманого зображення на екран, і використовує бібліотеку для роботи з графічними бібліотеками DirectX DShowNet.

Після ініціалізації вікна, виникає подія activated, обробник якого продукує ініціалізацію пристрою необхідного для отримання зображення з відеокамери. Лістинг вихідного коду обробника події activated наведено нижче.

private void MainForm_Activated(object sender, System.EventArgs e)

{

if( firstActive )

return;

firstActive = true;

if( ! DsUtils.IsCorrectDirectXVersion() )

{

MessageBox.Show( this, "DirectX 8.1 NOT installed!", "DirectShow.NET", MessageBoxButtons.OK, MessageBoxIcon.Stop );

this.Close(); return;

}

if( ! DsDev.GetDevicesOfCat( FilterCategory.VideoInputDevice, out capDevices ) )

{

MessageBox.Show( this, "No video capture devices found!", "DirectShow.NET", MessageBoxButtons.OK, MessageBoxIcon.Stop );

this.Close(); return;

}

DsDevice dev = null;

if( capDevices.Count == 1 )

dev = capDevices[0] as DsDevice;

else

{

DeviceSelector selector = new DeviceSelector( capDevices );

selector.ShowDialog( this );

dev = selector.SelectedDevice;

}

if( dev == null )

{

this.Close(); return;

}

if( ! StartupVideo( dev.Mon ) )

this.Close();

}

У першу чергу, проводиться перевірка наявності встановленої графічної бібліотеки Microsoft DirectX версії не нижче 8.1, за допомогою методу IsCorrectDirectXVersion () класу DsUtils, який входить до бібліотеки DShowNet і, якщо версія не відповідає вимогам бібліотеки, то модуль завершує свою роботу, попередньо видавши повідомлення про помилку.

Потім, перевіряється наявність відеокамери підключеної до ПК за допомогою методу GetDevicesOfCat класу DsDev, який входить до бібліотеки DShowNet і, якщо пристрій не буде знайдено, модуль завершить свою роботу, попередньо видавши повідомлення про помилку.

Після перевірки версії DirectX і знаходження підключеної відеокамери проводиться її активація і ініціалізація у програмі модуля.

Наступним важливим методом модуля «Відео конференція» є метод StartupVideo (), який проводить настройку пристрою і видає зображення. І якщо налаштування проходить успішно, то починається сеанс передачі відеозображення.

bool StartupVideo( UCOMIMoniker mon )

{

int hr;

try {

if( ! CreateCaptureDevice( mon ) )

return false;

if( ! GetInterfaces() )

return false;

if( ! SetupGraph() )

return false;

if( ! SetupVideoWindow() )

return false;

hr = mediaCtrl.Run();

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

bool hasTuner = DsUtils.ShowTunerPinDialog( capGraph, capFilter, this.Handle );

toolBarBtnTune.Enabled = hasTuner;

return true;

}

catch( Exception ee )

{

MessageBox.Show( this, "Could not start video stream\r\n" + ee.Message, "DirectShow.NET", MessageBoxButtons.OK, MessageBoxIcon.Stop );

return false;

}

}

Настройка проводиться у кілька етапів. На першому етапі створюється безпосередньо програмний пристрій за допомогою методу CreateCaptureDevice ().

bool CreateCaptureDevice( UCOMIMoniker mon )

{

object capObj = null;

try {

Guid gbf = typeof( IBaseFilter ).GUID;

mon.BindToObject( null, null, ref gbf, out capObj );

capFilter = (IBaseFilter) capObj; capObj = null;

return true;

}

catch( Exception ee )

{

MessageBox.Show( this, "Could not create capture device\r\n" + ee.Message, "DirectShow.NET", MessageBoxButtons.OK, MessageBoxIcon.Stop );

return false;

}

finally

{

if( capObj != null )

Marshal.ReleaseComObject( capObj ); capObj = null;

}

}

На другому етапі проводиться створення використовуваних компонентів COM і отримання інтерфейсів за допомогою запуску методу GetInterfaces ().

bool GetInterfaces()

{

Type comType = null;

object comObj = null;

try {

comType = Type.GetTypeFromCLSID( Clsid.FilterGraph );

if( comType == null )

throw new NotImplementedException( @"DirectShow FilterGraph not installed/registered!" );

comObj = Activator.CreateInstance( comType );

graphBuilder = (IGraphBuilder) comObj; comObj = null;

Guid clsid = Clsid.CaptureGraphBuilder2;

Guid riid = typeof(ICaptureGraphBuilder2).GUID;

comObj = DsBugWO.CreateDsInstance( ref clsid, ref riid );

capGraph = (ICaptureGraphBuilder2) comObj; comObj = null;

comType = Type.GetTypeFromCLSID( Clsid.SampleGrabber );

if( comType == null )

throw new NotImplementedException( @"DirectShow SampleGrabber not installed/registered!" );

comObj = Activator.CreateInstance( comType );

sampGrabber = (ISampleGrabber) comObj; comObj = null;

mediaCtrl = (IMediaControl) graphBuilder;

videoWin = (IVideoWindow) graphBuilder;

mediaEvt = (IMediaEventEx) graphBuilder;

baseGrabFlt = (IBaseFilter) sampGrabber;

return true;

}

catch( Exception ee )

{

MessageBox.Show( this, "Could not get interfaces\r\n" + ee.Message, "DirectShow.NET", MessageBoxButtons.OK, MessageBoxIcon.Stop );

return false;

}

finally

{

if( comObj != null )

Marshal.ReleaseComObject( comObj ); comObj = null;

}

}

На третьому етапі створюється програмний пристрій для захоплення зображення з допомогою методу SetupGraph ().

bool SetupGraph()

{

int hr;

try {

hr = capGraph.SetFiltergraph( graphBuilder );

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

hr = graphBuilder.AddFilter( capFilter, "Ds.NET Video Capture Device" );

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

DsUtils.ShowCapPinDialog( capGraph, capFilter, this.Handle );

AMMediaType media = new AMMediaType();

media.majorType = MediaType.Video;

media.subType = MediaSubType.RGB24;

media.formatType = FormatType.VideoInfo;

hr = sampGrabber.SetMediaType( media );

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

hr = graphBuilder.AddFilter( baseGrabFlt, "Ds.NET Grabber" );

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

Guid cat = PinCategory.Preview;

Guid med = MediaType.Video;

hr = capGraph.RenderStream( ref cat, ref med, capFilter, null, null ); // baseGrabFlt

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

cat = PinCategory.Capture;

med = MediaType.Video;

hr = capGraph.RenderStream( ref cat, ref med, capFilter, null, baseGrabFlt );

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

media = new AMMediaType();

hr = sampGrabber.GetConnectedMediaType( media );

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

if( (media.formatType != FormatType.VideoInfo) || (media.formatPtr == IntPtr.Zero) )

throw new NotSupportedException( "Unknown Grabber Media Format" );

videoInfoHeader = (VideoInfoHeader) Marshal.PtrToStructure( media.formatPtr, typeof(VideoInfoHeader) );

Marshal.FreeCoTaskMem( media.formatPtr ); media.formatPtr = IntPtr.Zero;

hr = sampGrabber.SetBufferSamples( false );

if( hr == 0 )

hr = sampGrabber.SetOneShot( false );

if( hr == 0 )

hr = sampGrabber.SetCallback( null, 0 );

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

return true;

}

catch( Exception)

{

return false;

}

}

На четвертому етапі створюється відео-вікно попереднього перегляду за допомогою методу SetupVideoWindow ().

bool SetupVideoWindow()

{

int hr;

try {

hr = videoWin.put_Owner( videoPanel.Handle );

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

// Встановлення стилю вікна

hr = videoWin.put_WindowStyle( WS_CHILD | WS_CLIPCHILDREN );

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

// Зміна розміру вікна

ResizeVideoWindow();

// Робимо відео-вікно видимим

hr = videoWin.put_Visible( DsHlp.OATRUE );

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

hr = mediaEvt.SetNotifyWindow( this.Handle, WM_GRAPHNOTIFY, IntPtr.Zero );

if( hr < 0 )

Marshal.ThrowExceptionForHR( hr );

return true;

}

catch( Exception ee )

{

MessageBox.Show( this, "Could not setup video window\r\n" + ee.Message, "DirectShow.NET", MessageBoxButtons.OK, MessageBoxIcon.Stop );

return false;

}

}

При запуску модуль знімає зображення з відеокамери, але не передає його до віддаленого комп'ютера. Для того, щоб запустити передачу зображення знятого з відеокамер, необхідно скористатися пунктом меню «Старт» вікна програми модуля. Вихідний код, що відповідає за запуск передачі відео інформації наведено нижче.

private void menuItem1_Click(object sender, System.EventArgs e)

{

int hr;

int size = videoInfoHeader.BmiHeader.ImageSize;

savedArray = new byte[ size + 64000 ];

captured = false;

hr = sampGrabber.SetCallback( this, 1 );

timer1.Enabled = true;

menuItem1.Enabled = false;

menuItem2.Enabled = true;

textBox1.ReadOnly = true;

label2.Text = "Sending ...";

}

private void timer1_Tick(object sender, System.EventArgs e)

{

try

{

int hr;

int size = videoInfoHeader.BmiHeader.ImageSize;

savedArray = new byte[ size + 64000 ];

captured = false;

hr = sampGrabber.SetCallback( this, 1 );

MemoryStream ms = new MemoryStream();

pictureBox.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);

byte[] arrImage = ms.GetBuffer();

ms.Close();

Socket server = new Socket(AddressFamily.InterNetwork,

SocketType.Dgram, ProtocolType.Udp);

IPEndPoint iep = new IPEndPoint(IPAddress.Parse(textBox1.Text), 5020);

server.SendTo(arrImage, iep);

server.Close();

}

catch (Exception){}

}

Модуль передачі зображення робочого столу

Рис. 4.4 Вікно «Презентація робочого столу»

Основною функцією, яка здійснює отримання зображення і направлення його до віддаленого клієнта є функція Capturing_Tick, лістинг якої наведено нижче.

private void Capturing_Tick(object sender, System.EventArgs e)

{

try

{

Bitmap bt = new Bitmap(CaptureScreen.GetDesktopImage());

picScreen.Image = ResizeBitmap(bt, 600, 400 );

MemoryStream ms = new MemoryStream(); picScreen.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);

byte[] arrImage = ms.ToArray();

Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp);

IPEndPoint iep = new IPEndPoint(IPAddress.Parse(textBox1.Text), 5020);

server.SendTo(arrImage,iep);

server.Close();

}

catch (Exception ex)

{

Capturing.Enabled = false;

MessageBox.Show(ex.Message,"Desktop Conference System - Error",MessageBoxButtons.OK,MessageBoxIcon.Error);

menuItem1.Enabled = true;

menuItem2.Enabled = false;

}

}

Функція Capturing_Tick є одним з приватних методів класу вікна Desctop і запускається за допомогою таймера кожні 300 ms. Саме зображення робочого столу виходить шляхом звернення до методу GetDesktopImage () класу CaptureScreen, який в результаті своєї роботи повертає компонент типу Bitmap. Цей компонент приводиться до розміів 600x400 пікселів і утискується в jpeg-картинку. Потім, отримана jpeg-картинка перетворюється в масив байт, який і передається на клієнтський комп'ютер, за допомогою створеного заздалегідь сокета датаграмного типу з використанням протоколу передачі даних UDP на порт 5020. Датаграмний тип сокета не вимагає встановлення підключення, тому дані будуть відправлені в не залежності чи є підключені в даний момент клінти.

При виникненні будь-якої помилки буде виведено вікно з її детальним описом.

Метод GetDesktopImage() класу CaptureScreen, за допомогою якого і робляться знімки робочого столу, має наступний вигляд:

public static Bitmap GetDesktopImage()

{

SIZE size;

IntPtr hBitmap;

IntPtr hDC = PlatformInvokeUSER32.GetDC(PlatformInvokeUSER32.GetDesktopWindow());

IntPtr hMemDC = PlatformInvokeGDI32.CreateCompatibleDC(hDC);

size.cx = PlatformInvokeUSER32.GetSystemMetrics(PlatformInvokeUSER32.SM_CXSCREEN);

size.cy = PlatformInvokeUSER32.GetSystemMetrics(PlatformInvokeUSER32.SM_CYSCREEN);

hBitmap = PlatformInvokeGDI32.CreateCompatibleBitmap(hDC, size.cx, size.cy);

if (hBitmap!=IntPtr.Zero)

{

IntPtr hOld = (IntPtr) PlatformInvokeGDI32.SelectObject(hMemDC, hBitmap);

PlatformInvokeGDI32.BitBlt(hMemDC, 0, 0,size.cx,size.cy, hDC, 0, 0, PlatformInvokeGDI32.SRCCOPY);

PlatformInvokeGDI32.SelectObject(hMemDC, hOld);

PlatformInvokeGDI32.DeleteDC(hMemDC);

PlatformInvokeUSER32.ReleaseDC(PlatformInvokeUSER32.GetDesktopWindow(), hDC);

Bitmap bmp = System.Drawing.Image.FromHbitmap(hBitmap);

PlatformInvokeGDI32.DeleteObject(hBitmap);

GC.Collect();

return bmp;

}

return null;

}

У своїй роботі метод GetDesktopImage () класу CaptureScreen використовує методи класів PlatformInvokeUSER32 і PlatformInvokeGDI32, які насправді виконують відповідні імпортовані функції бібліотек user32.dll і gdi32.dll Windows API.

Імпорт необхідних функцій бібліотек Windows API в мови C # робиться наступним чином:

Для user32.dll:

[DllImport("user32.dll", EntryPoint="GetDesktopWindow")]

public static extern IntPtr GetDesktopWindow();

[DllImport("user32.dll",EntryPoint="GetDC")]

public static extern IntPtr GetDC(IntPtr ptr);

[DllImport("user32.dll",EntryPoint="GetSystemMetrics")]

public static extern int GetSystemMetrics(int abc);

[DllImport("user32.dll",EntryPoint="GetWindowDC")]

public static extern IntPtr GetWindowDC(Int32 ptr);

[DllImport("user32.dll",EntryPoint="ReleaseDC")]

public static extern IntPtr ReleaseDC(IntPtr hWnd,IntPtr hDc);

Для GDI32.dll:

[DllImport("gdi32.dll",EntryPoint="DeleteDC")]

public static extern IntPtr DeleteDC(IntPtr hDc);

[DllImport("gdi32.dll",EntryPoint="DeleteObject")]

public static extern IntPtr DeleteObject(IntPtr hDc);

[DllImport("gdi32.dll",EntryPoint="BitBlt")]

public static extern bool BitBlt(IntPtr hdcDest,int xDest,int yDest,int wDest,int hDest,IntPtr hdcSource,int xSrc,int ySrc,int RasterOp);

[DllImport ("gdi32.dll",EntryPoint="CreateCompatibleBitmap")]

public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);

[DllImport ("gdi32.dll",EntryPoint="CreateCompatibleDC")]

public static extern IntPtr CreateCompatibleDC(IntPtr hdc);

[DllImport ("gdi32.dll",EntryPoint="SelectObject")]

public static extern IntPtr SelectObject(IntPtr hdc,IntPtr bmp);

Модуль голосового чату

Рис. 4.5 Модуль голосового чату

Модуль голосового чату являє собою клієнт-серверну програмну модель. Запущений модуль одночасно виступає як клієнтом, готовим приймати голосову інформацію, так і сервером, готовим її відправляти віддаленному комп'ютеру.

Після запуску голосової сесії відкриваються два порти, зазначених у відповідних елементів TextBox. При цьому процеси отримання і відправки даних виконуються в різних потоках.

Основним методом, який запускає сеанс голосового конференції є приватний метод Start () класу Form_VOIP лістинг якого наведено нижче:

private void Start()

{

Stop();

try

{

WaveFormat fmt = new WaveFormat(44100, 16, 2);

m_Player = new WaveOutPlayer(-1, fmt, 16384, 3, new BufferFillEventHandler(Filler));

m_Recorder = new WaveInRecorder(-1, fmt, 16384, 3, new BufferDoneEventHandler(Voice_Out));

}

catch

{

Stop();

throw;

}

}

Метод Start() для прийому і передачі голосової інформації створює відповідні екземпляри класів бібліотеки Voice, яка здійснює повний контроль над процесами передачі і прийому голосової інформації. При виникненні будь-якої помилки сеанс переривається.

Для прийому голосовой інформації використовується метод Voice_In():

private void Voice_In()

{

byte[] br;

r.Bind(new IPEndPoint(IPAddress.Any, int.Parse(this.textBox2.Text)));

while (true)

{

br = new byte[16384];

r.Receive(br);

m_Fifo.Write(br, 0, br.Length);

}} А для передачи метод Voice_Out():

private void Voice_Out(IntPtr data, int size)

{

if (m_RecBuffer == null || m_RecBuffer.Length < size)

m_RecBuffer = new byte[size];

System.Runtime.InteropServices.Marshal.Copy(data, m_RecBuffer, 0, size);

//Microphone ==> data ==> m_RecBuffer ==> m_Fifo

r.SendTo(m_RecBuffer, new IPEndPoint(IPAddress.Parse(this.textBox1.Text), int.Parse(this.textBox3.Text)));

}

Модуль текстового чату

Рис. 4.6 Вікно текстового чату.

Модуль текстового чату представлен декількома методами класу msg1.

Відправлення та отримання повідомлень йде через сокет, на який надсилаються дані і при необхідності зчитуються. За це відповідають методи класу msg1 Server () і msg_KeyPress().

Лістинг методу Server ():

public void server()

{

try

{

UdpClient sock = new UdpClient(9050);

sock.JoinMulticastGroup(IPAddress.Parse(txt_host.Text), 50);

IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);

byte[] data = sock.Receive(ref iep);

string stringData = Encoding.ASCII.GetString(data, 0, data.Length);

listBox1.Items.Add(iep.Address.ToString() +" :_ "+stringData );

sock.Close();

listBox1.Focus();

msg.Focus();

myth.Abort();

}

catch(Exception){}

}

Після підключення цей метод викликається кожні 300 мс з метою зчитати дані з порту 9050 зазначеного в компоненті TextBox IP-адреса. Після зчитування отриманий масив байт перетворюється в рядок, якияй виводиться на екран за допомогою компонента listBox1, шляхом додавання ще одного рядка.

Лістинг методу відправки повідомлень:

private void msg_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

{

if(e.KeyChar == '\r')

{

try

{

Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp);

IPEndPoint iep = new IPEndPoint(IPAddress.Parse(txt_host.Text), 9050);

byte[] data = Encoding.ASCII.GetBytes(msg.Text);

server.SendTo(data, iep);

server.Close();

msg.Clear();

msg.Focus();

}

catch(Exception){}

}

}

Відправлення повідомлень робиться за допомогою методу SendTo екземпляра класу Socket і передається масивом байт в який перетворюється текстовий рядок за допомогою методу ASCII.GetBytes класу Encoding.

При відключенні сервером виконується наступний код:

private void menuItem2_Click(object sender, System.EventArgs e)

{

timer1.Enabled = false;

txt_host.ReadOnly = false;

menuItem1.Enabled = true;

menuItem2.Enabled = false;

timer1.Enabled = false;

msg.Enabled=false;

try

{

Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp);

IPEndPoint iep = new IPEndPoint(IPAddress.Parse(txt_host.Text), 9050);

byte[] data = Encoding.ASCII.GetBytes("Leave the room.");

server.SendTo(data, iep);

server.Close();

msg.Clear();

msg.Focus();

}

catch(Exception){}

}

Перед перериванням сесії надсилається текстове повідомлення про роз'єднання.

5. ЕКОНОМІЧНЕ ОБҐРУНТУВАННЯ ДОЦІЛЬНОСТІ РОЗРОБКИ ПРОГРАМНОГО ПРОДУКТУ

Функції спільної роботи і інтерактивної взаємодії в реальному режимі часу є важливою частиною багатьох видів людської діяльності, у тому числі і навчання. Проте, часто вони не можуть бути реалізовані, оскільки в умовах середньостатистичного учбового класу недоступні дороге спеціальне устаткування і відповідне програмне забезпечення. У даній дипломній роботі пропонується підхід для досягнення позитивних ефектів, пов'язаних з сумісним навчанням і взаємодією всіх учасників учбового процесу, відносно простим і недорогим способом.

Запропонована система написана на мові програмування C# для платформи Microsoft .NET і використовує Microsoft Research ConferenceXP в якості платформи для розробки функцій спільної роботи і передачі мультимедійного вмісту в реальному режимі часу.

Визначення витрат на створення програмного продукту

Оскільки середа розробки є безкоштовною, витрати на створення програмного продукту складаються з витрат по оплаті праці розробника програми і витрат по оплаті машинного часу при відладці програми:

Зсппзпспп мвспп,

де

Зспп - витрати на створення програмного продукту;

Ззпспп - витрати на оплату праці розробника програми;

Змвспп - витрати на оплату машинного часу;

де

to - витрати праці на підготовку опису завдання;

tа - витрати праці на розробку алгоритму рішення задачі;

tб - витрати праці на розробку блок-схеми алгоритму рішення задачі;

Витрати на оплату праці розробника програми (Ззпспп) визначаються шляхом множення трудомісткості створення програмного продукту на середню годинну оплату програміста (з урахуванням коефіцієнта відрахувань на соціальні потреби):

Ззпспп=t*Tчас.

Розрахунок трудомісткості створення програмного продукту.

Трудомісткість розробки програмного продукту можна визначити таким чином:

t= to+ tа+ tб+ tп+ tд+ tот,

tп - витрати праці на складання програми по готовій блок-схемі;

tд - витрати праці на підготовку документації завдання;

tот - витрати праці на відладку програми на ЕОМ при комплексній відладці завдання.

Складові витрат можна виразити через умовне число операторів Q. У нашому випадку число операторів у відлагодженій програмі приймаємо Q=3500.

Розрахунок витрат праці на підготовку опису завдань

Оцінити витрати праці на підготовку опису завдання не можливо, оскільки це пов'язано з творчим характером роботи, натомість оцінимо витрати праці на вивчення опису завдання з урахуванням уточнення опису і кваліфікації програміста:

to= Q*B/(75…85*K),

где

B - коефіцієнт збільшення витрат праці унаслідок недостатнього опису завдання, уточнень і деякої недоробки, B=1,2…5;

K - коефіцієнт кваліфікації розробника, для тих, що працюють до 2 років K=0,8;

Коефіцієнт В приймаємо рівним 2.

Таким чином отримаємо

to= 3500*2/(78*0,8) = 112,18 (люд-год).

Розрахунок витрат праці на розробку алгоритму.

Витрати праці на розробку алгоритму рішення задачі:

tа = Q/(60…75*K)

tа = 3500/(70*0,8)=62,5 (люд-год).

Розрахунок витрат праці на розробку блок-схеми.

Витрати праці на розробку блок-схеми алгоритму рішення задачі обчислимо таким чином:

tб= Q/(60…75*K)

tб = 3500/(71*0,8)=61,62 (люд-год).

Розрахунок витрат праці на складання програми.

Витрати праці на складання програми по готовій блок-схемі обчислимо таким чином:

tп= Q/(60…75*K)

tп = 3500/(72*0,8)=60,76 (люд-год).

Розрахунок витрат праці на відладку програми.

Витрати праці на відладку програми на ЕОМ при комплексній відладці завдання:

tот=1.5* tAот,

де tAот - витрати праці на відладку програми на ЕОМ при автономній відладці одного завдання;

tAот= Q/(40…50*K)

tAот = 3500/(48*0,8)=91,15 (люд-год)

Звідси tот=1,5*91,15=136,73 (люд-год).

Розрахунок витрат праці на підготовку документації.

Витрати праці на підготовку документації по завданню визначаються:

tд= tдр+ tдо,

де

tдр - витрати праці на підготовку матеріалів в рукопису;

tдо - витрати на редагування, друк і оформлення документації;

tдр= Q/(150…200*K)

tдр = 3500/(180*0,8) = 24,31 (люд-год)

tдо=0,75*tдр

tдо =0,75*24,31=18,23 (люд-год)

Звідси

tд=24,31+18,23=42,54 (люд-год).

Отже, загальну трудомісткість програмного продукту можна розрахувати:

t = 112,18+62,5+61,62+60,76+42,54+136,73 =476,33 (люд-год).

Розрахунок середньої зарплати програміста

Середня зарплата програміста в сучасних ринкових умовах може варіюватися в широкому діапазоні. Для розрахунку візьмемо середню годинну оплату праці, яка складає Тчас.=10 грн/година, що означає 1760 грн/мес при 8-ми годинному робочому дні і 5-ти денному робочому тижню.

Витрати на оплату праці програміста складаються із зарплати програміста і нарахувань на соціальні потреби. Нарахування на соціальні потреби включають:

33,2% - пенсійний фонд;

1,4% - соціальне страхування;

1.6% - відрахування до державного фонду зайнятості на випадок безробіття;

1% - на соціальне страхування від нещасного випадку на виробництві і професійних захворювань, які спричинили втрату працездатності.

Разом нарахування на соціальні потреби складають 37,2%.

Тобто 1760 грн * 37,2%=654,72 грн

Звідси витрати на оплату праці програміста складають:

Ззпспп= (1760+654,72)*3= 7244,16 грн.

Витрати на оплату машинного часу.

Витрати на оплату машинного часу при відладці програми визначаються шляхом множення фактичного часу відладки програми на ціну машино-години орендного часу:

Змвспп час*tЕОМ,

де

Счас - ціна машино-години орендного часу, грн/год;

tЕОМ - фактичний час відладки програми на ЕОМ;

Розрахунок фактичного часу відладки.

Фактичний час відладки обчислимо за формулою:

tеом = tп + tдо + tот ;

tеом =62,5+18,23+136,73 = 217,46 години

Розрахунок ціни машино-години.

Ціну машино-години знайдемо по формулі:

Сгод = Зеомеом,

де

Зеом - повні витрати на експлуатацію ЕОМ на протязі року;

Теом - дійсний річний фонд часу ЕОМ, год/рік.

Розрахунок річного фонду часу роботи ПЕОМ.

Загальна кількість днів в році - 365. Число святкових і вихідних днів - 114(10 святкових і 52*2- вихідні).

Час простою в профілактичних роботах визначається як щотижнева профілактика по 3 години.

Разом річний фонд робочого часу ПЕОМ складає:

Теом = 8*(365-114)-52*3=1852 год.

Розрахунок повних витрат на експлуатацію ЕОМ.

Повні витрати на експлуатацію можна визначити по формулі:

Зеом = (Ззп+ Зам+ Зэл+ Здм+ Зпр+ Зін),

де,

Ззп - річні витрати на заробітну плату обслуговуючого персоналу, грн/рік;

Зам - річні витрати на амортизацію, грн/рік;

Зэл - річні витрати на електроенергію, споживану ЕОМ, грн/рік;

Здм - річні витрати на допоміжні матеріали, грн/рік;

Зпр - витрати на поточний ремонт комп'ютера, грн/рік;

Зін - річні витрати на інші і накладні витрати, грн/рік.

Амортизаційні відрахування.

Річні амортизаційні відрахування визначаються по формулі:

Замбал*Нам,

де Сбал - балансова вартість комп'ютера, грн/шт.;

Нам - норма амортизації, %;

Нам =25%.

Балансова вартість ПЕОМ включає відпускну ціну, витрати на транспортування, монтаж устаткування і його відладку:

Сбал = Срин +Зуст ;

де

Срин - ринкова вартість комп'ютеру, грн/шт.,

Зуст - витрати на доставку і установку комп'ютера, грн/шт;

Комп'ютер, на якому велася робота, був придбаний за ціною

Срин =5000 грн, витрати на установку і наладку склали приблизно 10% від вартості комп'ютера.

Зуст = 10%* Срин

Зуст =0.1*5000=500 грн.

Звідси, Сбал = 5000 +500 =5500 грн./шт.;

а Зам=5500*0,25= 1375 грн/год.

Розрахунок витрат на електроенергію.

Вартість електроенергії, споживаної за рік, визначається по формулі:

Зел = Реом * Теом * Сел * А,

де

Реом - сумарна потужність ЕОМ,

Теом - дійсний річний фонд часу ЕОМ, год/рік;

Сел - вартість 1кВт*год електроенергії;

А - коефіцієнт інтенсивного використання потужності машини.

Згідно технічному паспорту ЕОМ Реом =0.22 кВт, вартість 1кВт*год електроенергії для споживачів Сел =0,2436 грн., інтенсивність використання машини А=0.98.

Тоді розрахункове значення витрат на електроенергію:

Зел = 0.22 * 1852* 0.2436* 0.30 = 29,78 грн.

Розрахунок витрат на поточний ремонт.

Витрати на поточний і профілактичний ремонт приймаються рівними 5% від вартості ЕОМ:

Зтр = 0.05* Сбал

Зтр = 0.05* 5500 = 275 грн.

Розрахунок витрат на допоміжні матеріали.

Витрати на матеріали, необхідні для забезпечення нормальної роботи ПЕОМ, складають близько 1 % від вартості ЕОМ:

Звм =0,01* 5500 =55 грн.

Інші витрати по експлуатації ПЕОМ.

Інші непрямі витрати, пов'язані з експлуатацією ПЕОМ, складаються з вартості послуг сторонніх організацій і складають 5% від вартості ЕОМ:

Зпр = 0,05* 5500 =275 грн.

Річні витрати на заробітну плату обслуговуючого персоналу.

Витрати на заробітну плату обслуговуючого персоналу складаються з основної заробітної плати, додаткової і відрахувань на заробітну плату:

Ззп = Зоснзп +Здопзп +Зотчзп.

Основна заробітна плата визначається, виходячи із загальної чисельності тих, що працюють в штаті:

Зоснзп =12 *іокл,

де

Зіокл - тарифна ставка і-го працівника в місяць, грн;

12 - кількість місяців.

У штат обслуговуючого персоналу повинні входити інженер-електронщик з місячним окладом 1500 грн. і електрослюсар з окладом 1200 грн. Тоді, враховуючи, що даний персонал обслуговує 20 машин, маємо витрати на основну заробітну плату обслуговуючого персоналу, які складуть:

Зоснзп = 12*(1500+1200)/20=1620 грн.

Додаткова заробітна плата складає 60 % від основної заробітної плати:

Здопзп = 0.6 *1620 = 972 грн.

Відрахування на соціальні потреби складають 37,2% від суми додатковою і основною заробітних плат:

Зотчзп = 0,372*(1620 + 972) = 959,04 грн.

Тоді річні витрати на заробітну плату обслуговуючого персоналу складуть:

Ззп = 1620 +972 +959,04 = 3551,04 грн.

Повні витрати на експлуатацію ЕОМ в перебігу року складуть:

Зеом = 3551,04 + 1375+ 29,78 + 55 + 275+ 275= 5560,82 грн.

Тоді ціна машино-години часу, що орендується, складе

Сгод = 5560,82 /1852 = 3 грн.

А витрати на оплату машинного часу складуть:

Змвспп =Сгод*tеом

Змвспп = 3 * 217,46 = 652,38 грн.

Розрахунок загальних витрат.

Зсппзпспп +Змвспп

Зспп = 7244,16 +652,38 = 7896,54 грн.

Тобто собівартість програмного продукту 7896,54 грн.

А зараз визначимо ціну програмного продукту:

Ц = Зспп + Р,

Где Ц - ціна програмного продукту;

Р - 15% від витрат на створення програмного продукту.

Ц = 7896,54 + 1184,48 = 9081,02 грн.

Ціна програмного продукту дорівнює 9081,02 грн.

В порівнянні з іншими програмними продуктами в комплекті з необхідним устаткуванням, які виконують подібні функції та мають вартість орієнтовно $4000, розроблена програма за умови тиражування обійдеться значно дешевше, ніж аналоги.

Економія від використання однієї розробленої програми представлятиме:

8,1 - курс долара Національного банку України

ЕК = $4000 * 8,1 - 9081,02 = 23318,98 грн.

6. ОХОРОНА ПРАЦІ

Охорона праці - це система законодавчих актів, соціально-економічних, організаційних, технічних, гігієнічних та лікувально-профілактичних заходів і засобів, що забезпечують безпеку, збереження здоров'я і працездатності людини в процесі праці.

Задачі охорони праці - забезпечення нормальних, здорових, безпечних умов праці, вивчення причин травматизму, професійних захворювань, пожарів та розробки систем заходів і вимог по їх усуненню.

Законодавство України про охорону праці базується на:

- Конституція України, яка гарантує права громадян на працю, відпочинок, охорону здоров'я, медичну допомогу і страхування;

- Закон України „Про охорону праці”, де вказано, що державна політика в області охорони праці базується на пріоритеті життя і здоров'я людей в умовах їх трудової діяльності. Відповідальність за створення нормальних і безпечних умов труда несе роботодавець незалежно від форми власності підприємства чи установи які здійснюють розробку виробництва та застосування ПЕОМ і ПК;

- Норми штучного та природного освітлення визначені СНиП;

- Закон України „Про забезпечення санітарного та епідемічного благополуччя населення” де вказані основні вимоги гігієни та санітарії;

- Параметри мікроклімату на робочих місцях регламентовані Держстандартом і ДСН;

- Категорія робіт по величині загальних енергозатрат встановлена ДСН;

- Закон України „Про загальнообов'язкове державне соціальне страхування від нещасного випадку на виробництві та професійного захворювання, які спричинили втрату працездатності”, який гарантує право трудящих на соціальний захист і компенсацію постраждалим матеріальних втрат при травмуванні і професійного захворювання;

- Кодекс законів про працю (КЗпП) де викладені окремі вимоги охорони праці;

- Пожежна безпека викладена в законі України „Про пожежну безпеку” і „Правила про пожежну безпеку в Україні”

Крім того є ряд Державних стандартів, правил, норм, інструкцій та інших нормативних документів, регламентуючих питання охорони праці.

6.1 Аналіз небезпечних і шкідливих факторів

Одна з найважливіших задач охорони праці - забезпечення безпеки працюючих, тобто забезпечення такого стану умов праці, при якому виключено дію на працюючих небезпечних і шкідливих виробничих чинників.

Нанесення травми людині в умовах виробництва обумовлене наявністю небезпечних виробничих чинників:

- несприятливі мікрокліматичні умови;

- підвищений рівень шуму;

- недостатнє або надмірне освітлення;

- підвищений рівень рентгенівських випромінювань;

- рівня електромагнітних випромінювань;

- психофізіологічні шкідливі і небезпечні виробничі чинники.

Держстандарт 12.1.005-88 розповсюджується на повітря робочої зони підприємств, встановлює загальні санітарно-гігієнічні вимоги до показників мікроклімату й допустимому вмісту шкідливих речовин в повітрі робочої зони. Вимоги на допустимий вміст шкідливих речовин в повітрі робочої зони розповсюджуються на робочі місця незалежно від їх розташування.

Показники, якими характеризується мікроклімат є: температура повітря, відносна вологість повітря, швидкість руху повітря, інтенсивність теплового випромінювання. Низька температура повітря впливає на оператора, як на організм людини так і на обладнання ПЕОМ. Великий вплив виявляє відносна вологість. При відносній вологості повітря більш 75-80% знижується опір ізоляції, змінюються робочі характеристики елементів, зростає інтенсивність відмов елементів ПЕОМ. Швидкість руху повітря і запиленість повітряного середовища виявляють вплив на функціональну діяльність людини і роботу приладів ПЕОМ.

В холодні періоди року температура повітря, швидкість його руху і відносна вологість повітря відповідно складають: 22-24 С?; 0,1 м/с; 40-60%; в теплі періоди року температура повітря - 23-25 С?; відносна вологість 40-60 %; швидкість руху повітря - 0,1 м/с.

Кондиціювання - це автоматична підтримка в закритих приміщеннях всіх або окремих параметрів повітря з метою забезпечення оптимальних мікрокліматичних умов.

Згідно СНіП 2.04. 05-91 система вентиляції, кондиціювання повітря й повітряного опалення передбачена для суспільних, адміністративно-побутових і виробничих категорій.

Одним з найважливіших фізіологічних механізмів організму є терморегуляція, що залежить від мікрокліматичних умов навколишньої середи. Терморегуляція підтримує тепловий баланс організму людини при різноманітних метеорологічних умовах і важкості роботи, що виконується за рахунок звуження або розширення поверхні кровоносних судин і відповідної роботи потових залоз.

Несприятливий мікроклімат в процесі роботи викликає недомагання і втому організму, порушує нервову і розумову діяльність, сприяє зниженню спостережливості і швидкості реакції.

Психофізіологічні шкідливі і небезпечні виробничі чинники по характеру дії поділяються на фізичні і нервово-психічні перевантаження.

При експлуатації ПЕОМ можуть виникнути негативні явища в організмі людини. Розлади, що виникають в результаті постійного виконання дій, що повторюються, стосуються працівників, що використовують в своїй роботі клавіатуру. При цьому виникає синдром тунельного зап'ястя, який викликає розпухання сухожиль, і що супроводжується постійною біллю при виконанні будь-яких дій, навіть не зв'язаних безпосередньо з професійною діяльністю.

Відповідно діючим нормативним документам (СН 512-78 и ДСанПіН 3.3.007-98) дана площа приміщення розрахована на одну людину 13,0 м2; об'єм -35,1м3. Стіна, стеля, підлога приміщення виготовляються з матеріалів, дозволених для оформлення приміщень санітарно-епідеміологічним наглядом. Підлога приміщення вкрита діелектричним килимком, випробуваним на електричну міцність.

Висота робочої поверхні столу для персонального комп'ютера (ПК) - 690 мм, ширина повинна забезпечувати можливість виконання операцій в зоні досягнення моторного ходу; висота столу 725 мм, ширина 800 мм, глибина 900 мм. Простір для ніг: висота 600 мм, ширина 500 мм, глибина на рівні колін 500 мм, на рівні витягнутої ноги 650мм.

Ширина й глибина сидіння 400 мм, висота поверхні сидіння 450 мм, кут нахилу поверхні від 15? вперед до 5? назад. Поверхня сидіння плоска, передній край закруглений.

Заземлення конструкцій, які знаходяться в приміщенні надійно захищені діелектричними щитками. В приміщенні з ПЕОМ кожен день проводиться вологе прибирання.

В доступних місцях знаходяться аптечки першої медичної допомоги.

Приміщення з ПЕОМ оснащено системою автоматичної пожежної сигналізації, а також устатковане засобами пожежегасіння. Підходи до засобів пожежегасіння вільні. Приміщення має кімнати для відпочинку, приймання їжі, психологічного розвантаження та інші побутові приміщення.

Для забезпечення безпеки життєдіяльності працівників у приміщенні варто підтримувати необхідну якість повітря, тобто оптимальні (у крайньому випадку припустимі) параметри мікроклімату, сталість газового складу й відсутність (у крайньому випадку не вище ГПК) шкідливих домішок у повітрі. Для цього необхідно подавати в ці приміщення певну кількість чистого зовнішнього повітря, потреба в якому регламентується СНіП 2.04.05-91. Для підтримки певних параметрів мікроклімату використовується опалення, вентиляція, кондиціювання, що є найважливішою частиною інженерного спорудження.

Таблиця 6.1 Оптимальні норми температури, відносній вологості й швидкості руху повітря.

Період року

Категорія праці

Температура, С

Відносна вологість повітря, %

Швидкість руху повітря, не більше м/с

Холодний і перехідний

легка

20-23

60-40

0,2

Теплий

легка

22-25

60-40

0,2

При роботі на ПЕОМ людина наражається на шумовий вплив з боку багатьох джерел, наприклад, шум викликаний роботою принтера (70 дБ).

Під впливом шуму відбувається зниження слухової чутливості, що тим значні, ніж вище інтенсивність шуму і більше його експозиція. Діючи на слуховий аналізатор, шум змінює функціональний стан багатьох систем органів людини внаслідок взаємодії між ними через центральну нервову систему. Це виявляє вплив на органи зору людини, вестибулярний апарат і рухові функції, а також призводить до зниження мускульної дієздатності.

При роботі в умовах шуму спостерігається підвищена втомлюваність і зниження дієздатності, погіршується увага і мовна комутація, створюються передумови до помилкових дій працюючих. Являючись причиною частих головних нездужань, нестійкого емоційного стану, шум створює передумови до погіршення психологічного стану. Шкідливий вплив шуму на організм людини, як правило, посилюється за наявності інших шкідливих або несприятливих виробничих чинників.

Джерелами випромінювання електромагнітних полів (ЕМП) в ПЕОМ є система відхилення випромінювання монітору, а також елементи блоків живлення системного модуля, монітору, принтера.

Дія електромагнітних полів на організм людини виявляється у функціональному розладі центральної нервової системи. В результаті тривалого перебування в зоні дії електромагнітних полів наступають передчасна стомлюваність, сонливість або порушення сну, з'являються часті головні болі.

Систематичний вплив на працюючого ЕМП з рівнями, що перевищують допустимі, призводить до порушення стану його здоров'я. При цьому можуть виникати зміни в нервовій, серцево-судинній та інших системах організму людини. При впливі ЕМП значної інтенсивності на організм можуть виникати поразки кришталиків ока, нервово-психічні захворювання і трофічні явища (випадення волосся, ломкість нігтів). Ступінь шкідливого впливу ЕМП на організм людини визначається напругою електромагнітного поля, довжиною хвилі і тривалістю перебування організму в зоні діяльності ЕМП.

Електронно-променеві трубки, які працюють при напрузі понад 6 кВ є джерелами „м'якого” рентгенівського випромінювання. При напрузі понад 10 кВ рентгенівське випромінювання виходить за межі скляного балону і розсіюється в навколишньому просторі виробничого приміщення.

Шкідливий вплив рентгенівських променів зв'язаний з тим, що, проходячи через біологічну тканину, вони викликають в тканині іонізацію молекул тканинної речовини, що може призвести до порушення міжмолекулярних зв'язків, що в свою чергу, призводить до порушення нормальної течії біохімічних процесів і обміну речовин.

Значення освітлення в процесі життєдіяльності і особливо виробничої діяльності сучасного суспільства величезне. Організація раціонального освітлення робочих місць - одне з основних питань охорони праці. Залежно від джерела світла виробниче освітлення може бути трьох видів: природне, штучне і суміщене.

Для природного освітлення характерна висока дифузна (неуважність) денного світла від небозводу, що вельми сприятливе для зорових умов роботи. Природне освітлення підрозділяють на бічне, здійснюване через світлові віконні отвори; верхнє, здійснюване через аераційні і зенітні ліхтарі, отвори в перекриттях; комбіноване - бічне з верхнім. Природне освітлення характеризується тим, що створювана освітленість змінюється в надзвичайно широких межах залежно від часу дня, року, метеорологічних чинників. Тому природне освітлення неможливе кількісно задавати величиною освітленості. Як нормована величина для природного освітлення прийнята відносна величина - коефіцієнт природної освітленості (КЕО), який є вираженим у відсотках відношенням освітленості в даній крапці усередині приміщення до одночасного значення зовнішньої горизонтальної освітленості, створюваної світлом повністю відкритого небозводу, тобто

Штучне освітлення передбачається у всіх виробничих і побутових приміщеннях, де не досить природного світла, а також для освітлення приміщень в нічний час. По функціональному призначенню штучне освітлення підрозділяють на робоче, аварійне, евакуаційне, охоронне, чергове. Робоче освітлення забезпечує зорові умови нормальний роботи, проходу людей і руху транспорту. Аварійне освітлення влаштовують для продовження роботи при раптовому відключенні робочого освітлення. При цьому нормована освітленість повинна складати 5 % від робочого освітлення. Евакуаційне освітлення передбачається для евакуації людей з приміщень при аваріях в місцях, небезпечних для проходу людей, на сходових клітках (повинно бути в приміщеннях не менше 0,5, а на відкритих територіях - не менше 0,2 лк).


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.