Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

На тему- Дослідження режимів функціонування інтерфейсу USB

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 21.5.2024

PAGE   \* MERGEFORMAT 5

Міністерство освіти І науки України

національний університет “Львівська політехніка”

Кафедра ЕОМ

Лабораторні роботи 5 - 8 з периферійних пристроїв

На тему:

"Дослідження режимів функціонування інтерфейсу USB"

Виконав:

студент групи КІ-31

Громов А. С.

 Прийняв:

Миц А.М.

Львів – 2011


Зміст

1. Мета роботи.......................................................................................................3

2. Короткі теоретичні відомості............................................................................3

3. Хід роботи...........................................................................................................4

4. Висновки.............................................................................................................4

5. Текст програми (у додатку)...............................................................................

6. Демонстрація програми на комп’ютері...........................................................4


1. Мета роботи

Ознайомитися з процесом передачі даних через послідовний інтерфейс USB. Ознайомитися з процесом створення програми передавача даних через послідовний USB інтерфейс. Ознайомитися з процесом створення елементів програми для сканування USB-портів на наявність підключених пристроїв до послідовного USB інтерфейсу. Ознайомитися з процесом створення та налаштування основних параметрів програми передачі даних через послідовний USB інтерфейс. Ознайомитися з процесом формування та передачі посимвольних даних у графічному представленні в схемі кодування NRZI через послідовний USB інтерфейс.

2. Короткі теоретичні відомості

USB (англ. Universal Serial Bus, абревіатура читається ю-ес-бі) — укр. універсальна послідовна шина, призначена для з'єднання периферійних пристроїв. Шина USB представляє собою послідовний інтерфейс передачі даних для середньошвидкісних та низькошвидкісних периферійних пристроїв. Для високошвидкісних пристроїв на сьогодні кращим вважається FireWire. USB-кабель представляє собою дві виті пари: по одній парі відбувається передача даних в кожному напрямку (диференціальне включення), а інша пара використовується для живлення периферійного пристрою (+5 В). Завдяки вбудованим лініям живлення, що запезпечують струм до 500 мА, USB часто дозволяє використовувати пристрої без власного блоку живлення (якщо ці пристрої споживають струм потужністю не більше 500 мА). До одного контролера шини USB можно під'єднати до 127 пристроїв через ланцюжок концентраторів (вони використовують топологію «зірка»). На відміну від багатьох інших стандартних роз’ємів, для USB характерні довговічність та механічна міцність. Інтерфейс USB є послідовною, напівдуплексною, двонаправленою шиною. Шина дозволяє підключити до ПК до 127 фізичних пристроїв. Кожен фізичний пристрій може, у свою чергу, складатися з декількох логічних (наприклад, клавіатура з вбудованим манипулятором-трекболом). Кабельна розводка USB починається з вузла (host). Хост володіє інтегрованим кореневим концентратором (root hub), який надає декілька роз'ємів USB для підключення зовнішніх пристроїв. Потім кабелі йдуть до інших пристроїв USB, які також можуть бути концентраторами, і  функціональних компонентів (наприклад, модем або акустична система). Концентратори часто вбудовуються в монітори і клавіатури (які є типовими

складеними пристроями). Концентратори можуть містити до семи "витікаючих"

портів. Для передачі сигналів шина USB використовує чотирипровідною інтерфейс. Одна пара провідників ("+5В" і "загальний") призначена для живлення периферійних пристроїв з навантаженням до 500 мА. Дані передаються по іншій парі ("D+" "D-"). Для передачі даних використовується диференціальна напруга до 3 В (з метою зниження впливу шуму) і схема кодування NRZI (що позбавляє від необхідності виділяти додаткову пару провідників під тактовий сигнал).

3. Хід роботи

Створюємо новий проект MFC у середовищі Microsoft Visual Studio 2008. Обираємо створення проекту в діалоговому вікні. У вікні вставляю поля (Edit) для вводу імені файлу та введення повідомлення, яке запишеться в цей файл. Також додаю елемент ComboBox, який позволяє обрати необхідний USB-пристрій. Додаю кнопки для оновлення списку USB-пристроїв та для надсилання повідомлення.

4. Висновки

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

