Запуск и остановка управляемой программы - Разработка программно-аппаратного комплекса для мониторинга рентгеновского симулятора SLS-9

Полученное по вышеприведенным формулам значение угла сравнивается с заданными величинами запуска и остановки. Программа обеспечивает запуск сканирования при проходе установленного значения запуска в направлении установленного значения остановки. Например, если угол запуска равен 270 градусам, а угол остановки - 90 градусам, то стартовое сообщение управляемая программа примет при проходе гантрией угла 270 градусов в направлении 260 градусов; а сообщение об остановке будет сгенерировано при проходе угла 90 градусов в направлении к 80 градусам. В других случаях (другое направление вращения гантрии) ничего не произойдет. Для осуществления этих действий необходимо применение эффективного алгоритма, позволяющего производить все необходимые действия за кратчайшее время. Это нужно для сведения к минимуму времени захвата системных ресурсов разрабатываемой программой, с целью минимальных помех программе захватывающей видеопоследовательность.

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

В окне присутствуют две кнопки: "Ok" и "Cancel". При щелчке мышью на кнопке "Ok" происходит начало захвата видеопоследовательности, остановка захвата происходит при щелчке на кнопке "Cancel". Кроме того щелчок по кнопке "Ok" эквивалентен нажатию клавиши "Enter", а результат щелчка по кнопке "Cancel" соответствует результату при нажатии клавиши "Escape". Из этого следует вывод о единственно возможном решении поставленной задачи: необходимо каким-либо программным способом сэмулировать нажатие кнопок в окне или клавиш на клавиатуре. Кнопки в диалоговом окне возможно нажать лишь путем посылки им сообщений с помощью функции API Windows SendMessage. Эта функция имеет несколько следующие параметры: hWnd - дескриптор окна которому посылается сообщение; Msg - вид посылаемого сообщения, в данном случае он равен wm_KeyDown. [13] Однако применение этой функции представляет затруднения: необходимо определять дескриптор окна, которому посылается сообщение. Более простым и эффективным способом является эмуляция нажатия клавиш на клавиатуре. Единственным способом это сделать является использование слабо документированной функции Windows - keybd_event. Функция имеет четыре параметра: bVk - виртуальный код клавиши, bscan - скан код клавиши, dwFlags - значения, определяющие варианты использования функции, dwExtraInfo - дополнительные данные, ассоциированные с функцией. Эта функция непосредственно вызывается клавиатурным драйвером после нажатия на клавишу, при этом, а также при попытке применить данную функцию без параметров, она считывает необходимые ей данные из стека. При использовании функции в разрабатываемой программе ей передается единственный параметр - виртуальный код клавиши, а остальные параметры обнуляются. Виртуальный код клавиши устанавливается в значение vk_Return, при эмуляции нажатия на Enter, и vk_Escape, при эмуляции нажатия на Escape.

Похожие статьи




Запуск и остановка управляемой программы - Разработка программно-аппаратного комплекса для мониторинга рентгеновского симулятора SLS-9

Предыдущая | Следующая