1.4.2 Встановлення

USB-USB міст може працювати у двох режимах: режим прямого з’єднання та в режимі мережі (див. рис.5).

Для режиму прямого з’єднання передбачене програмне забезпечення, яке додається в комплекті з кабелем. Воно дозволяє пересилати чи копіювати вибрані файли на\або з віддаленого комп’ютера.

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

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

Рис.5. Вибір режиму роботи з програми пересилки


В режимі мережі, є можливість створити малу мережі між двома комп’ютерами. Після створення такої мережі з’являється можливість організації спільних папок, принтерів та доступу до Інтернет.

1.4.2 Використання USB-USB моста

В даній лабораторній роботі використовується PCLinq2 Hi-Speed USB Bridge Cable кабель який дозволяє легко з’єднати два комп’ютери просто приєднавши кабель до кожного з них. Перед тим як розпочати роботу з програмою PCLinq2 (див. рис.7) потрібно в першу чергу запустити програму Setup на кожному з комп’ютерів.

Рис.6. Можливі режими роботи PCLinq2 кабелю

Рис.7. Програма пересилки PCLinq2, яка відповідає за взаємодію та файлову пересилку між двома комп’ютерами по PCLinq2 Hi-Speed USB Bridge Cable кабелю


Додаток 1.

Код програми для роботи із COM портом

using System;

using System.IO;

using System.IO.Ports;

using System.Collections;

using System.Threading;

namespace Termie

{

public sealed class CommPort

 {

 SerialPort _serialPort;

Thread _readThread;

volatile bool _keepReading;

 //begin Singleton pattern

 static readonly CommPort instance = new CommPort();

// Explicit static constructor to tell C# compiler

 // not to mark type as beforefieldinit

 static CommPort()

 {

 }

 CommPort()

 {

_serialPort = new SerialPort();

_readThread = null;

_keepReading = false;

}

public static CommPort Instance

 {

 get

 {

 return instance;

 }

 }

 //end Singleton pattern

//begin Observer pattern

 public delegate void EventHandler(string param);

 public EventHandler StatusChanged;

 public EventHandler DataReceived;

 //end Observer pattern

private void StartReading()

{

if (!_keepReading)

{

_keepReading = true;

_readThread = new Thread(ReadPort);

_readThread.Start();

}

}

private void StopReading()

{

if (_keepReading)

{

_keepReading = false;

_readThread.Join();//block until exits

_readThread = null;

}

}

/// <summary> Get the data and pass it on. </summary>

private void ReadPort()

{

while (_keepReading)

{

if (_serialPort.IsOpen)

{

byte[] readBuffer = new byte[_serialPort.ReadBufferSize + 1];

try

{

// If there are bytes available on the serial port,

// Read returns up to "count" bytes, but will not block (wait)

// for the remaining bytes. If there are no bytes available

// on the serial port, Read will block until at least one byte

// is available on the port, up until the ReadTimeout milliseconds

// have elapsed, at which time a TimeoutException will be thrown.

int count = _serialPort.Read(readBuffer, 0, _serialPort.ReadBufferSize);

String SerialIn = System.Text.Encoding.ASCII.GetString(readBuffer,0,count);

DataReceived(SerialIn);

}

catch (TimeoutException) { }

}

else

{

TimeSpan waitTime = new TimeSpan(0, 0, 0, 0, 50);

Thread.Sleep(waitTime);

}

}

}

/// <summary> Open the serial port with current settings. </summary>

 public void Open()

