LUA. Проверка подключения к серверу QUIK

11 февраля, 2015

При написании роботов на LUA для терминала QUIK возникает проблема запуска робота после подключения к серверу.

Данную проблему можно решить следующим образом.

local start=false;

function main()

local i=200; local s=getInfoParam(«SERVERTIME»);
while i>=0 and s==»» do i=i-1; sleep(200) ; s=getInfoParam(«SERVERTIME»); end
start=true;

—…..

end

———————-

если в программе надо проверить подключение, то это лучше делать так:

if getInfoParam(«SERVERTIME»)==»» then

— подключения нет

else

—есть подключение

 

end;

Lua. IUP и QUIK

9 февраля, 2015

На днях решил вернуться к пакету IUP и проверить его работу в QUIK .

IUP — версия 3.13, QUIK  — версия 6.16.1.15.

Раньше не удавалось получить устойчивой работы пакета.

Произнеся несколько заклинаний , я с удовлетворением отметил, что тест не падает и ничего не роняет.
Предлагаю желающим повторить данный эксперимент.
Вот скрипт теста:
package.cpath =»C:/NK/DLL/?51.dll;»..»C:/NK/DLL/?.dll;»
require( «iuplua» )
require( «iupluacontrols» )
——————————————————————————
mat = iup.matrix{numcol=5, numlin=3,numcol_visible=5, numlin_visible=3, widthdef=34}
mat:setcell(0,0,»Inflation»)
mat:setcell(1,0,»Medicine»)
mat:setcell(2,0,»Food»)
mat:setcell(3,0,»Energy»)
mat:setcell(0,1,»January 2000″)
mat:setcell(0,2,»February 2000″)
mat:setcell(1,1,»5.6″)
mat:setcell(2,1,»2.2″)
mat:setcell(3,1,»7.2″)
mat:setcell(1,2,»4.6″)
mat:setcell(2,2,»1.3″)
mat:setcell(3,2,»1.4″)function mat:dropselect_cb(lin, col,drop, t, i, v)
endfunction mat:dropcheck_cb(lin, col)
if (lin==3 and col==1) then
return iup.DEFAULT
end
return iup.IGNORE
end function mat:drop_cb(drop, lin, col)
if (lin==3 and col==1) then
drop[1] = «A — Test of Very Big String for Dropdown!»
drop[2] = «B»
drop[3] = «C»
drop[4] = «XXX»
drop[5] = «5»
drop[6] = «6»
drop[7] = «7»
drop[8] = nil
return iup.DEFAULT
end
return iup.IGNORE
end
——————————————-
local start=false;
function OnClose()  end
function OnStop(s) start=false ; end
function OnConnected() end
function OnDisconnected() end
function OnCleanUp() end —смена сессии
——————————-
function main()
start=true;
local dlg = iup.dialog{iup.vbox{mat; margin=»10×10″}}
dlg:showxy(iup.CENTER, iup.CENTER)
if  iup.MainLoopLevel()==0 and start  then
iup.MainLoop()
end
iup.Close()
collectgarbage(«collect»)
end
 ———————————
несколько замечаний:
у меня все скрипты располагаются в каталоге NK на диске C.
В этом каталоге создан каталог DLL, в который я помещаю все свои и чужие dll.
Перед запуском теста надо сделать следующее.
Скопируйте содержимое Lua5.1 из пакета IUP в каталог DLL и в каталог QUIK. И вперед.