Назначение и виды портов ввода-вывода на компьютере

Содержание

Кабельные соединения между последовательными портами

Кабель от одного последовательного порта всегда соединяется с другим последовательным портом. Внешний модем или другое устройство, которое подсоединяется к последовательному порту имеет встроенный в него последовательный порт. Для модемов кабель имеет прямую разводку: контакт 2 идет к контакту 2, и т.д. Модем называется DCE устройством (Data Communications Equipment — оборудование передачи данных), а компьютер называется DTE устройством (Data Terminal Equipment — оборудование отображения данных). Для соединения устройств типа DTE-в-DCE необходимо использовать прямой кабель. Для соединения DTE-в-DTE необходимо использовать нуль-модемный кабель (иначе называемый перевернутый кабель). Существует несколько способов разводки таких кабелей (смотрите примеры в разеделе «Кабели последовательного интерфейса «)

Работа по последовательному интерфейсу имеет свои преимущества. Одна из причин это то, что все сигналы однонаправленные. Если контакт 2 отправляет данные (и не позволяет принимать другие сигналы) то очевидно, что нельзя подсоединить к контакту 2 контакт того же типа. Если вы все же сделаете это, то вы не смоежет не отсылать, ни принимать сигналы по этой линии. Есть два разных способа соединения устройств. Один из них подразумевает соединение двух устройств разного типа, когда контакт №2 одного отсылает данные на контакт №2 второго (который принимает этот сигнал). Это путь, когда вы соединяете компьютер (DTE) и модем (DCE). Также существует второй путь в котором устройства могут быть одного типа: соедините контакт отправки данных №2 с контактом №3, принимающим данные устройства того же типа. Это путь, когда можно соединять два компьютера (DTE-в-DTE). Тип кабеля, использумый в этом случае называется NULL-modem cable (нуль-модемный кабель) поскольку он соединяет два компьютера без использования модемов. Нуль-модемный также иногда называют перевернутым кабелем, т.к. провода между контактами 2 иd 3 идут наоборот. Пример выше приведен для контактов 25-ти контактного разъема, но также соответственно можно использовать и 9-ти контактный разъем.

Будущее портов

Конечно, ни порты, ни разъемы еще очень долгое время никуда не уйдут из компьютерной техники. Безусловно, они будут видоизменяться, совершенствоваться, появятся новые стандарты обмена сигналами. Словом, все будет еще лучше и быстрее. Возможно, осуществится переход от физических портов к виртуальным. Фантазировать на эту тему можно бесконечно долго.

Также наблюдается тенденция постепенного ухода от проводных портов. Уже сегодня производители при первой же возможности стараются внедрить в свои устройства беспроводные порты. Однако разъемы компьютера как таковые, безусловно, сохранятся еще не один десяток лет.

Пример настройки порта и выполнения чтения/записи данных[править]

Код для работы с COM-портом. Многострадальный, соответственно относительно простой и понятный, при этом обходит основные подводные камни. Надеюсь, может быть полезен.

tty.hправить

 #ifndef TTY_H
 #define TTY_H

 #define NOMINMAX //иначе API windows определит макросы min и max, конфликтующие с std::max и std::min в vector
 #include <windows.h>

 #include <vector>
 #include <string>

 using namespace std;

 struct TTY {

 	TTY();
 	virtual ~TTY();

 	bool IsOK() const;
	
 	void Connect(const string& port, int baudrate);
 	void Disconnect();

 	virtual void Write(const vector<unsigned char>& data);
 	virtual void Read(vector<unsigned char>& data);
	
 	HANDLE m_Handle;

 };

 struct TTYException {
 };

 #endif

Вход в настройки BIOS

Чтобы приступить к изменению конфигурации, нужно попасть в соответствующее меню. Его можно открыть во время включения персонального компьютера — до того, как началась загрузка Windows с жесткого диска.

Включите ПК. В случае, если он уже работает: перезагрузите. Дождитесь звукового сигнала спикера: короткий одиночный гудок свидетельствует о том, что все внутренние компоненты, необходимые для работы компьютера, обнаружены.

