Если на момент опроса канала датчик оборотов определил, что в этот момент между свето- и фотодиодом находится отверстие диска (датчик открыт), то линия на графике показывается желтым цветом, в противном случае – белым.
Для прекращения просмотра графиков нужно нажать клавишу “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}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.