Раздел: Документация
0 ... 29 30 31 32 33 34 35 ... 105 procedure Draw led status, var led selected old integer, begin led selected old =led selected, scan keyboard, output input for i =1 to 4 do draw led(420+i«40,350,status[i+8]), if led selected>4 then led selected =4, if led selected<1 then led selected =1, setlinestyle(0,0,3), setcolor(cyan), if led selected old<=4 then begin circle(-20,+80*led selected old 350,15), circle(-20,+80*(led selected old+40),350,15), end, setcolor(yellow) if led selected<=4 then begin circle(-20,+80«led selected,350,15), circle(-20,+80«(led selected)+40),350,15), end, end, («Главная программа *) begin initialize graph, draw panel, imtJ253, led selected =1, repeat draw led status until (key pressed= Q ) or (key pressed= q ), closegraph, («Закрытие графического режима *) end Программа содержит четыре процедуры и одну функцию; кроме того, применяются процедуры и функции из программных библиотек ресурсов. Draw panel рисует виртуальную панель управления. Процедуры Draw led() и Draw message(), содержащиеся в библиотеке TPLIB2.PAS, выводят на экран монитора изображения виртуальных светодиодов и поясняющие надписи. Процедура Output input организует ввод/вывод данных через игровой порт. Scan keyboard сканирует клавиатуру и фиксирует нажатие клавиш -», <-, клавиши пробела, с или q. Она использует функцию getkey из библиотеки TPLIB2.PAS. Функции Read game port() и Interval game port, находящиеся в библиотеке TPLIB1.PAS, считывают состояние цифровых входов порта и измеряют длительность периода одновибратора соответственно. Функция Resistance() вычисляет значение сопротивления на основании параметров калибровки. 3.3.2. Описание программы GAMEEXP Эта программа выполняет следующие функции: О считывает состояния двух (или четырех) цифровых входов; О измеряет длительность период одновибратора для двух (четырех) аналоговых каналов; О калибрует аналоговые каналы; О измеряет сопротивление резистора. Для запуска программы необходимо нажать кнопку Пуск и выбрать в меню пункт Выполнить. Затем следует ввести ее полное имя: путь + GAMEEXP. После нажатия кнопки ОК на экране появится окно управления экспериментальной платой игрового порта (рис. 3.10). Программа выполняет функции, аналогичные DOS-версии. ез ЙВПуск Н Adobe Photoshop st. Gome Poil Enpeiimenlat Boaid rosi loi inputs •-О vci C8 vcc BX. vcc BY vo: Base addiess of Game 201H Peiiod of Multivibrator: Resistance. button input :BY О • AY • Quit GeneisleResistancevi periodcurve Man i game port experimen r*,%l*#? ;ВШОЕЙН 1:11 Рис. ЗЛО. Окно управления экспериментальной платой игрового порта Текст программы GAMEEXP Declare Function Bit weight Lib С \I0EXP\Wlib dll (ByVal X As Integer) As Integer Declare Function Read game port Lib С \I0EXP\Wlib.dll" (ByVal X As Integer) As Integer Declare Function Wnte game port Lib С \I0EXP\Wlib dll () As Integer Declare Function Interval game port Lib С \I0EXP\Wlib dll" (ByVal led selected As Integer) As Integer Sub Command1 click() OoEvents For i=12 to 15 status(i)=read game port(20-i) If status(i)=1 Then Shape1(i) BacKColor=$HFF$ Else Shape1(i) BackColor=black Next l DoEvents penod=Interval game port(led selected)» 838 If penodoO Then Label2 Caption= Period of multivibrator & Format (period, #Ш# # ) Else Label2 Caption= Error reading multivibrator End If Label5 Caption= Resistance & Format(resistance(period) ### # ) End Sub Sub Command1 MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Label6 Caption= Get button status and period of multivibrators End Sub Sub Command2 click(index As Integer) status(index)=1-status(index) If status(index)=1 Then Shapel(index) BackColor=$HFF$ Else Shapel(index) BackColor=black For 1=12 to 15 status(i)=(read game port(i-11) and Bit weight(i-11))/Bit weight(i-11) If status(i)=1 Then Shape1(i) BackColor=$HFF$ Else Shape1(i) BackColor=black Next l End Sub Sub Command3 click() MsgBox( Short the terminals of the selected resistance input The selected channel is & led selected) interval 0(led selected)=lnterval game port(led selected)* 838 MsgBox( Connect a standard resistor to the selected resistance input The selected channel is & led selected) Standard r(led selected)=lnputBox( Input the resistance , Calibration of resistance input , 1 ) interval R(led selected)=Interval game port(led selected)* 838 End Sub Sub Command1 MouseMove(Button As Integer, Shift As Integer X As Single Y As Single) Label6 Caption= Generate resistance vs period curve End Sub Sub Command4 Click() End End Sub Sub Command4 Mouse0own(Button As Integer Shift As Integer, X As Single, Y As Single) Label6 Caption= Quit the program End Sub Sub Form load() For 1=0 to 16 status(i)=0 0 ... 29 30 31 32 33 34 35 ... 105
|