Теперь необходимо нажать горячую клавишу для вызова конфигурации. Это нужно сделать до смены экрана. Если вы не успели, и началась загрузка Windows — перезагружайтесь. Клавиши зависят от модели установленной материнской платы и версии прошивки BIOS. Узнать ее можно в руководстве пользователя, которое прилагается к материнке, на официальном сайте производителя или посмотреть на экране вашего ПК при его загрузке:

Если вы не знаете модель платы — ничего страшного. Просто попробуйте нажимать следующие клавиши: Tab , Delete , Esc , F1 , F2 , F8 , F10 , F11 , F12 . Одна из них наверняка подойдет.

Необязательно пробовать только 1 вариант за раз. Вы без проблем можете быстро нажать все кнопки из списка. Одна из них подойдет и запустит настройки БИОСа, а остальные будут проигнорированы.

Принцип работы

Последовательный порт компьютера является одним из самых старых и давно используемых портов ввода-вывода. В современных компьютерах последовательный порт можно встретить далеко не всегда, но и сейчас он имеет применение в определенных сферах. Также последовательный порт часто называют портом COM.

Отличительной особенностью последовательного порта является его способ организации передачи данных. В этом плане последовательный порт существенно отличается от параллельного порта, стандарт которого предусматривает наличие 8 линий данных, по которым происходит одновременная передача сигналов. Передача данных через последовательный порт осуществляется всего по двум линиям данных, одна из которых предназначена для передачи в одну сторону, от порта к подключенному к нему устройству, а другая – в обратную сторону. Отсылка данных при этом происходит в последовательном режиме, то есть, в режиме передачи битов друг за другом. Кроме того, COM-port имеет несколько служебных линий данных.

К последовательному порту можно подключать различные периферийные устройства. Чаще всего в качестве подобных устройств служат коммуникационные устройства, такие, как модемы, а также мыши. Кроме того, многие встроенные модемы эмулируют работу с COM port-ом.

Всего, как правило, в системе может быть не более 4 последовательных портов (COM1, COM2, COM3 и COM4). Для каждого из них в системе отводится определенное аппаратное прерывание IRQ, а также определенный адрес в памяти, через который порт может обращаться к центральному процессору. Как правило, под последовательные порты отводятся прерывания IRQ3 и IRQ4. Обычно они относятся соответственно к первому и второму последовательным портам. Порты COM3 и COM4 могут использовать прерывания, установленные соответственно для первого и второго портов.

Так как в персональном компьютере может быть не один COM-port, то в BIOS могут существовать две аналогичные друг другу опции, например, Serial Port 1 и Serial Port 2, предназначенные для настройки двух пар портов (нечетных и четных), расположенных на материнской плате. Опция Serial Port также может иметь и другие названия, например, COM Port, Serial Port Address, Onboard UART или Onboard Serial Port.

Опция Serial Port может принимать различные значения. Наиболее часто используется вариант значения Auto (Автоматический выбор). Выбор подобного варианта позволит BIOS автоматически настроить адрес ввода-вывода и номер прерывания соответствующего порта.

Также пользователь может указать значение адреса ввода-вывода и номер прерывания, выбрав его из набора вариантов. При этом варианты значений указываются в виде адрес/прерывание IRQ, например, 2F8/IRQ3. Как правило, пользователь может выбрать всего из двух значений прерывания – IRQ3 или IRQ4, а каждое прерывание имеет лишь два доступных адреса – 3F8, 3E8 для IRQ4 и 2F8, 2E8 для IRQ3. Таким образом, пользователь имеет всего 4 доступных варианта. В большинстве случаев для первого последовательного порта (COM1) в BIOS по умолчанию используется вариант 3F8/IRQ4. Но обычно оба прерывания (IRQ3 и IRQ4) и соответствующие им адреса ввода-вывода равноценны, и не имеет особого значения, какое из них следует выбрать пользователю.

