Управление связью в VisualBasic и метод разработки коммуникационного программного обеспечения на платформе Windows объединены с конкретными примерами, чтобы дать базовую коммуникационную программу.
В 1992 году компания Crescent Software Inc. разработала средство управления пользовательской связью mscomm.vbx специально для VB. Он обеспечивает возможности последовательной связи для отправки и получения данных через последовательный порт. Он не только включает в себя функции, выполняемые всеми 16 функциями последовательной связи в Windows. API и разработал дополнительные атрибуты объектов, которые облегчают пользовательский дизайн для удовлетворения потребностей разных пользователей и разных предприятий. В настоящее время многие отечественные материалы VB редко включают введение этого контроля связи. В этой статье будут подробно описаны методы управления связью и программирования mscomm.vbx, а также представлена базовая программа связи на основе примера в работе.
Описание управления связью 1mscomm.vbx
Элемент управления связью mscomm.vbx можно добавить непосредственно в форму из панели инструментов VB и использовать для связи. Если такого элемента управления на панели инструментов нет, используйте настраиваемые элементы управления инструментов, чтобы добавить mscomm.vbx из системного подкаталога Windows в панель инструментов vb.
1.1 Методы связи
В mscomm.vbx есть два разных способа решения проблем разработки и проектирования различного коммуникационного программного обеспечения.
1. Событийно-ориентированный. Она аналогична функции обратного вызова окна при написании программного обеспечения Windows на C/C и является мощным способом решения проблем. В реальной работе нам часто приходится сталкиваться со многими связанными событиями при общении. Например: когда данные линии поступают на локальный конец или изменяется состояние линии cd и линии сигнала rts, нам необходимо использовать соответствующие события для связи. используется для отслеживания и обработки. Реализовано событие oncomm, которое также включает в себя обнаружение и обработку ошибок связи и других проблем. Значение commevent возвращает самое последнее событие связи или числовой код ошибки. Подробные примеры ошибок и событий средств управления связью включают:
mscomm-er-break получил 1 сигнал прерывания
Тайм-аут сигнала mscomm-er-cdtocd
…
изменения сигнала mscomm-ev-cdcd
…
2. Метод запроса. Ответственность за чтение значения commevent и обработку возникающих ошибок или событий лежит на программисте. Обычно такой подход можно использовать при разработке простого приложения.
1.2 Свойства средств управления связью
Ключом к использованию средств управления связью для компиляции программ связи является точное понимание и установка свойств средств управления связью. mscomm.vbx предоставляет 27 свойств элементов управления связью, таких как:
commport: Установить или вернуть номер порта связи.
настройки: Установите или верните формат передачи данных в виде строки: скорость передачи данных, четность, биты данных и стоповые биты.
portopen: установить или вернуть статус коммуникационного порта (включая открытие и закрытие коммуникационного порта)
…
3. Примеры
Основой применения этой программы является программное обеспечение системы автоматического мониторинга электростатического фильтра dcc95, которое решает проблему связи между 1 компьютером промышленного компьютера (главной станцией) и 32 микроконтроллерами (подстанциями). Структура шинной сети между главной станцией и подстанцией использует стандарт связи RS-485 и осуществляет передачу данных в режиме вопросов и ответов. Поскольку 32 подстанции отправляют команды связи (команды нисходящей линии связи) на главную станцию, главная станция продолжает отправлять команды нисходящей линии связи после получения соответствующих ответных команд (команды восходящей линии связи), отправленных обратно подстанциями. В соответствии с требованиями системных функций главной станции необходимо отправлять два типа команд: (1) синхронную команду, которая запускается таймером и отправляется один раз в каждом цикле ls (2) апериодическую команду, которая запускается таймером; Оператор Вызывается перемещением соответствующей командной кнопки и отправляется апериодически. Программное обеспечение системы автоматического мониторинга установлено на главной станции, а программа связи также установлена на главной станции как часть программного обеспечения системы автоматического мониторинга.
В этой статье приведен только базовый список демонстрационных программ для тестирования при отладке коммуникационных программ. Во время теста один ПК использовался в качестве основной станции, а другой ПК моделировал работу 32 подстанций. Два ПК использовали связь по последовательному порту rs232c. Добавьте 1 элемент управления связью, 2 элемента управления таймером и 1 элемент управления командной кнопкой в форму (форму) программы демонстрации связи главной станции. Элемент управления связью (mscomm1) используется для доступа к последовательному порту, отправки и получения данных периодического управления таймером (); периодическое) используется для управления главной станцией для отправки периодических команд на каждую подстанцию каждую секунду, управление кнопкой управления (непериодическое управление) и управление непериодическим таймером (непериодическое) используются для отправки непериодических команд; При передаче данных используется связь, управляемая событиями. Атрибут rtreshlod устанавливается в соответствии с различными командами отправки, тем самым вызывая событие oncomm для получения данных.
2.1 Процедуры инициализации каждого элемента управления в форме
Установите рабочие параметры последовательного порта связи, установите интервал прерывания периодического таймера на ls и интервал прерывания непериодического таймера на 0,5 с.
субформа-загрузка()
mscomm1.commport=2'Выберите последовательный порт com2
mscomm1.settings="9600,n8,1"'Скорость передачи данных 9600, без бита четности, 8 бит данных и 1 стоповый бит
mscomm1.inputlen=0'input прочитает все содержимое приемного буфера.
mscomm1.inbuffersize=1024'Установите длину буфера приема в байтах.
mscomm1.portopen=true'Откройте порт связи.
mscomm1.inbuffercount=0'Очистить данные буфера отправки
mscomm1.outbuffercount=0'Очистить данные буфера приема.
period.inteval=100'Установите временной интервал ls, чтобы команда телеметрии отправлялась один раз в ls.
non periodic.inteval=500'Установите интервал времени 0,5 с и запросите, активирована ли командная кнопка, чтобы определить, следует ли отправлять периодические команды.
Command-PRessed=false'Командная кнопка неактивна
while- periodic=false'Периодическая передача данных команды еще не началась
while-non periodic=false'непериодическая передача данных команды еще не началась
конец суб
2.2 Программа апериодической отправки команд
В соответствии с состоянием командной кнопки и состоянием периодической передачи командных данных апериодические команды отправляются в программу прерывания непериодического таймера.
субнепериодический-командный-клик()
command-pressed=true'активация командной кнопки
конец суб
субнепериодический таймер()
ifduring- periodic = trueилиcommand-pressed = false
thenexitsub' Если периодическая передача командных данных не закончилась или командная кнопка активирована, выйдите из программы, отправляющей апериодические команды.
Command-pressed=false'Командная кнопка возвращается в неактивное состояние
Callsenddata(non periodic-command) 'Отправка непериодических команд
mscomm1.rthreshold=r-non periodic-byte'После отправки апериодической команды установите атрибут rthreshold, чтобы главная станция инициировала событие oncomm после получения заданного количества байтов.
конец суб
2.3 программа периодического таймера
Посылайте периодические команды в программу прерывания периодического таймера:
субпериодический таймер()
ifduring-non periodic=truethenexitsub'Если непериодическая передача командных данных еще не закончилась, выходим из программы отправки апериодических команд.
во время-периодического=true' устанавливает состояние периодической передачи командных данных в процессе
Callsenddata( periodic-command) отправляет периодические команды
mscomm1.rthreshold=r- periodic-byte'После отправки периодической команды ведущая станция получает байты r-remot-edata-byte, которые могут вызвать событие oncomm.
конец суб
2.4 программа мероприятий oncomm
В соответствии со значением настройки атрибута rthreshold, когда соответствующий байтовый символ принимается в приемном буфере, запускается событие oncomm и данные принимаются в программе прерывания.
субмскомм1-онкомм()
selectcasemscomm1.commevent'Здесь вы можете вставить код для обработки различных ошибок или событий.
Casemcomm-ev-получить
getstring$=mscomm1.input
selectcasemcomm1.rthreshold
caser- periodic-byte'данные ответа периодической команды
calldisposedata( periodic-command)'обработать полученные данные
while periodic=false' устанавливает состояние периодической передачи командных данных на завершение.
caser-non periodic-byte'непериодические данные ответа на команду
calldisposedata(non periodic-command)'обработка полученных данных
while-non periodic=false' устанавливает статус непериодической передачи командных данных на завершение.
завершить выбор
завершить выбор
конец суб
Благодаря постоянному обновлению версии vb, vb станет самым быстрым, простым в использовании и мощным инструментом разработки приложений, а также одним из лучших инструментов для разработки программного обеспечения клиент-серверных приложений корпоративного уровня. ->