5. Текст програми (у додатку)

6. Демонстрація програми на комп’ютері


PP_GROMOV_lab2Dlg.h

// PP_Gromov_lab2Dlg.h : файл заголовка

//

#pragma once

#include "afxwin.h"

// диалоговое окно CPP_Gromov_lab2Dlg

class CPP_Gromov_lab2Dlg : public CDialog

{

// Создание

public:

CPP_Gromov_lab2Dlg(CWnd* pParent = NULL); // стандартный конструктор

// Данные диалогового окна

 enum { IDD = IDD_PP_GROMOV_LAB2_DIALOG };

 protected:

 virtual void DoDataExchange(CDataExchange* pDX); // поддержка DDX/DDV

// Реализация

protected:

HICON m_hIcon;

 // Созданные функции схемы сообщений

 virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

DECLARE_MESSAGE_MAP()

public:

afx_msg void OnBnClickedButton1();

CComboBox combo1;

CString myString;

afx_msg void OnBnClickedButton2();

CString mySource;

};

PP_GROMOV_lab2Dlg.cpp

// PP_Gromov_lab2Dlg.cpp : файл реализации

//

#include "stdafx.h"

#include "PP_Gromov_lab2.h"

#include "PP_Gromov_lab2Dlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// Диалоговое окно CAboutDlg используется для описания сведений о приложении

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Данные диалогового окна

 enum { IDD = IDD_ABOUTBOX };

 protected:

 virtual void DoDataExchange(CDataExchange* pDX);    // поддержка DDX/DDV

// Реализация

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

END_MESSAGE_MAP()

// диалоговое окно CPP_Gromov_lab2Dlg

CPP_Gromov_lab2Dlg::CPP_Gromov_lab2Dlg(CWnd* pParent /*=NULL*/)

: CDialog(CPP_Gromov_lab2Dlg::IDD, pParent)

, myString(_T(""))

, mySource(_T("ENTER_HERE_NAME_OF_FILE.TXT"))

{

 

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CPP_Gromov_lab2Dlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_COMBO1, combo1);

DDX_Text(pDX, IDC_EDIT1, myString);

DDX_Text(pDX, IDC_EDIT2, mySource);

}

BEGIN_MESSAGE_MAP(CPP_Gromov_lab2Dlg, CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

 //}}AFX_MSG_MAP

ON_BN_CLICKED(IDC_BUTTON1, &CPP_Gromov_lab2Dlg::OnBnClickedButton1)

ON_BN_CLICKED(IDC_BUTTON2, &CPP_Gromov_lab2Dlg::OnBnClickedButton2)

END_MESSAGE_MAP()

// обработчики сообщений CPP_Gromov_lab2Dlg

BOOL CPP_Gromov_lab2Dlg::OnInitDialog()

{

CDialog::OnInitDialog();

 // Добавление пункта ''О программе...'' в системное меню.

 // IDM_ABOUTBOX должен быть в пределах системной команды.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

 if (pSysMenu != NULL)

{

 CString strAboutMenu;

 strAboutMenu.LoadString(IDS_ABOUTBOX);

 if (!strAboutMenu.IsEmpty())

 {

  pSysMenu->AppendMenu(MF_SEPARATOR);

  pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

 }

}

 // Задает значок для этого диалогового окна. Среда делает это автоматически,

 //  если главное окно приложения не является диалоговым

SetIcon(m_hIcon, TRUE);   // Крупный значок

SetIcon(m_hIcon, FALSE);  // Мелкий значок

 // TODO: добавьте дополнительную инициализацию

 char driver[3] = "A:";

 for (; driver[0] < 91; driver[0]++)

 if(GetDriveTypeA(driver)==2)

  combo1.AddString((LPCTSTR) driver);

 

 return TRUE;  // возврат значения TRUE, если фокус не передан элементу управления

}

void CPP_Gromov_lab2Dlg::OnSysCommand(UINT nID, LPARAM lParam)

{

 if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

 CAboutDlg dlgAbout;

 dlgAbout.DoModal();

}

 else

{

 CDialog::OnSysCommand(nID, lParam);

}

}

// При добавлении кнопки свертывания в диалоговое окно нужно воспользоваться приведенным ниже кодом,