В некоторых BIOS можно встретить и другие номера прерываний (не IRQ3 и IRQ4). Эта возможность может быть полезной в том случае, если прерывания IRQ3 и IRQ4 оказались заняты какими-то другими устройствами.

Иногда в параметре отсутствует выбор значений прерываний и адресов ввода-вывода, зато есть вариант Enabled (Включено). После выбора данного варианта становятся доступными две вложенные опции – Base I/O Address и Interrupt, которые предназначены соответственно для выбора адресов ввода-вывода и номеров прерываний. Такая конфигурация опции обычно встречается на материнских платах Intel.

Часто в опции Serial Port может встретиться также значение Disabled (Отключить). Установка данного значения позволяет отключить последовательный порт. При отключении port-а ресурсы, используемые им – прерывание и адрес ввода-вывода становятся свободными и могут быть использованы другими устройствами.

Взаимодействие расширенных и клиентских COM-портов

Скорее всего, непонятным остаётся вопрос взаимодействия этих двух вкладок. На самом деле всё просто: расширенные порты позволяют делиться своими com-портами, то есть всей информацией, что доступны с устройств, подключённых к этим портам. Они подключаются к клиентским: тем, которые получают всю необходимую информацию.

Для создания расширенного порта достаточно в первой вкладке нажать кнопку Add и выбрать порт, которым мы делимся:

Расшаренный com-порт windows

Для создания клиентского порта, переходим во вторую вкладку, нажимаем кнопку Add и выбираем сначала порт, который хотим сделать клиентским, а затем адрес компьютера, к порту которого мы хотим подключиться:

Клиентский com-порт windows

Итоги

За бортом осталось ещё много чего интересного на тему COM-портов. Хотя эта технология и отходит на второй план с развитием других интерфейсов для подключения устройств, тем не менее пока что она всё ещё активно используются и знать тонкости её работы очень полезно.

Принцип работы

Последовательный порт компьютера является одним из самых старых и давно используемых портов ввода-вывода. В современных компьютерах последовательный порт можно встретить далеко не всегда, но и сейчас он имеет применение в определенных сферах. Также последовательный порт часто называют портом COM.

Отличительной особенностью последовательного порта является его способ организации передачи данных. В этом плане последовательный порт существенно отличается от параллельного порта, стандарт которого предусматривает наличие 8 линий данных, по которым происходит одновременная передача сигналов. Передача данных через последовательный порт осуществляется всего по двум линиям данных, одна из которых предназначена для передачи в одну сторону, от порта к подключенному к нему устройству, а другая – в обратную сторону. Отсылка данных при этом происходит в последовательном режиме, то есть, в режиме передачи битов друг за другом. Кроме того, COM-port имеет несколько служебных линий данных.

К последовательному порту можно подключать различные периферийные устройства. Чаще всего в качестве подобных устройств служат коммуникационные устройства, такие, как модемы, а также мыши. Кроме того, многие встроенные модемы эмулируют работу с COM port-ом.

Всего, как правило, в системе может быть не более 4 последовательных портов (COM1, COM2, COM3 и COM4). Для каждого из них в системе отводится определенное аппаратное прерывание IRQ, а также определенный адрес в памяти, через который порт может обращаться к центральному процессору. Как правило, под последовательные порты отводятся прерывания IRQ3 и IRQ4. Обычно они относятся соответственно к первому и второму последовательным портам. Порты COM3 и COM4 могут использовать прерывания, установленные соответственно для первого и второго портов.

Так как в персональном компьютере может быть не один COM-port, то в BIOS могут существовать две аналогичные друг другу опции, например, Serial Port 1 и Serial Port 2, предназначенные для настройки двух пар портов (нечетных и четных), расположенных на материнской плате. Опция Serial Port также может иметь и другие названия, например, COM Port, Serial Port Address, Onboard UART или Onboard Serial Port.

Опция Serial Port может принимать различные значения. Наиболее часто используется вариант значения Auto (Автоматический выбор). Выбор подобного варианта позволит BIOS автоматически настроить адрес ввода-вывода и номер прерывания соответствующего порта.

