В этом разделе будет рассказано о том, как за несколько десятков долларов достичь результатов, обычно возможных только при использовании ленточных или магнитных регистраторов — приборов, стоящих в сотни раз дороже! Вместо того чтобы чертить на бумаге кривую в реальном масштабе времени, что технически трудновыполнимо, гораздо проще накапливать данные в файле на диске, а уже потом обрабатывать их.
Программа сбора данных (FICHIER.BAS), которую, конечно же, надо дополнить драйвером используемого АЦП при помощи команды MERGE, исключительно проста.
200 REM — FICHIER —
210 GOSUB 100
220 OPEN "dat.dat" FOR OUTPUT AS #1
230 PRINT "Идут измерения… "
240 FOR G=0 TO 639
250 GOSUB 100
260 PRINT# 1, D
270 FOR T=0 TO 2000: NEXT T
280 NEXT G: CLOSE# 1
290 REM (c) 1997 Patrick GUEULLE
В оригинальной версии эта программа создает файл DAT.DAT, содержащий 640 выборок, которые производятся с частотой дискретизации, определяемой в строке 270 (простая задержка). Конечно, число 2000 используется лишь при первых попытках, а потом надо будет подобрать эту величину в соответствии со скоростью используемого ПК и конкретной задачей.
В самых сложных случаях можно, по примеру SECONDE.BAS и MINUTE.BAS, использовать переменную TIME$ для улучшения точности и значительного снижения частоты дискретизации.
Число 640, в свою очередь, соответствует числу точек по горизонтали обычного графического экрана, что позволяет вывести график кривой непосредственно на экран, перед тем как скопировать его на бумагу, если это необходимо.
Графопостроитель
Вывод информации на экран осуществляет программа CGAVISU.BAS или VGAVISU.BAS. Вторая из них применяется, если желательно воспользоваться большим разрешением, соответствующим экранам VGA.
500 REM — CGAVISU —
510 OPEN "dat.dat" FOR INPUT AS #1
520 INPUT#1,Y: Y=199-INT(Y*199/5)
530 PSET(0,Y)
540 FOR X=1 TO 639
550 INPUT#1,Y: Y=199-INT(Y*199/5)
560 LINE — (X, Y)
570 NEXT X
580 CLOSE
590 REM (c) 1997 Patrick GUEULLE
500 REM — VGAVISU —
510 OPEN "dat.dat" FOR INPUT AS #1
520 INPUT#1,Y: Y=349-INT(Y*349/5)
530 PSET(0,Y)
540 FOR X=1 TO 639
550 INPUT#1,Y: Y=349-INT(Y*349/5)
560 LINE — (X, Y)
570 NEXT X
580 CLOSE
590 REM (c) 1997 Patrick GUEULLE
Очевидно, каждую из программ надо объединить с экранным драйвером CGA.BAS или VGA.BAS, соответствующим используемому оборудованию.
300 REM — CGA —
310 SCREEN 2
320 KEY OFF: CLS
330 LINE(0,0)-(0,199)
340 FOR Y=0 TO 199 STEP 20
350 LINE(0,Y)-(639,Y),&HCCCC
360 NEXT Y
370 FOR X=0 TO 639 STEP 32
380 LINE(X,0)-(X,199),&HCCCC
390 NEXT X
400 LINE(639,0)-(639,199)
410 LINE(0,199)-(639,199),&HCCCC
420 REM (c) 1997 Patrick GUEULLE
300 REM VGA
310 SCREEN 9
320 KEY OFF: CLS
330 LINE(0,0)-(0,349)
340 FOR Y=0 TO 349 STEP 35
350 LINE(0,Y)-(639,Y),&HCCCC
360 NEXT Y
370 FOR X=0 TO 639 STEP 32
380 LINE(X,0)-(X,349),&HCCCC
390 NEXT X
400 LINE(639,0)-(639,349)
410 LINE(0,349)-(639,349),&HCCCC
420 REM (c) 1997 Patrick GUEULLE
Это объединение можно сделать следующим образом:
LOAD "CGA" (загрузка драйвера);
затем
MERGE "CGAVISU" (добавление программы вывода на экран).
Полученная программа теперь может быть сохранена под каким-либо именем при помощи обычной команды SAVE.
На рис. 5.11 показан результат вывода на бумагу с использованием буфера обмена Windows, кривой разряда конденсатора емкостью 4,7 мкФ через входное сопротивление АЦП. Эта кривая была получена на экране CGA (320x200 точек).
Рис 5.11.
Рис. 5.12 воспроизводит ту же запись, пересчитанную для вывода на экран VGA.
Рис 5.12.
Обеспечение точной временной развертки
Для приложений, требующих точной регистрации параметра «время», можно использовать программу