Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Компьютерная Томография

среда
использует язык Object Pascal. Достоинствами Delphi3, повлиявшими на выбор
ее как среды программирования являются: тесная интеграция с
программированием в среде Windows 95, подход, ориентированный на формы и
объекты, сверхбыстрый компилятор и, собственно, сам язык программирования
Object Pascal. [12]



                                5.1 Обмен данными с АЦП
     Программа должна считывать данные, выработанные АЦП через определенные
промежутки времени. Приемлемым способом обеспечения этого является опрос
АЦП по таймеру. Взаимодействие с АЦП реализуется следующим образом. После
приема программой сообщения от таймера, производится проверка готовности
данных, получаемых от АЦП, путем проверки его сигнала "Готовность". Он
поступает на пятый бит регистра состояния. Поэтому после считывания его
значения происходит дальнейшая работа с АЦП лишь при равенстве этого бита
единице. Необходимо отметить, что время преобразования АЦП намного меньше
частоты его опроса, поэтому, при корректной работе АЦП, когда приходит
сообщение от таймера, цикл преобразования АЦП должен быть закончен в любом
случае. Поэтому, при обнаружении неготовности данных АЦП, выдается
соответствующее диагностическое сообщение сигнализирующее о неисправности.
При наличии готовности АЦП, программа производит считывание 8-ми старших
разрядов кода из регистра данных и двух младших разрядов из регистра
состояния параллельного порта.
     Далее необходимо запустить АЦП на следующий цикл преобразования. Для
этого программа устанавливает на втором бите регистра управления (он
подключен ко входу АЦП "Гашение и преобразование") значение логической
единицы путем записи во второй бит регистра управления нуля (т.к. этот бит
является инверсным). Это действие вызывает гашение информации, содержащейся
в регистре последовательного приближения АЦП, т.е. он становится готовым к
приему и обработке данных. После необходимой задержки программа
устанавливает этот бит в единицу, что приводит к появлению на линии
"Гашение и преобразование" нуля, - АЦП начинает новый цикл преобразования.

     Рассчитаем интервал опроса АЦП необходимый для обеспечения заданной
точности. Так как гантри совершает полный оборот (360) градусов за 40
секунд, то время t необходимое для прохода 0,5 градуса вычисляется по
формуле:

     [pic].

Из этого следует вывод о необходимости опроса АЦП через каждые 0,05с т.е.
интервал таймера устанавливается равным 50 мс. Вообще, как было показано
выше, выбранный 10-разрядный АЦП допускает точность до 0,35 градуса. Но,
программно этой, и более высокой точности (при установленной скорости
вращения гантрии) добиться не удастся, в связи с системным ограничением
минимального интервала таймера, а также из-за задержек прибытия сообщений
от таймера.


                             5.2 Преобразование  полученных данных
   После обмена данными с АЦП происходит преобразование считанных данных в
одно целое число, характеризующее уровень сигнала на входе АЦП. Т.к. АЦП
имеет 10 разрядов это число принимает значения от 0 до 1023. Вычисление его
происходит по формуле:

     [pic][pic]

где N - искомое число; data - двоичное 8-ми разрядное значение, полученное
путем считывания 8-ми старших разрядов кода; data9 - значение девятого
разряда кода; data10 - значение десятого разряда кода.
     С целью максимальной гибкости программы, существует возможность ее
настройки для возможности инверсной подачи сигнала на вход АЦП. При этом
все в программе остается без изменений,  кроме формулы вычисления N,
которая изменяется следующим образом:

     [pic].

Фактически, в данном случае, инверсия подаваемого сигнала как бы
компенсируется операцией инверсии выходного кода, а все остальное в
программе работает так же, как если бы входной сигнал не инвертировался.
     Затем необходимо преобразовать полученное число в значение угла
поворота гантрии [pic]. Этот угол преобразуется в угол [pic], удобный для
сравнения с углами запуска и остановки программы захвата
видеопоследовательности, которые также после их ввода преобразуются в
удобный формат. Это действия осуществляются по следующим формулам.
1. Если [pic]:

     [pic]

    [pic]

2. Если   [pic]:

     [pic]

    [pic]

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



   Рис.5.1. Диалоговое окно программы видеобластера.


     В окне присутствуют две кнопки: "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.


                          4.5 Настройка программы.
     Известно, что любые элементы имеют разброс параметров. Поэтому,
использование динамического диапазона АЦП может быть неполным или наоборот,
может возникнуть перегрузка его аналогового входа. Для регулировки
использования динамического диапазона АЦП служит резистор R6 (см. рис.
4.7). Меняя его сопротивление, можно менять максимальное напряжение на
входе АЦП, и тем самым изменять коэффициент использования динамического
диапазона преобразователя. Необходимость этого возникает при настройке
изготовленной схемы. Обычным решением является установка гантрии симулятора
в крайнее положение, (соответствующее максимально возможному входному
аналоговому сигналу) и достижение напряжения полной шкалы на входе АЦП,
путем изменения сопротивления регулировочного резистора с одновременным
замером напряжения на входе АЦП. Однако зачем измерять напряжение, когда
АЦП по сути уже сам его измерил. Поэтому настройка используемого
динамического диапазона АЦП осуществляется анализом его выходного кода. Для
этого запустив программу на выполнение необходимо выбрать в странице
"Настройки"  пункт "Диапазон АЦП" (см. рис. 5.2) и нажать кнопку настроить.


                                    [pic]
     Рис. 5.2 Страница "Настройка" диалогового окна программы.


 После этого гантри устанавливается в положение 190 градусов
(действительно, нет никакой необходимости устанавливать ее в крайнее
положение). На экране в это время отобразится коэффициент использования
динамического диапазона АЦП в процентах AcpUsed, вычисление которого
производится по формуле:

[pic]

 Далее, уменьшая сопротивление регулировочного резистора (изначально он
должен находится в положении максимального сопротивления) надо добиться
использования примерно 99 %  диапазона АЦП. При уменьшении коэффициента
использования возможнос
Пред.678910След.
скачать работу

Компьютерная Томография

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