Также пользователь может указать значение адреса ввода-вывода и номер прерывания, выбрав его из набора вариантов. При этом варианты значений указываются в виде адрес/прерывание IRQ, например, 2F8/IRQ3. Как правило, пользователь может выбрать всего из двух значений прерывания – IRQ3 или IRQ4, а каждое прерывание имеет лишь два доступных адреса – 3F8, 3E8 для IRQ4 и 2F8, 2E8 для IRQ3. Таким образом, пользователь имеет всего 4 доступных варианта. В большинстве случаев для первого последовательного порта (COM1) в BIOS по умолчанию используется вариант 3F8/IRQ4. Но обычно оба прерывания (IRQ3 и IRQ4) и соответствующие им адреса ввода-вывода равноценны, и не имеет особого значения, какое из них следует выбрать пользователю.

В некоторых BIOS можно встретить и другие номера прерываний (не IRQ3 и IRQ4). Эта возможность может быть полезной в том случае, если прерывания IRQ3 и IRQ4 оказались заняты какими-то другими устройствами.

Иногда в параметре отсутствует выбор значений прерываний и адресов ввода-вывода, зато есть вариант Enabled (Включено). После выбора данного варианта становятся доступными две вложенные опции – Base I/O Address и Interrupt, которые предназначены соответственно для выбора адресов ввода-вывода и номеров прерываний. Такая конфигурация опции обычно встречается на материнских платах Intel.

Часто в опции Serial Port может встретиться также значение Disabled (Отключить). Установка данного значения позволяет отключить последовательный порт. При отключении port-а ресурсы, используемые им – прерывание и адрес ввода-вывода становятся свободными и могут быть использованы другими устройствами.

Среда разработки

Главный критерий выбора среды разработки — наличие выделенных библиотек для поддержки последовательных портов.

Альтернатива, которая заключается в прямом использовании Win32 API, трудна, неинтуитивна и иногда плохо читается.

Поэтому нет смысла усложнять себе жизнь. Кроме того, многие среды определенно облегчают создание простых, в использовании,  приложений. Это определенно хорошее изменение для кривых консольных программ.

Мы выбрали платформу .NET и Visual C# 2010 для написания своей программы, но ничто не мешает вам написать такую ​​программу, например, на Java. Процесс разработки приложений и даже необходимые функции в Java очень похожи, поэтому проблем с переводом на другой язык возникнуть не должно .

Если кто-то уже имел дело с C, C++ или Java, переход на C# не должен стать большой проблемой. Пользователей, предпочитающих Bascom, Pascal и другие подобные языки, может заинтересовать Visual Basic. Однако мы рекомендуем им C#, потому что он представляет собой гораздо более популярное семейство языков, и в Интернете легче найти по нему помощь.

Visual C# Express 2010 можно бесплатно загрузить с веб-сайта Microsoft , школьники и студенты могут бесплатно загрузить Visual Studio 2010 с MSDNAA. Для остальных лицензия на Visual Studio, к сожалению, платная. Мы же используем экспресс-версию.

После успешной установки откройте Visual C# 2010 Express и выберите:

File->New Project

Появится следующее окно (в полной версии Visual Studio 2010 есть выбор из большего количества типов проектов).

Мы выбираем Windows Forms Aplication Visual C# , а внизу выбираем имя для нашего проекта и нажимаем ОК. Мы должны увидеть представление Designer:

В нем мы увидим, как выглядит наше приложение. Если теперь мы нажмем зеленую кнопку «Play» на верхней панели, или «Debug->Start», мы увидим, что наша программа в настоящее время является лишь пустым окном, и ее единственная функция — 3 кнопки в правом верхнем углу.

Рекомендуется сразу расположить панели параметров так, чтобы работать с программой было удобнее. Сначала нажмите на молоток, отмеченный кружком. Он активирует панель с элементами, которые можно добавить в нашу форму.

