前言
今天和一個(gè)同事在聊天夷家,聊到一個(gè)客戶希望在臺(tái)達(dá)的觸摸屏上實(shí)現(xiàn)以下功能:
在設(shè)定時(shí)間內(nèi)仿便,沒有操作人員沒有操作觸摸屏呼巷,讓觸摸屏自動(dòng)的跳轉(zhuǎn)到指定的頁(yè)面。
最開始我想到的是利用觸摸屏自帶的屏保的功能想诅,不過,實(shí)驗(yàn)后發(fā)現(xiàn)岛心,如果只是指定某一個(gè)頁(yè)面為屏保的話来破,頁(yè)面的數(shù)據(jù)是不會(huì)進(jìn)行更新的。這顯然不符合工業(yè)的操作習(xí)慣和需求忘古。
正文
采用DOP-100系列開始后全系列都內(nèi)置了Lua 程序讳癌。
直接附上測(cè)試界面和程序
測(cè)試界面
image
image
Lua程序
--臺(tái)達(dá)DOP-100系列觸摸無操作定時(shí)跳轉(zhuǎn)指定頁(yè)面
while true do
--獲取鼠標(biāo)坐標(biāo)X,Y
x = sys.GetInterParam("TP_X")
y = sys.GetInterParam("TP_Y")
--讀取$2的值寫入z變量
z = mem.inter.Read(2)
--讀取$3的值寫入u變量
u = mem.inter.Read(3)
--防止沒有設(shè)置無法跳回原來頁(yè)面
if (u == 0) then
mem.inter.Write(3, 10)
end
--讀取$4的值寫入p變量
p = mem.inter.Read(4)
-- one cycle is 100ms
sys.Sleep(100)
--分別把X坐標(biāo)寫入$0,Y坐標(biāo)寫入$1
mem.inter.Write(0, x)
mem.inter.Write(1, y)
--讀取$0的值寫入x1變量,讀取$1的值寫入y1變量
x1 = mem.inter.Read(0)
y1 = mem.inter.Read(1)
--判斷鼠標(biāo)是否在當(dāng)前位置停留
if (x1 == sys.GetInterParam("TP_X")) then
if (y1 == sys.GetInterParam("TP_Y")) then
z1 = z + 1
mem.inter.Write(2, z1)
else
mem.inter.Write(2, 0)
end
else
mem.inter.Write(2, 0)
end
--計(jì)時(shí)時(shí)間到存皂,跳轉(zhuǎn)頁(yè)面
if (z1 >= u) then
screen.Open(p)
z1 = 0
mem.inter.Write(2, 0)
end
end
結(jié)尾
結(jié)合上面實(shí)例晌坤,最終實(shí)現(xiàn)客戶需要的功能: 在設(shè)定時(shí)間內(nèi),沒有操作人員沒有操作觸摸屏旦袋,讓觸摸屏自動(dòng)的跳轉(zhuǎn)到指定的頁(yè)面骤菠。
Log:
2021-03-25 發(fā)布本文