Меню

Последовательный порт (mscomm32.ocx) и Exel

Недавно возникла задача получить данные в MS Exel с регулятора температуры с последовательным портом на борту. Из личного опыта, во времена Windows XP, в подобных случаях я успешно пользовался элементом управления ActivX mscomm32.ocx. Погуглив интернет, в статье Управление Arduino с помощью Excel, был найден и похожий проект. Итак, наши исходные данные: Windows 10 Pro x64 (версия 1803) и MS Exel 2016 (x86). Попробуем установить  mscomm32.ocx из архива в упомянутой выше статьи. При этом обратим внимание на свойства файла.propertis-mscomm32.ocx-old

Для установки скопируем файл  mscomm32.ocx в директорию %windir%/SysWOW64. Чтобы зарегистрировать элемент ActivX запустим командную строку от имени администратора и воспользуемся командой:

regsvr32 %windir%\SysWOW64\mscomm32.ocx

Заносим в реестр сведения о лицензии, применив файл RegEdit.reg из вышеупомянутого архива.

Настало время опробовать наш элемент управления на тестовой форме, воспользовавшись MS Exel и VBA. В Exel должны быть разрешены макросы, а на ленте должна быть включена вкладка «Разработчик«, для того чтобы иметь возможность воспользоваться средствами VBA. Запускаем редактор VB: Разработчик -> Visual Basic (или ALT+F11). Добавляем в проект новую форму: Insert -> UserForm.

Далее необходимо подключить наш элемент управления в проект: Tools -> Referenses -> Browse… и выбираем файл  mscomm32.ocx из директории %windir%/SysWOW64.

Нажимаем ОК.

Теперь  размещаем новый Control в ToolBox, чтобы мы могли воспользоваться нашим ActivX элементом: Tools -> Additional Controls -> Microsoft Communications Control, version 6.

Нажимаем ОК и наш  mscomm32.ocx готов к использованию.

Попробуем разместить его на форме и … получаем ошибку.

Первая неудача… Справедливости ради необходимо отметить, что в вышеупомянутой статье автор не использует в своем проекте событие OnComm, поэтому проект может быть вполне рабочим. Я это не проверял, да и не имею такой возможности, и цель у нас несколько иная. Здесь нужно понимать, что для установления связи через последовательный порт можно использовать событие OnComm, а можно обойтись и без него. Событие OnComm, имеет место при каждом изменении значения свойства CommEvent, сигнализируя о том, что произошло событие связи или ошибка.

Управление через события — это очень мощный метод управления последовательным портом. Нередко возникают ситуации, когда вы хотели бы получать уведомления о том или ином событии, например о поступлении символа или об изменении на линии состояния Carrier Detect (CD) или Request To Send (RTS). В таких случаях удобно пользоваться событием OnComm, которое позволяет перехватывать и обрабатывать эти события системы связи. Вместо этого, можно также вести опрос свойств после выполнения каждой критической фазы программы и на основании их анализа предпринимать те или иные действия. Подобный метод может оказаться предпочтительным, если ваше приложение небольшое и работает автономно. Вышесказанное выходит за рамки этой статьи, и любознательные могут самостоятельно изучить все аспекты работы с этим элементом управления. Гугл в помощь!

Страницы:  -1-   -2- 

Вложено:

  • zip COMPort
    Размер файла: 91 KB Кол-во скачиваний: 33

Добавить комментарий

Ваш адрес email не будет опубликован. Зарегистрируйтесь, чтобы комментировать без капчи и дополнительных полей