Чтобы изменить положение панели, нажмите на нее левой кнопкой мыши и переместите. Мы расположили ее справа, а затем щелкнули на булавке вверху, которая называется «Auto Hide» . Теперь, когда мы наведим указатель мыши на панель справа, открывается панель инструментов.

После щелчка правой кнопкой мыши в окне Form1 и выбора «Properties» появятся параметры объекта. Этой вкладкой мы будем пользоваться часто. Вот почему мы переместили его вправо без автоматического скрытия. А проект перенесли в левую часть экрана. В конечном итоге все выглядит так:

Универсальная последовательная шина

Фактически став наиболее распространённым стандартом последовательного интерфейса подключения цифровой техники, Universal Serial Bus в наши дни известен каждому.

Перенеся долгую историю постоянных крупных изменений, USB – это высокая скорость передачи данных, обеспечение электропитанием беспрецедентное множество периферийных устройств, а также простота и удобство в повседневном использовании.

Разрабатываемый такими компаниями, как Intel, Microsoft, Phillips и US Robotics, интерфейс стал воплощением сразу нескольких технических стремлений:

  • Расширение функционала компьютеров. Стандартная периферия до появления USB была достаточно ограничена в разнообразии и под каждый тип требовался отдельный порт (PS/2, порт для подключения джойстика, SCSI и т. д.). С приходом USB задумывалось, что он и станет единой универсальной заменой, существенно упростив взаимодействие устройств с компьютером. Более того, предполагалось также этой новой для своего времени разработкой стимулировать появление нетрадиционных периферийных устройств.
  • Обеспечить подключение мобильных телефонов к компьютерам. Распространяющая в те годы тенденция перехода мобильных сетей на цифровую передачу голоса выявила, что ни одни из разработанных тогда интерфейсов не мог обеспечить передачу данных и речи с телефона.
  • Изобретение комфортного принципа «подключи и играй», пригодные для «горячего подключения».

Как и в случае с подавляющим большинством цифровой техники, USB-разъем для жесткого диска за долгое время стал полностью привычным для нас явлением. Однако в разные года своего развития этот интерфейс всегда демонстрировал новые вершины скоростных показателей чтения/записи информации.

Версия USB

Описание

Пропускная способность

USB 1.0

Первый релизный вариант интерфейса после нескольких предварительных версий. Выпущен 15 января 1996 года.

  • Режим Low-Speed: 1.5 Мбит/с
  • Режим Full-Speed: 12 Мбит/с

USB 1.1

Доработка версии 1.0, исправляющая множество её проблем и ошибок. Выпущенная в сентябре 1998 года, впервые получила массовую популярность.

USB 2.0

Выпущенная в апреле 2000 года, вторая версия интерфейса располагает новым более скоростным режимом работы High-Speed.

  • Режим Low-Speed: 1.5 Мбит/с
  • Режим Full-Speed: 12 Мбит/с
  • Режим High-Speed: 25-480 Мбит/с

USB 3.0

Новейшее поколение USB, получившее не только обновлённые показатели пропускной способности, но и выпускаемая в синем/красном цвете. Дата появления – 2008 год.

До 600 Мбайт в секунду

USB 3.1

Дальнейшая разработка третьей ревизии, вышедшая в свет 31 июля 2013 года. Делится на две модификации, которые могут обеспечить любой жёсткий диск с USB-разъёмом максимальной скорость до 10 Гбит в секунду.

  • USB 3.1 Gen 1 – до 5 Гбит/с
  • USB 3.1 Gen 2 – до 10 Гбит/с

Помимо этой спецификации, различные версии USB реализованы и под разные типы устройств. Среди разновидностей кабелей и разъёмов этого интерфейса выделяют:

USB 2.0

Стандартный

Mini

Micro

Тип А

Тип В

USB 3.0 уже мог предложить ещё один новый тип – С. Кабели этого типа симметричны и вставляются в соответствующее устройство с любой стороны.

С другой стороны, третья ревизия уже не предусматривает Mini и Micro «подвиды» кабелей для типа А.

Порядок обмена данными по RS-485

