Я пытаюсь создать своего рода "монитор сердцебиения" в autohotkey.
Моя текущая программа проста, у меня есть процесс, который занимает около 2 секунд, чтобы вычислить, насколько резкими должны быть звуковые сигналыи небольшая подпрограмма зацикливания, которая подает звуковой сигнал с вычисленной частотой.
Но теперь я наткнулся на контрольно-пропускной пункт - как я могу обновить подпрограмму "бипер", чтобы использовать новую частоту, не прерывая ее регулярное время?
То, что я сначала попробовал, - это эффективная проверка глобальных переменных (что, по моему мнению, вряд ли сработает)
frequency := 500 ;super-global default frequency
Somehotkey::
SetTimer, BeepCycle, -1
Loop,
{
frequency := CalculateFrequency()
Sleep, 5000
}
return
BeepCycle:
loop,
{
SoundBeep, %frequency%
Sleep, 500
}
, но частота, похоже, никогда не обновляется (потому что возбуждает вычисление частоты), чтоимеет некоторый смысл.
Таким образом, мой следующий подход состоял в том, чтобы вместо этого использовать синхронизацию с помощью settimer, но она просто не была достаточно последовательной.
frequency := 500 ;super-global default frequency
Somehotkey::
SetTimer, BeepCycle, 500
Loop,
{
frequency := CalculateFrequency()
Sleep, 5000
}
return
BeepCycle:
SoundBeep, %frequency%
Каков наилучший способ разрешить изменение частоты при сохранении 500 мсперерывы соответствуют?Я новичок в многопоточности в ахк.