 {

Close();

 try

 {

 _serialPort.PortName = Settings.Port.PortName;

 _serialPort.BaudRate = Settings.Port.BaudRate;

 _serialPort.Parity = Settings.Port.Parity;

 _serialPort.DataBits = Settings.Port.DataBits;

 _serialPort.StopBits = Settings.Port.StopBits;

 _serialPort.Handshake = Settings.Port.Handshake;

// Set the read/write timeouts

_serialPort.ReadTimeout = 50;

_serialPort.WriteTimeout = 50;

_serialPort.Open();

StartReading();

}

 catch (IOException)

 {

 StatusChanged(String.Format("{0} does not exist", Settings.Port.PortName));

 }

 catch (UnauthorizedAccessException)

 {

 StatusChanged(String.Format("{0} already in use", Settings.Port.PortName));

 }

 catch (Exception ex)

 {

 StatusChanged(String.Format("{0}", ex.ToString()));

 }

 // Update the status

 if (_serialPort.IsOpen)

 {

 string p = _serialPort.Parity.ToString().Substring(0, 1); //First char

 string h = _serialPort.Handshake.ToString();

 if (_serialPort.Handshake == Handshake.None)

 h = "no handshake"; // more descriptive than "None"

 StatusChanged(String.Format("{0}: {1} bps, {2}{3}{4}, {5}",

 _serialPort.PortName, _serialPort.BaudRate,

 _serialPort.DataBits, p, (int)_serialPort.StopBits, h));

 }

 else

 {

 StatusChanged(String.Format("{0} already in use", Settings.Port.PortName));

 }

 }

 /// <summary> Close the serial port. </summary>

 public void Close()

 {

StopReading();

_serialPort.Close();

 StatusChanged("connection closed");

 }

 /// <summary> Get the status of the serial port. </summary>

 public bool IsOpen

 {

 get

 {

 return _serialPort.IsOpen;

 }

 }

 /// <summary> Get a list of the available ports. Already opened ports

 /// are not returend. </summary>

 public string[] GetAvailablePorts()

 {

 return SerialPort.GetPortNames();

 }

 /// <summary>Send data to the serial port after appending line ending. </summary>

 /// <param name="data">An string containing the data to send. </param>

 public void Send(string data)

 {

 if (IsOpen)

 {

 string lineEnding = "";

 switch (Settings.Option.AppendToSend)

 {

 case Settings.Option.AppendType.AppendCR:

 lineEnding = "\r"; break;

 case Settings.Option.AppendType.AppendLF:

 lineEnding = "\n"; break;

 case Settings.Option.AppendType.AppendCRLF:

 lineEnding = "\r\n"; break;

 }

 _serialPort.Write(data + lineEnding);

 }

 }

 }

}


Информация о работе «Інтерфейси автоматизованих систем управління»
Раздел: Информатика, программирование
Количество знаков с пробелами: 16132
Количество таблиц: 1
Количество изображений: 2

Похожие работы

Скачать
126392
20
39

... ї комп’ютерної мережі авіакомпанії «Північна компанія»   2.3.1 Програмний пакет проектування і моделювання гетерогенних комп'ютерних мереж NetCracker Professional Призначення системи: автоматизоване проектування і моделювання локальних і корпоративних комп'ютерних мереж в цілях мінімізації витрат часу і засобів на розробку, верифікацію проектів. Функції: створення проекту мережі; анімаційне ...

Скачать
37889
1
0

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

Скачать
45917
3
2

... фільтрація. Як бачимо повний цикл фільтра складається із трьох напівциклів: фільтрація – часткове випорожнення, фільтрація – часткове випорожнення, фільтрація повне випорожнення. 1.3 Аналіз системи автоматизацї Система автоматизації процесу управління фільтрами працює наступним чином. Інформація про положення пневмоприводів 2в-4в, типу МТМ 810 (див. Додаток В Схема автоматизації функці ...

Скачать
227043
58
10

... Кабінету Міністрів України. В шкідливих умовах праці знаходяться близько 400 чоловік, з них 30 жінок. Висновки Тема даної дипломної роботи: „Розробка заходів щодо удосконалення антикризового управління підприємством (на прикладі КП ”Втп ”ВОДА”)”. Проведені в роботі дослідження дозволяють зробити наступні висновки. В першому теоретичному розділі повністю розкрита сутність обраної теми, досліджено ...

0 комментариев


Наверх