Несколько устройств подключаются между собой с помощью цепочки кабелей. Для обмена информации необходим специальный протокол. Чаще всего используется Modbas.

Как откалибровать батарею ноутбука – лучшие программы и стандартные средства системы

Например, есть несколько устройств, которые собирают информацию. Раз в месяц они должны передать все данные в центральный компьютер. Для этого главное устройство оформляет запрос. Каждый терминал имеет свой порядковый номер. Эти цифры будут идти первыми в запросе. Если команда не совпадает с номером терминала, то он будет его игнорировать.

Следующие цифры в запросе отвечают за действие, которое должно произвести устройство. Например, передача информации. Таким образом, команда дойдет до нужного терминала и будет выполнена нужная операция.

В некоторых случаях запрос не доходит до устройства. Происходит сбой на линии или помехи. Для исключения помех используется контрольная сумма. Это некий набор цифр, который присутствует в запросе. Также, он есть и на самом оборудовании. Таким образом можно проверить, достигла ли команда конечной цели.

Интеграция сервиса проверки идентификационных реквизитов юридических лиц по данным ЕГРН и 1С:Предприятие 8

Целью данной работы является автоматизация проверки идентификационных реквизитов юридических и физических лиц.
Для достижения поставленной цели квалификационного исследования необходимо решить следующие задачи:
• выбрать средства автоматизации
• провести интеграцию
• внедрить разработанный инструментарий.
В статье я описываю, как именно разрабатывала базу, где и какой код использовала и для чего.
Данная интеграция эффективна, она позволяет сотруднику значительно сократить время выполнения проверки контрагентов,в добавок она рассчитана на безграничное количество проверок контрагента, следовательно, не придется покупать пакеты с ограниченным количеством проверок.

1 стартмани

Как создать виртуальные порты?

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

Скачайте и установите программу Advanced Virtual COM Port. Установка занимает считаные минуты, при этом на одном из этапов нам предложат драйвер:

Программа для настройки виртуального com-порта в windows

Соглашаемся и нажимаем «Установить». Следует подождать несколько минут — не пугайтесь, если потребуется 5–10 минут. Это нормально.
После установки, заходим в программу и видим главное окно:

Кернел про -для настройки виртуального com-порта в windows

Оно содержит три основных вкладки: Общие (расширенные), клиентские и локальные порты.

Вкладка общие (или расширенные) порты позволяет делиться COM-портами через локальную сеть (LAN) или интернет. Таким образом, данные с виртуальных портов могут быть легко и быстро переданы другим пользователям.
Вкладка клиентские порты позволяют создавать порты на компьютере, которые подключаются к расширенным портам через виртуальный кабель нуль-модема. Стоит сказать, что виртуальный кабель программа предусматривает автоматически.
Вкладка локальные порты даёт возможность просматривать, создавать и удалять все пары виртуальных COM-портов.

Перейдём во вкладку локальные порты и нажмём кнопку Add. Перед нами откроется окно, предлагающее создать пару COM-портов, которые предполагаются быть соединёнными виртуальным нуль-модемным кабелем:

Создание виртуального com-порта в windows7

Жмём ОК. Переходим в Панель управления -> Система -> Диспетчер устройств.
Видим, что наши COM-порты были успешно созданы:

Виртуальные com-порты windows

Порядок обмена данными по RS-485

Несколько устройств подключаются между собой с помощью цепочки кабелей. Для обмена информации необходим специальный протокол. Чаще всего используется Modbas.

Снимаем кулер с процессора – виды креплений вентилятора и их особенности

Например, есть несколько устройств, которые собирают информацию. Раз в месяц они должны передать все данные в центральный компьютер. Для этого главное устройство оформляет запрос. Каждый терминал имеет свой порядковый номер. Эти цифры будут идти первыми в запросе. Если команда не совпадает с номером терминала, то он будет его игнорировать.

Следующие цифры в запросе отвечают за действие, которое должно произвести устройство. Например, передача информации. Таким образом, команда дойдет до нужного терминала и будет выполнена нужная операция.

