МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ, МОЛОДІ ТА СПОРТУ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Лабораторна робота (5-8)
з дисципліни
" Периферійні пристрої "
На тему: «Передача даних через USB-порт»
Львів
2012р.
Мета: ознайомитися з процесом передачі даних через послідовний інтерфейс USB.
Теоретичні відомості:
USB (англ. Universal Serial Bus, абревіатура читається ю-ес-бі) — укр. універсальна послідовна шина, призначена для з'єднання периферійних пристроїв. Шина USB представляє собою послідовний інтерфейс передачі даних для середньошвидкісних та низькошвидкісних периферійних пристроїв. Для передачі даних використовується диференціальна напруга до 3 В (з метою зниження впливу шуму) і схема кодування NRZI (що позбавляє від необхідності виділяти додаткову пару провідників під тактовий сигнал). Всі концентратори повинні підтримувати на своїх витікаючих портах пристрої обох типів, не дозволяючи високошвидкісному трафіку досягати низькошвидкісних пристроїв. Слід також відзначити, що різними виробниками пропонувалися специфікації, що описують інтерфейс різних апаратних реалізацій контроллера USB.
USB 1.0
Версія представлена в січні 1995 року.
Технічні характеристики:
високошвидкісне з'єднання — 12 Мбіт/с
максимальна довжина кабеля для високошвидкісного з'єднання — 3 м
низькошвидкісне з'єднання — 1,5 Мбіт/с
максимальна довжина кабеля для низькошвидкісного з'єднання — 5 м
максимальна кількість пристроїв підімкнення (враховуючи концентратори) — 127
можливість підключення пристроїв з різними швидкостями обміну інформацією
напруга живлення для переферійних пристроїв — 5 В
максимальний струм споживання на один пристрій — 500 мA
USB 1.1
Випущено в вересні 1998. Виправлені проблеми виявлені у версії 1.0, в основному пов'язані з концентраторами. Інтерфейс USB 1.1 декларує два режими:
1)низькошвидкісний підканал (пропускна спроможність - 1,5 Мбіт/с), призначений для таких пристроїв, як миші і клавіатури;
2)високопродуктивний канал, що забезпечує максимальну пропускну спроможність 12 Мбіт/с, що може використовуватися для підключення зовнішніх накопичувачів або пристроїв обробки і передачі аудио- і відеоінформації.
USB 2.0
Версія випущена в квітні 2000 року. USB 2.0 відрізняється від USB 1.1 лише швидкістю передачі, яка зросла та незначними змінами в протоколі передачі даних для режиму Hi-speed (480 Мбіт/сек). Існує три швидкості роботи пристроїв USB 2.0:
Low-speed 10—1500 Кбіт/c (використовується для інтерактивних пристроїв: клавіатури, мишки, джойстики)
Full-speed 0,5—12 Мбіт/с (аудіо/відео пристрої)
Hi-speed 25—480 Мбіт/с (відео пристрої, пристрої зберігання інформації)
В дійсності ж хоча швидкість USB 2.0 і може досягати 480Мбит/с, пристрої типу жорстких дисків чи взагалі будь-які інші носії інформації ніколи не досягають її по шині USB, хоча і могли б. Це можна пояснити доволі просто, шина USB має доволі велику затримку між запитом на передачу інформацію і саме самою передачею даних («довгий ping»). Наприклад шина FireWire забезпечує максимальну швидкість у 400 Мбіт/с, тобто на 80Мбіт/с меньше чим у USB, дозволяє досягнути більшої швидкості обміну даними з носіями інформації.
комп'ютера, який в потрібний момент може і не виявитися під руками.
Хід роботи:
Дана програма написана на базі .NET, з використанням мови С++. Для створення проекту використовується Visual Studio 2008. Для створення форми були виконані наступні дії.
1.File -> New -> Project
2. Так як вибрана мова С++ використовуємо компілятор CLR, та шаблон Windows Forms Application, вказується назва проекту та місце його зберігання.
3.Далі використовуємо стандартні налаштування.
4.Потім додаємо на форму потрібні контроли. За допомогою панелі параметри налаштовуємо їх початкові параметри. Подвійним натисканням на певному контролі зявляється можливість написати процедуру на дану подію(так програмуються кнопки для натискання). На подію внесення тексту в textBox та richTextBox, також описуємо певні процедури. І створюємо подібне вікно.
5. Далі пишемо процедури, які розширюють можливості процедур різних подій. В результаті отримуємо програму для передачі данних через порт USB. Текст програми міститься у Додатку.
Висновок: На даній лабораторній роботі, я написав програму яка через порт USB створює файл та дає можливість записувати та дописувати інформацію в файл. Та ознайомився з процесом передачі даних через порт.Додаток 1: Текст програми
#pragma once
#include"windows.h"
namespace USBport {
using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
public ref class Form1 : public System::Windows::Forms::Form{
public:
Form1(void){
InitializeComponent();}
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::RichTextBox^ richTextBox1;
private: System::Windows::Forms::Button^ button3;
public:
private: System::Windows::Forms::Timer^ timer1;
public:
static char* DT=new char[250];
protected:
~Form1()
{if (components){
delete components;}
}private: System::Windows::Forms::ComboBox^ comboBox1;
private: System::Windows::Forms::Button^ button1;
private: System::ComponentModel::IContainer^ components;
protected:
private:
#pragma region Windows Form Designer generated code
void InitializeComponent(void)
#pragma endregion
String^ CharToSysString(char* ch)
{String^ str;
str = gcnew String(ch);
return str;}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
if (File::Exists(comboBox1->Text+"\\"+textBox1->Text)!=true) {
FileStream^ fs=File::Create(comboBox1->Text+"\\"+textBox1->Text);
fs->Close();};
StreamWriter^ sw = File::AppendText(comboBox1->Text+"\\"+textBox1->Text);
for(int nI=0; nI<richTextBox1->Lines->Length; nI++)
sw->Write(richTextBox1->Lines[nI]+"\r\n");
sw->Close();}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
richTextBox1->Clear();
String^ STR="Start";
FileStream^ sw = File::OpenRead(comboBox1->Text+"\\"+textBox1->Text);
array<Byte>^b = gcnew array<Byte>(1024);
UTF8Encoding^ temp = gcnew UTF8Encoding( true );while ( sw->Read( b, 0, b->Length ) > 0 )
richTextBox1->AppendText( temp->GetString( b ) );
sw->Close(); }
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
FileStream^ fs=File::Create(comboBox1->Text+"\\"+textBox1->Text);
fs->Close();
StreamWriter^ sw = gcnew StreamWriter(comboBox1->Text+"\\"+textBox1->Text);
for(int nI=0; nI<richTextBox1->Lines->Length; nI++)
sw->Write(richTextBox1->Lines[nI]+"\r\n");
sw->Close();}
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) {
DT[1]=':';
DT[2]='\0';
String^ str;
str = comboBox1->Text;
comboBox1->Text="";
comboBox1->Items->Clear();
for (int nI=0; nI<25; nI++){
DT[0] = char(65+nI);
if (GetDriveTypeA(DT)==2){
comboBox1->Items->Add(CharToSysString(DT));
if(str==CharToSysString(DT)) comboBox1->Text=str;}}
if((comboBox1->Text=="")&&(comboBox1->Items->Count!=0))
comboBox1->Text = comboBox1->Items[0]->ToString();
if(comboBox1->Text==""){
button1->Enabled=false;
button2->Enabled=false;
button3->Enabled=false;}else if((textBox1->Text=="")||(comboBox1->Text=="")) {
button1->Enabled=false;
button2->Enabled=false;
button3->Enabled=false; }
else {
button3->Enabled=true;
if(richTextBox1->Lines->Length!=0) {
button1->Enabled=true;
button2->Enabled=true;} }}
private: System::Void richTextBox1_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e)
{ if((richTextBox1->Lines->Length==0)||(textBox1->Text=="")||(comboBox1->Text=="")) {
button1->Enabled=false;
button2->Enabled=false; }
else {
button1->Enabled=true;
button2->Enabled=true; }}
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {
if((textBox1->Text=="")||(comboBox1->Text==""))
{
button1->Enabled=false;
button2->Enabled=false;
button3->Enabled=false; }
else {
button3->Enabled=true;
if(richTextBox1->Lines->Length!=0){
button1->Enabled=true;
button2->Enabled=true;}}}};}
Додаток 2: Скріншоти робочої програми:
Рис1: Пошук пристроїв підключених до USB
Рис2: Відкриття файлу Hello.txt
Рис3: Вміст текстового файлу
Рис4: ASCII та NRZI кодування даних
Рис5: Підключення сторонніх пристроїв (не накопичувачів)- USB мишка