Вот что я имею ввиду:
Есть два цикла, по сути два таймера, один таймер управляет другим.
На прикрепленном рисунке все показано.
в первом цикле зупускается второй цикл и отрабатывает нное количество итераций, сколько неизвестно так как частота его работы(тобишь время работы и паузы) меняется.
Тоесть, стартанул первый цикл (допустим время паузы и работы 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 осцилограмма не прорисовывается.