В некоторых случаях запрос не доходит до устройства. Происходит сбой на линии или помехи. Для исключения помех используется контрольная сумма. Это некий набор цифр, который присутствует в запросе. Также, он есть и на самом оборудовании. Таким образом можно проверить, достигла ли команда конечной цели.

Получение сообщений

В конце концов, у нас осталась самая сложная задача. Нам нужно добавить событие, которое отображает входящее сообщение в TextBox. Начнем с добавления класса события в конструктор из входящих данных в COM-порт:

port.DataReceived += new SerialDataReceivedEventHandler(DataRecievedHandler);

1 port.DataReceived+=newSerialDataReceivedEventHandler(DataRecievedHandler);

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

Если мы добавим в его обработку стандартные команды для добавления текста, мы получим сообщение об ошибке при передаче данных между потоками.

Это потому, что все составные части образуют отдельные потоки. Прямое изменение одним потоком компонента другого, может вызвать ошибки. Чтобы избежать этой проблемы, используйте конструкцию, называемую делегатом, и операцию вызова. Вы можете найти больше информации здесь.

Делегат скрывает в себе призыв к каким-то функциям. Чтобы использовать его, необходимо создать объявление делегата и объект типа объявленного делегата. Мы помещаем код в тело класса, рядом с объявлением переменной port. В нашем случае это будет выглядеть следующим образом:

delegate void Delegat1();
Delegat1 moj_del1;

1
2

delegate voidDelegat1();

Delegat1 moj_del1;

Таким образом, мы объявили делегата, который возвращает значение void и не требует никаких аргументов, и объект типа Delegate1 с именем my_del1. Затем в конструкторе функции следует произвести инициализацию:

moj_del1 = new Delegat1(WpiszOdebrane);

1 moj_del1=newDelegat1(WpiszOdebrane);

EnterOdebrane — это функция, которую мы собираемся создать, и перед ней будет задача добавления полученного текста в текстовое поле. Вы можете увидеть большое сходство с событиями при инициализации делегата. Если бы мы назвали нашего делегата xxxEventHandler вместо Delegate1, то не было бы никакой разницы.

События фактически являются делегатами, ранее созданными в стандартных библиотеках и стандартизированными по возвращаемым значениям и входным аргументам. Кроме того, классы, к которым относятся события, уже реализовали соответствующий код. Благодаря этому событие запускается. Теперь перейдем к созданию функции Check-In:

private void Введите debrated()
{
Добавить цвет(rtbTerminal, port.ReadByte().ToString(«X») + » «, System.Drawing.Color.Blue);
}

1
2
3
4

privatevoidВведитеdebrated()

{

Добавитьцвет(rtbTerminal,port.ReadByte().ToString(«X»)+» «,System.Drawing.Color.Blue);

}

Как видите, она ограничивается добавлением текста соответствующего цвета в терминал. Теперь нам нужно добавить вызов нашему делегату после обнаружения входящего бита:

private void DataRecievedHandler(object sender, SerialDataReceivedEventArgs e)
{
rtbTerminal.Invoke(moj_del1);
}

1
2
3
4

privatevoidDataRecievedHandler(objectsender,SerialDataReceivedEventArgse)

{

rtbTerminal.Invoke(moj_del1);

}

Вызов содержит ранее упомянутое слово Invoke. Он отвечает за безопасный вызов функции делегата, чтобы не мешать работе других потоков. После добавления этой строки у нас есть полностью функциональный терминал. Теперь просто выберите debug-> build solution в верхнем меню, найдите папку проекта на диске, войдите в каталог bin / Release и найдите там exe-файл с нашей программой.

Правильность работы программы проще всего проверить, соединив выводы Tx и Rx устройства, подключенного к порту, между собой.

Мы понимаем, что некоторое из обсуждаемого в статье покажется вам непостижимым, поэтому мы предлагаем вам скачать весь исходный код программы здесь. Кстати, рекомендуем самостоятельно изучать материалы в Интернете, если вы хотите в будущем использовать C# для других своих проектов.