При интеграции сторонних пультовых программ в «Центр Охраны», иногда стоит задача по конвертации сетевого TСP-порта в последовательный СОМ-порт или эмуляции связки двух СОМ-портов. Существует различные программы для решения этих задач. Рассмотрим на примере использования «Virtual Serial Ports Emulator» (VSPE).
Предварительно скачайте программу VSPE c официального сайта, извлеките из архива и установите (запустив SetupVSPE. msi)
Конвертация TCP-COMПодходит для решения задачи, когда события передаются по TCP-порту, а принять их нужно на источник, в котором можно задать только COM-порт (например, Источник событий Sur-Gard).
Скачайте файл с готовыми настройками и запустите его от имени администратора (для 64х-разрядных систем может появится окно с предложением лицензии, нажать Нет и Ок).
Данные настройки позволяют принять события по сетевому TCP-порту 10025 и передать их на виртуальный COM-25. Соответственно, настраиваем передающую события программу на подключение по порту TCP-10025, а Источник событий в «Центре Охраны» на COM-25.
Важно! Для корректной работы данной конфигурации порт TCP-10025 должен быть ничем более не занят и нигде не использоваться, COM-25 должен отсутствовать в диспетчере устройств.
Изменение номеров портовЕсли вышеуказанные порты заняты, то их можно изменить на другие. Для этого остановите эмуляцию, нажав Стоп. Двойным кликом по второй строке откройте настройку и измените номера портов на необходимые:
Важно! При изменении номера COM-порта обязательно поменять его на такой же в первой строке Connector.
После изменений запустите эмуляцию, нажав Старт. Если все верно внизу появится два «OK»:
Эмуляция COM-COMКогда события передаются через COM-порт, можно создать виртуальную связку. Данный способ избавляет от необходимости устанавливать расширители СОМ-портов в компьютер.
Скачйте файл с готовыми настройками и запустите его от имени администратора (для 64х-разрядных систем может появится окно с предложением лицензии, нажать Нет и Ок).
Данная настройка позволяет передавать данные между СОМ-портами 26 и 27. Соответственно, настраиваем передающую события программу на СОМ-26, а Источник событий в «Центре Охраны» на COM-27.
Важно! Для корректной работы данной конфигурации порты COM-26 и COM-27 должны отсутствовать в диспетчере устройств.
Если указанные порты заняты, можно изменить номера (по аналогии, как описано выше).
Дополнительно
Aveal
Мы уже много раз рассматривали модуль USART различных микроконтроллеров, связывали их с компьютером, но компьютерную часть взаимодействия пока не трогали. И вот пришло время об этом наконец-то поговорить… Итак, в ближайшее время мы будем разбираться, как получить данные от какого-либо внешнего устройства на ПК через com-порт, как их обработать и, если надо, отправить дальше.
В качестве инструмента мы будем применять уже упоминавшуюся на нашем сайте библиотеку Qt (вот тут) и среду программирования Qt Creator. Но в стандартных библиотеках, поставляющихся вместе с Qt Creator (на момент написания статьи), не реализован механизм приема/передачи данных по последовательному порту, поэтому нам придется озадачиться поиском какой-то специально для этого созданной библиотеки.
Из всего, что я встречал на просторах интернета, мне приглянулся модуль QtSerialPort, реализующий как раз-таки интерфейс для работы с последовательными портами, причем как с аппаратными, так и с виртуальными. Вот тут можно прочитать немножко про это дополнение к библиотекам Qt — QtSerialPort- ну и скачать тут тоже можно (и нужно).
И сегодняшняя статья будет посвящена установке этой библиотеки. Казалось бы, на официальном сайте установка библиотеки QtSerialPort описана настолько подробно, насколько вообще возможно, но все-таки есть ряд граблей, на которые можно наступить. Собственно, поэтому сейчас мы рассмотрим подробнейший процесс…
Шаг первый.
Скачиваем архив qt-qtserialport-HEAD с сайта, приведенного выше. Этот шаг даже комментировать больше не надо, так что двигаемся дальше.
Шаг второй.
Надо добавить необходимые пути в системные переменные среды. Для этого жмем правой кнопкой на «Мой компьютер» и заходим в свойства. Далее заходим в дополнительные параметры системы, открывается новое окошко с разными свойствами, и там внизу есть кнопка «Переменные среды». Она то нам и нужна, так что смело жмем. В системных переменных находим Path:
И добавляем туда следующее:
C:\QtSDK\Desktop\Qt\4. 8.1\mingw\bin\;C:\QtSDK\mingw\bin\;C:\QtSDK\Desktop\Qt\4.8.1\
Соответственно путь к установленному Qt Creator’у у каждого свой. У меня вот — C:\QtSDK…
Шаг третий.
Скопируем куда-нибудь скачанную и распакованную папку qt-qtserialport-HEAD, пути к ней не должны содержать русских букв. Это важно. Я скопировал в корень диска С. Лезем в эту папку и довольно быстро натыкаемся на подпапку src. В ней я создал директорию для сборки — serialport-build.
Шаг четвертый.
В меню пуск находим QtSDK, но не запускаем а копаемся там дальше и находим в папке Desktop (все еще в меню пуск) Qt 4.8.1 for Desktop (MinGW). Этот ярлык и надо запустить. Открывается привычная командная строка.
Шаг пятый.
В командной строке переходим в директорию serialport-build, для этого вводим две команды:
Далее необходимо ввести команду:
qmake . ./serialport/serialport.pro
Осталось совсем немного, вводим команду:
mingw32-make
Теперь ждем, а затем вводим команду:
mingw32-make install
Шаг шестой.
В скачанном архиве находим папку qt4support. Тут нас интересует файл serialport.prf. Копируем его вот сюда: С:/QtSDK/Desktop/Qt/4.8.1/mingw/mkspecs/features/serialport.prf.
Шаг седьмой.
Запускаем Qt Creator. Попробуем собрать какой-нибудь пример из поставляющихся вместе с библиотекой QtSerialPort. Жмем открыть проект и выбираем например проект Enumerator (все примеры находятся в папке Examples). В самом Qt Creator’е открываем файл enumerator.pro и дописываем в конец две строки:
CONFIG += serialport LIBS += -lserialport
Вот как выглядит весь файл:
greaterThan(QT_MAJOR_VERSION, 4) { QT += widgets serialport } else { include($QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf) } TARGET = enumerator TEMPLATE = app SOURCES += \ main.cpp CONFIG += serialport LIBS += -lserialport
После этого уже можно смело собирать проект и, если все описанное осуществлено верно, программа соберется и запустится. Вот на этом, собственно, и все, инструкция по установке библиотеки QtSerialPort готова 👍
Архив с библиотекой — qt-qtserialport
РАЗДЕЛ 10. 5: ПРОГРАММИРОВАНИЕ ПОСЛЕДОВАТЕЛЬНЫХ ПОРТОВ В C
В этом разделе показано программирование на C последовательных портов для микросхем 8051/52 и DS89C4xO .
Передача и получение данных в 8051 C
Как мы говорили в предыдущей главе, регистры SFR 8051 доступны непосредственно в компиляторах 8051 C с помощью файла regSl.h. В примерах с 10-15 по 10-19 показано, как запрограммировать последовательный порт в 8051 C. Подключите тренажер 8051 к COM-порту ПК и используйте HyperTerminal для проверки работы этих примеров.
Пример 10-15
Пример 10-16
Пример 10-18
Напишите программу 8051 C для отправки двух разных строк в последовательный порт. Предполагая, что
SW подключен к контакту P2. 0, отслеживаем его состояние и принимаем следующее решение:
SW = 0: отправить свое имя
SW = 1: отправьте свою фамилию
Допустим, XTAL = 11,0592 МГц, скорость передачи данных 9600, 8-битные данные, 1 стоповый бит.
Пример 10-19
Напишите программу 8051 C для отправки двух сообщений «Нормальная скорость» и «Высокая скорость»
на последовательный порт. Предполагая, что SW подключен к контакту P2.0, проверьте его состояние и установите
скорость передачи следующим образом:
SW = 0 28 800 скорость передачи
SW = 1 56K скорость передачи данных
Предположим, что XTAL = 11,0592 МГц для обоих случаев.
Решение:
8051 C Компиляторы и второй последовательный порт
, поскольку многие компиляторы C не поддерживают второй серийный порт DS89C4S новый SFR регистрируется с использованием ключевого слова sfr. В таблице 10-6 и на рисунке 10-12 представлены адреса байтов и битов SFR для DS89.Чип C4xO. Примеры 10-20 и 10-21 показывают C версии примеров 10-11 и 10-13 в разделе 10.4.
Обратите внимание, что в обоих примерах 10-20 и 10-21 мы используем Tinier 1 для установки скорости передачи для второго последовательного порта. После сброса Таймер 1 используется по умолчанию для второго последовательного порта микросхемы DS89C4xO.
Пример 10-20
Напишите программу на C для DS89C4xO, чтобы последовательно передавать букву «A» со скоростью 4800 бод. Используйте второй последовательный порт с 8-битными данными и 1 стоповым битом. Мы можем использовать только Таймер 1 для установки скорости передачи данных. Решение:
Пример 10-21
Запрограммируйте DS89C4xO на C для последовательного приема байтов данных через второй последовательный порт и помещения их в PI. Установите скорость передачи данных 9600, 8-битные данные и 1 стоповый бит. Используйте Таймер 1 для генерации скорости передачи данных.
РЕЗЮМЕ
Эта глава началась с введения в основы последовательной связи. Последовательная связь, при которой данные отправляются по одному биту за раз, используется, когда данные передаются на значительные расстояния, поскольку при параллельной связи, когда данные передаются по одному байту или более за раз, большие расстояния могут вызвать искажение данных. Последовательная связь имеет дополнительное преимущество, позволяя передавать
по телефонным линиям. Последовательная связь использует два метода: синхронный и асинхронный. При синхронной связи данные отправляются блоками байтов; в асинхронном режиме данные отправляются в байтах. Передача данных может быть симплексной (можно отправлять, но не принимать), полудуплексной (можно отправлять и получать, но не одновременно) или полнодуплексной (можно отправлять и получать одновременно). RS232 — это стандарт для разъемов последовательной связи.
Обсуждался UART 8051. Мы показали, как соединить 8051 с разъемом RS232 и изменить скорость передачи данных 8051. Кроме того, мы описали функции последовательной связи 8051 и запрограммировали 8051 для последовательной передачи данных. Мы также показали, как запрограммировать второй последовательный порт DS89.Чип C4xO в сборке и C.
Улучшить статью
Сохранить статью
Нравится Статья
MKS075
master
251 опубликованная статья
Улучшить статью
Сохранить статью
Нравится Статья
Предварительное условие — введение портов в компьютеры
1. Последовательный порт: Последовательный порт — это интерфейс, который используется для подключения последовательных линий для обеспечения последовательной связи. Эти порты могут стыковаться с 9-контактный D-образный разъем, который подключается к линии передачи, называется разъемом DB-9.
Последовательная связь осуществляется по одному проводу, и только один поток данных передается с одного конца на другой. Поэтому, как и при параллельной передаче, при последовательной передаче несоответствие скорости передачи данных не является проблемой. При необходимости длину проволоки можно увеличить. Скорость передачи через последовательный порт сравнительно низкая по сравнению со скоростью передачи через параллельный порт. Последовательные порты обычно используются в модемах, соединительных устройствах, контроллерах, мышах, а также в камерах видеонаблюдения. ДБ-9схема штырькового разъема приведена ниже.
2. Параллельный порт: В отличие от последовательного порта, параллельный порт может одновременно передавать набор из 8 битов по восьми различным проводам. Вот почему это быстрее по сравнению с последовательной связью. В отличие от последовательного порта, он использует 25-контактный разъем, который называется разъемом DB-25. Чтобы исключить перекрестные помехи и ошибки, все битовые потоки должны передавать данные с одинаковой скоростью при параллельной связи.
Разница между последовательным портом и параллельным портом:
S.NO | Последовательный порт | Параллельный порт | Последовательный порт используется для последовательной передачи. | Хотя параллельный порт используется для обеспечения параллельной передачи. |
---|---|---|
2. | Скорость передачи последовательного порта сравнительно низкая по сравнению со скоростью передачи параллельного порта. | Когда скорость передачи параллельного порта выше, чем скорость передачи последовательного порта. |
3. | При передаче данных через последовательный порт используется меньшее количество проводов. |