Скрипт простой: ставим метку и потом читаем данные. После установки метки берем и перетаскиваем ее на графике, желательно быстро. Терминал зависает. На таком простом скрипте это происходит не сразу, поэтому можно просто двигать метку до выявления эффекта. Частично помогает избежать проблемы увеличение sleep до 500.
На версиях 8.* - сколько не двигал не получается эффект зависания, даже на sleep 55.
На самом деле - серьезная проблема, т.к. считывание данных с меток - это единственный способ взаимодействия пользователя с скриптом через график.
local sleep = _G.sleep
local isRun = true
local AddLabel = _G.AddLabel
local GetLabelParams = _G.GetLabelParams
function _G.OnStop()
isRun = false
end
function _G.main()
local tag = 'virt_test'
local label_params = {}
label_params.YVALUE = 119.5
label_params.TEXT = 'TEST |||||||||||||||||||||||||||||||||||||||||||||'
label_params.HINT = 'Еще текст'
label_params.DATE = 20220611
label_params.TIME = 152000
label_params.FONT_FACE_NAME = 'Arial'
label_params.ALIGNMENT = 'RIGHT'
label_params.FONT_HEIGHT = 10
label_params.TRANSPARENT_BACKGROUND = 1
local l_id = AddLabel(tag, label_params)
sleep(1000)
while isRun do
label_params = GetLabelParams(tag, l_id)
if label_params then
_G.message(tostring(label_params.yvalue))
end
sleep(100)
end
end
К сожалению, описанная в данном обращении проблема не имеет каких-то временных способов устранения или обходных путей. Ошибка, из-за которой проявляется проблема, будет устранена в ближайшей очередной версии ПО. Приносим извинения за причиненные неудобства.