Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 42
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg timer.JPG
(12.6 Kb, 6 просмотров)
Вложения
Тип файла: rar i.rar
(1.7 Kb, 3 просмотров)

Вот что я имею ввиду:
Есть два цикла, по сути два таймера, один таймер управляет другим.
На прикрепленном рисунке все показано.

в первом цикле зупускается второй цикл и отрабатывает нное количество итераций, сколько неизвестно так как частота его работы(тобишь время работы и паузы) меняется.

Тоесть, стартанул первый цикл (допустим время паузы и работы 1с, в общем получается 2с), на картинке это рисунок 1, t1=t2.

За время t1 работает второй цикл у которого тоже все строго фиксировано, указывается частота.

В результате должно получится то что на рисунке 3.

Второй цикл просто долбит комп порт устанавливая на какой то лапе "0" или "1" и держит паузы.

http://forum.oszone.net/attachment.p...1&d=1344582592


PS: мне скинули пример такой программы, я её немного пределал по свои нужды. Исходники в архиве.

Вот код.

Код: Выделить весь код
Dim I#, P# '
Dim H#, pe#, temp# '
Dim cI, cP, gr


Private Sub Command1_Click()
H = 1 ' Hz
pe = 500 ' period = 1Hz
temp = pe / H
If H > 999 And H < 9999 Then
temp = temp * 100
End If
If H > 9999 And H < 99999 Then
temp = temp * 10
End If

I = temp 'ms
P = temp 'ms

Text1.Text = P
Cl

If TimerP.Enabled = False Then
Cl
TimerP.Enabled = True
Command2.ZOrder 0
End If
End Sub
Sub Cl()
Picture1.Cls
cI = 0: cP = 0
gr = 20 * (I + P)
Picture1.Scale (0, 2)-(gr, -2)
TimerI.Interval = I
TimerP.Interval = P
Picture1.Line (0, 0)-(20 * (I + P), 0), &H808080
End Sub

Private Sub Command2_Click()
TimerP.Enabled = False
TimerI.Enabled = False
Command1.ZOrder 0
End Sub

Private Sub Form_Load()
'For I = 1 To 20
'Combo1.AddItem 50 * I
'Combo2.AddItem 50 * I
'Next I
'Combo1.ListIndex = 9
'Combo2.ListIndex = 9
TimerI.Enabled = False
TimerP.Enabled = False
Picture1.AutoRedraw = True
Command2.ZOrder 1
End Sub

Private Sub TimerI_Timer()
Shape1.Visible = False
TimerP.Enabled = True
TimerI.Enabled = False
If cP < gr Then
Picture1.Line (cI, 0)-(cI, 1), vbGreen
Picture1.Line (cI, 0)-(cI + P, 0), vbBlue
cI = cI + P
Else
Cl
End If
End Sub

Private Sub TimerP_Timer()
Shape1.Visible = True
TimerP.Enabled = False
TimerI.Enabled = True
If cI < gr Then
Picture1.Line (cI, 0)-(cI, 1), vbGreen
Picture1.Line (cI, 1)-(cI + I, 1), vbRed
cI = cI + I
Else
Cl
End If

End Sub
Обясните мне что тут означет переменная gr, дело в том что на частотах выше 19Khz осцилограмма не прорисовывается.

Последний раз редактировалось mirasoft, 10-08-2012 в 11:57.


Отправлено: 11:08, 10-08-2012 | #9