Разработка комплекса программ для автоматизации экспериментальных исследований тангенциального точения на станке с ЧПУ 6Р13Ф3, страница 9

         Если на момент опроса канала датчик оборотов определил, что в этот момент между свето- и фотодиодом находится отверстие диска (датчик открыт), то линия на графике показывается желтым цветом, в противном случае – белым.

         Для прекращения просмотра графиков нужно нажать клавишу “ESC”, после его на экране снова появится список имеющихся в файле проб. Для выхода из этого меню нужно снова нажать клавишу “ESC”.

         1.8.10 Вывод данных в текстовом виде.

         Для вывода данных в текстовом виде нужно войти в меню “Работа” и выбрать пункт “Сохранить в текстовом виде”. Программа выведет на экран список имеющихся проб, аналогичный описанному выше. После выбора пробы программа попросит ввести имя файла, в который будет записаны данные. Для начала записи файла нужно нажать кнопку “Сохранить”, иначе нажать кнопку “Отмена”.

         1.8.11 Смена текущей директории.

         Для смены директории нужно войти в меню “Проект” и выбрать пункт “Смена директории”. Программа выведет на экран стандартный диалог смены директории, в котором можно напрямую указать интересующий каталог или воспользоваться “деревом директорий” для быстрого поиска нужной директории. Смена директории завершается нажатием кнопки “ChDir” или “ОК”.


Приложение А

Фрагмент программы ввода данных со стробированием от датчика оборотов

function SpStrob:boolean;

   var

        a,aprev:byte;

   label skip,tmout,cont, contV,rep,repV,rep1,rep2,notShow,

         repC,repC1,contC,contC1;

   begin

     CardInit;

     key1:=false; timeout:=false; key:=false;

     FirstTime:=true;

     {инициализация процессора клавиатуры}

     while keypressed do readkey; if keypressed then ReadKey;

     {delay(100); {подождем пока отпустят клавишу}

     asm

           in al,$61

          and al,$7f

          out $61,al

     end;

     {инициализация вывода на экран}

    xposChn:=Wbx+38;

    yposChn:=BY+0;

    StartAddrChn:=(yposChn*80+xposChn)*2;

    xposChn:=Wbx+54;

    StartAddrChnClr:=(yposChn*80+xposChn)*2;

    xpos:=Wbx+40;

    ypos:=BY+8;

    StartAddr:=(ypos*80+xpos)*2;

    Dseg:=seg(D.D[1]);

    DOffs:=ofs(D.D[1]);

    cntr:=0;

    ChnToShow:=0;

{$R-$S-$Q-$I-}

    {вводим данные:

    прекращаем по нажатию клавиши,

               по срабатыванию кнопки,

               по переполнению памяти}

    timerstart;

    repeat

     asm

       mov dx,$379

       in al,dx

    {как там датчик?}

       mov ah,al

       and al,$01 shl RevDetector

       mov a,al

    {как там кнопка?}

       neg ah

       and ah,$01 shl KeyForStop

       shr ah,KeyForStop

{$ifdef DEBUGMODE}

       xor ax,ax    {заглушка по кнопке}

{$endif}

       mov key1,ah

     end;

     if a<>aprev then

     begin

          if a<>0 then {начинаем измерения по положительному фронту}

          begin

               gttime;

               D.detector:=True;

               {чтение n каналов в массив Data}

               asm

                  mov ax,Dseg

                  mov es,ax

                  mov si,Doffs

                  add si,MaxChn*2+2

                  mov cx,MaxChn

                  mov di,ChnToShow                        {2}

                  mov dx,et1222adr

                  mov ax,cx

                  dec ax

                  shl ax,6

                  out dx,ax

                  add dx,4

                  out dx,ax

                  inc cx

             rep2:

                  dec cx

                  sub dx,4

                  in ax,dx

{$ifdef DEBUGMODEADC}

                  mov ax,cntr{+$800        {заглушка}

{$endif}

                  and ax,$0fff

                  dec si

                  dec si

                  mov es:[si],ax;

                  mov ax,cx

                  dec ax

                  mov bx,ax

                  dec ax

                  shl ax,6

                  out dx,ax

                  add dx,4

                  out dx,ax

                  push cx

                  cmp di,cx                               {2}

                  jnz notShow                             {13|3}

                  {подготовка данных для вывода на экран}

                  push dx

                  inc di                                  {2}

                  mov ax,es:[si]                          {5}

                  inc ax                                  {2}

                  shr ax,7                                {3}

                  sub ax,16                               {2}

                  mov bx,ax               {запомнить ax}   {2}

                  cwd                     {abs ax}         {2}

                  xor ax,dx                                {2}

                  sub ax,dx                                {2}

                  mov ValueToShow,ax                       {4}

                  {определение смещения}

{                  mov ax,17                                {2}

                  inc ax

                  and bx,$8000                             {2}

                  shr bx,15                                {3}

                  mul bl                                {9|14}

                  shl ax,1                                 {2}

                  mov bx,ax                                {2}

                  {вычисление адреса вывода на экран}

                  mov ax,160                               {2}

                  mul cl                                 {9|14}

                  mov cx,ax                                {2}

                  mov ax,StartAddrChn                      {2}

                  sub ax,bx                                {2}

                  add ax,cx                                {2}

                  mov TmpAddr,ax                           {4}

                  mov ax,StartAddrChnClr                   {2}

                  add ax,cx                                {2}

                  mov ClrAddr,ax                           {4}

                  pop dx

                  mov cx,8                                 {2}