//  чтобы нарисовать значок. Для приложений MFC, использующих модель документов или представлений,

//  это автоматически выполняется рабочей средой.

void CPP_Gromov_lab2Dlg::OnPaint()

{

 if (IsIconic())

{

 CPaintDC dc(this); // контекст устройства для рисования

 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

 // Выравнивание значка по центру клиентского прямоугольника

 int cxIcon = GetSystemMetrics(SM_CXICON);

 int cyIcon = GetSystemMetrics(SM_CYICON);

 CRect rect;

 GetClientRect(&rect);

 int x = (rect.Width() - cxIcon + 1) / 2;

 int y = (rect.Height() - cyIcon + 1) / 2;

 // Нарисуйте значок

 dc.DrawIcon(x, y, m_hIcon);

}

 else

{

 CDialog::OnPaint();

}

}

// Система вызывает эту функцию для получения отображения курсора при перемещении

//  свернутого окна.

HCURSOR CPP_Gromov_lab2Dlg::OnQueryDragIcon()

{

 return static_cast<HCURSOR>(m_hIcon);

}

void CPP_Gromov_lab2Dlg::OnBnClickedButton1()

{

 char driver[3] = "A:";

 for (; driver[0] < 91; driver[0]++)

 if(GetDriveTypeA(driver)==2)

  combo1.AddString((LPCTSTR) driver);

 

 // TODO: добавьте свой код обработчика уведомлений

}

void CPP_Gromov_lab2Dlg::OnBnClickedButton2()

{

UpdateData();

DWORD dwBytesWritten;

CString My_Data = myString;

CString D1;

combo1.GetLBText(combo1.GetCurSel(), D1);

 int DR_T = GetDriveTypeA(D1);

 if  (DR_T == 2) // якщо флеш-пам'ять, то

{

 CString My_File;

 My_File += D1;   // "H:"

 My_File += "\\";  // "H:\"

 My_File += mySource; // "H:\\MyFile.txt"

 HANDLE hFile;

 hFile=CreateFileA(My_File, GENERIC_READ|GENERIC_WRITE , 0, NULL, OPEN_ALWAYS, 0, NULL);

 if(hFile == INVALID_HANDLE_VALUE)

 {

  //  QMessageBox * err1 = new QMessageBox(QMessageBox::Critical,"Error","Can`t write file");

  //  qWarning("open() - CreateFileA Error code: %ld", GetLastError());

  //err1->show();

  //return;

  MessageBox("Error");

 }

 int len1 = My_Data.GetLength();

 WriteFile(hFile, My_Data, len1, &dwBytesWritten, NULL);

 CloseHandle(hFile);

}

 else

 MessageBox("Error");

 // TODO: добавьте свой код обработчика уведомлений

}




1. Тема 6 Управление товародвижением ~ 2 ч
2. Sport ist f~r jeden Menschen sehr n~tzlich denn in einem gesunden K~rper wohnt ein gesunder Geist
3. Тема урока- Рисунок и план Цель обучения- сформировать умение составлять план и рисунок дать понятия о ма
4. Тема реферата 1 131210929 Ахмед Солиман Мохамед Шериф Эль Сайед Загрязнители атмосфе
5. Электрохимическое шлифование
6. Русский язык и культура речи Русский язык делового общения Риторика для всех специальностей
7. Тема 2 Електромеханічні комутаційні прилади і електронні комутаційні блоки типу Ч П Чп
8.  Особенности структуры характера у осужденных
9. Маркетинг в туристическом бизнесе
10. Курсовая работа- РПС Туреччин
11. Тема- Управление и кибернетика
12. Внутренний контроль как инструмент банковского менеджмента
13. ХристуПою стихи на лире богомольной
14. а І чоловіки і жінки ходили на вулицях з музикою скрипками та цимбалами
15. варианты ответов 1 Т Генеральная уборка должна проводи
16. Тема 1. Сутність і організаційнометодичні основи планування діяльності підприємств
17. Страховые рынки
18. Курсовая работа- Управление процессом производства новой техники
19. Реферат- Архитектор Норман Фостер
20. 1990 по состоянию на 7 октября 2006 года У.html