У меня есть подпрограмма, которая вызывается в такт воспроизводимой дорожки для включения освещения DMX.Таким образом, процедура не вызывается событием Timer, и вызовы могут увеличиваться или уменьшаться с ритмом дорожек.То, что я хотел бы сделать, это вызвать одну и ту же подпрограмму изнутри самой себя с удвоенной частотой.Я не могу изменить отправляющий вызов, так как он отправляется с оборудования, которое я не контролирую.Возможно, мои мысли заключались в том, чтобы узнать время последних 2 ударов, разделить их на 2 и снова вызвать тот же саб.Очевидно, я должен был бы предотвратить повторение деления более одного раза.
Это то, что я придумал, но я получаю, что System.StackOverflowException не обработан, произошел в mscorlib.dll. InnerException: Невозможно оценить выражение.
в строке «Если DateTime.Now + интервал> = DateTime.Now Then "
Private Sub do_pan_robo_colors()
Dim ts As TimeSpan = Now.Subtract(last_beat_time)
If Not ts.TotalSeconds > 10 Then 'prevent overflow
Dim time_between_beats As Double = ts.TotalMilliseconds
Dim half_between_beats As Double = time_between_beats / 2
Dim interval As TimeSpan = TimeSpan.FromMilliseconds(half_between_beats)
If DateTime.Now + interval >= DateTime.Now Then
do_pan_robo_colors()
End If
End If
last_beat_time = DateTime.Now
'trigger DMX lamp
End Sub