Как LabVIEW реализует высокопроизводительный помощник последовательного порта — с помощью кода

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

1 Как реализовать высокопроизводительный приемопередатчик последовательного порта

Мы знаем, что платы встроенных систем, таких как однокристальные микрокомпьютеры, ARM и FPGA, в основном имеют последовательные порты, потому что протокол прост и зрел, и есть много готовых вещей, которые можно использовать для справки. Чтобы получить информацию или данные из встроенной системы через последовательный порт на ПК, LabVIEW обычно имеет несколько вариантов под Windows:

  1. Используйте функцию интерфейса работы с последовательным портом, предоставляемую самой средой разработки;
  2. Используйте элемент управления ActiveX MSComm;
  3. Прямой вызов Windows API для реализации операции с последовательным портом.

Относительно сложнее напрямую вызывать API Windows для реализации операции с последовательным портом.Необходимо быть знакомым с базовым API Windows, а инкапсуляция этих API реализуется элементом управления MSComm. Кроме того, интерфейс VISA в LabVIEW был введен ранее для работы с последовательным портом, а эффективность отправки и приема относительно низкая, поэтому для реализации высокопроизводительной программы последовательного порта выбран элемент управления MSComm.

2. Что такое MSComm

Каждый элемент управления MSComm соответствует последовательному порту, и для доступа к нескольким последовательным портам необходимо использовать несколько элементов управления MSComm.

MSComm — это элемент управления ActiveX, который может управлять отправкой и получением данных последовательного порта на ПК и поддерживает режим запроса и режим прерывания (называемый в Windows режимом, управляемым событиями).

  • Режим прерывания: когда на последовательный порт поступают данные или данные записываются в буфер последовательного порта, срабатывает прерывание, и OnComm может использоваться для захвата события и его обработки. Этот метод дает своевременный ответ и более эффективен, чем опрос.
  • Метод запроса: на самом деле он по-прежнему управляется событиями, и вам нужно проверить значение атрибута CommEvent, чтобы запросить событие.

2.1 Общие свойства MSComm

  • CommPort: установка и возврат номера порта связи.
  • Настройки: установка и возврат скорости передачи данных, четности, битов данных, стоповых битов в виде строк.
  • PortOpen: установка и возврат состояния коммуникационного порта. Порты также можно открывать и закрывать.
  • Ввод: возвращает и удаляет символы из приемного буфера.
  • InputLen: устанавливает и возвращает количество символов, которые свойство ввода считывает из приемного буфера.
  • Вывод: записать строку в буфер передачи
  • RThreshold: установите и верните количество символов, которое нужно получить, прежде чем установить для свойства CommEvent значение comEvReceive и создать OnComm.
  • CTSHolding: определите, можно ли отправлять данные, запросив состояние линии CTS.
  • SThreshold: установите и верните минимальное количество символов, разрешенное в буфере передачи, перед установкой для свойства CommEvent значения comEvSend и созданием события OnComm.
  • CDHolding: определить, есть ли текущая передача, запросив состояние линии CD.
  • DSRHolding: определить состояние линии DSR.
  • EOFEnable: определяет, ищет ли элемент управления MSComm конец файла (EOF) во время ввода.

2.2 События управления MSComm

Элемент управления MSCOMM использует только одно событие OnComm и использует семнадцать значений атрибута CommEvent, чтобы различать различные возможности срабатывания. В основном это следующие:

  • Когда CommEvent=1: количество символов в буфере передачи меньше порогового значения (настраиваемое значение атрибута).
  • Когда CommEvent=2: символы Rthreshold (устанавливаемое значение атрибута) принимаются в приемный буфер, и процесс получения данных может быть записан с помощью этого события
  • Когда CommEvent=3: изменяется строка CTS
  • Когда CommEvent=4: изменяется строка DSR
  • Когда CommEvent=5: изменяется строка CD
  • Когда CommEvent=6: Обнаружен сигнал вызова

Остальные десять ситуаций генерируются, когда возникает ошибка связи, то есть коды ошибок. Для получения более подробной информации о MSComm посетите веб-сайт Microsoft msdn.

Регистрация трех элементов управления MSComm

При использовании элемента управления MSComm в LabVIEW вам необходимо импортировать --ActiveX Control в палитру, чтобы увидеть элемент управления MSComm. Однако, если есть проблема с регистрацией элемента управления MSComm на ПК с Windows, ее нельзя увидеть при импорте, поэтому сначала необходимо загрузить и зарегистрировать элемент управления MSComm.

Сначала поместите загруженный файл mscomm32.ocx в папку C:\windows\system32, а затем во время работы введите Regsvr32 C:\windows\system32, и появится окно с сообщением об успешной регистрации:

Затем введите команду Regedit, чтобы открыть реестр во время работы, найдите HKEY_CLASSES_ROOT\Licenses, добавьте в него первичный ключ, щелкните правой кнопкой мыши и выберите «Создать» — «Элемент», а затем назовите элемент 4250E830-6AC2-11cf-8ADB. -00AA00C00905, справа щелкните правой кнопкой мыши «По умолчанию» и выберите «Изменить», а затем введите значение kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun. Регистрирует элемент управления mscomm32.ocx для предотвращения ошибок «Несанкционированное использование класса» при импорте в LabVIEW.
После завершения регистрации перезагрузите компьютер, после чего вы увидите элемент управления MSComm (третий на картинке):

Четыре LabVIEW использует управление MSComm для реализации программы последовательного порта.

Как упоминалось выше, общее приложение может быть реализовано непосредственно с помощью функции API последовательного порта VISA в LabVIEW, что удобно и быстро, но для тех, кому необходимо использовать метод прерывания для связи через последовательный порт, необходимо использовать элемент управления MSComm. Для работы с элементом управления ActiveX наиболее важно правильно использовать его свойства, функции методов и хорошо выполнять работу по обработке обратного вызова событий прерывания. Элемент управления, установленный LabVIEW для ActiveX, предоставляет 8 функций в «ActiveX» «Interconnection Interface»: открытие автоматизации, закрытие ссылки, вариант, вариант данных, вызов узла, узел свойств, регистрация обратного вызова события, отмена регистрации обратного вызова события.

4.1 Использование элемента управления MSComm в LabVIEW

首先需要在LabVIEW中加入MSComm,在“工具”--“导入”--“ActiveX至选板”中将MSComm添加到LabVIEW环境,选择默认路径。然后可以在前面板的".Net与ActiveX"中找到mscomm然后拖拽到前面板中。也可以先在前面板放置ActiveX容器,然后右键选择mscomm控件:

调用ActiveX控件创建客户端应用程序:主要用到“互连接口”--“ActiveX”中的8个函数:

ActiveX事件注册相关:即使用事件回调处理中断事件等,

4.2 编程注意事项

对于MSComm控件,编程时使用的都是其自动化引用,即LabVIEW将ActiveX控件作为对象来处理。连接属性节点到控件,可以查看所有属性,连接调用节点时,MSComm没有提供方法,所以会显示没有方法。以下是LabVIEW中看到的MSComm的属性:

另外,回调事件注册首先要确定好需要传输什么样的数据,如果包含多种数据类型,可以使用簇来解决,回调函数中会自动创建与该数据类型相同的事件参数,并提供ActiveX控件的引用。

五 文末活动

对于LabVIEW的串口实现源码,感兴趣的朋友可以在vx gzh(技塑未来)回复“LABV_UART”获取。同时前面提到的LabVIEW VISA串口助手的实现,也一并放在这一个LabVIEW project下了。

Supongo que te gusta

Origin blog.csdn.net/suxiang198/article/details/128277414
Recomendado
Clasificación