There is no practical limit on the number of active timer controls you can have in Visual Basic running under Windows 95 or Windows NT.
matador писал(а):а если на каждый из 32 каналов своё врем опроса задать то как тут с одним таймером то?
Ну например, найди НОД всех интервалов, и поставь его таймеру
Найди минимальный квант времени и таймер выставляй равным ему. И в коде таймера проверяй, наступило ли время выполнить опрос конкретного таймера.
После каждого срабатывания таймера переменная содержащая НОД конкретного датчика увеличивается на 1, и как только для первого датчика НОД станет равен 4, произойдёт его опрос, и НОД обнулиться, так же и со вторым датчиком, так?
Железо - 4 прибора аналогового ввода/вывода, каждый прибор имеет по 8 каналов. Время опроса каждого канала различно и изменяется пользователем в пределах от 0.4 до 30 секунд.
...
ПК процессорная плата с 300 Mhz 128 Мб ОЗУ.
Amed писал(а):Если рабочее место будет выделено только под эту задачу, проблем можно избежать.
GAGArin писал(а):Чел говорит, что на компе с такой убогой конфигурацией не будут пускать других задач, потому что такие конфигурации выделяются как раз под конкретную задачу. Так же как на компе с конфигурацией под игровой клуб никто не будет пускать веб сервер, ибо не предназначены они для этого.
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private CurrTime(5) As Long, UseInterv(5) As Long '5 изменить на 31 - по числу каналов
Private s As Long, t As Long, d As Long, i As Long
Private n As Long
Private Sub Command1_Click()
s = GetTickCount()
n = 0
Do
t = GetTickCount()
d = t - s
If d > 100 Then '100 - шаг изменения интервала
For i = 0 To 5
CurrTime(i) = CurrTime(i) + d
If CurrTime(i) > UseInterv(i) Then
'обработать канал
'(считать и запомнить нужные данные...)
Debug.Print i, UseInterv(i)
CurrTime(i) = 0
End If
Next i
s = GetTickCount()
End If
DoEvents
Loop While n = 0
Debug.Print "слежение остановлено"
End Sub
Private Sub Command2_Click() 'остановить слежение
n = 1
End Sub
Private Sub Form_Load()
UseInterv(0) = 500
UseInterv(1) = 4000
UseInterv(2) = 10000
UseInterv(3) = 30000
UseInterv(4) = 500
UseInterv(5) = 4000
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 95