Почему именно отдельный модуль?Во первых вы можете
использовать мой модуль..Во вторых вы можете
написать свой собственный и включать его в другие программы.В третьих
код для управления портами не будет болтаться в модуле формы и отвлекать внимание.
Впрочем это только рекомендация.
Теперь из модуля формы просто обращаемся к подпрограммам
модуля:
SetOutBit(0...7) ResetOutBit(0...7)
ResetPort a%=ReadInPort
Здесь находится исходный код
примера.
Обратите внимание,что константы,объявленные нами для портов входа
и выхода перенесены в модуль!
Теперь о входных сигналах.Конечно можно каждый раз запрашивать
функцию ReadInPort и по значению принимать какое-либо решение.Но я предлагаю
использовать массив значений входов,который будет заполняться при помощи
таймера.
В модуле формы объявим массив
Dim inPort(5) as Boolean
и напишем процедуру для таймера:
'процедура с интервалом Timera опрашивает порт входов
Private Sub Timer1_Timer()
Dim pinPort As Byte
'результат опроса порта
pinPort = ReadInPort
'поверяем бит 3 (нога 15 разъема)
If (8 And pinPort) = 0 Then
'определяем переменную массива
inPort(0) = True
Else
'определяем переменную массива
inPort(0) = False
End If
'поверяем бит 4 (нога 13 разъема)
If (16 And pinPort) = 0 Then
inPort(1) = True
Else
inPort(1) = False
End If
'поверяем бит 5 (нога 12 разъема)
If (32 And pinPort) = 0 Then
inPort(2) = True
Else
inPort(2) = False
End If
'поверяем бит 6 (нога 10 разъема)
If (64 And pinPort) = 0 Then
inPort(3) = True
Else
inPort(3) = False
End If
'поверяем бит 7 (нога 11 разъема)
If (127 Or pinPort) = 255 Then
inPort(4) = True
Else
inPort(4) = False
End If
End Sub
Теперь надо установить свойство таймера Interval
в 50 и процедура будет опрашивать порт с интервалом 50 миллисекунд
и заносить в массив значения входных бит.
Главная
Оглавление
Назад