1. 程式人生 > >16-GPRS(Air202)關於多個檔案中的變數呼叫和定時器

16-GPRS(Air202)關於多個檔案中的變數呼叫和定時器

https://www.cnblogs.com/yangfengwu/p/9968405.html

因為自己看到好多問多個檔案呼叫的,感覺這個應該說一說

對了大家有沒有知道這個是幹什麼的

 

 大家有沒有看這篇 https://www.cnblogs.com/yangfengwu/p/8965054.html

 

 實際上,這是lua5.幾新加的功能,就是為了省掉那些複雜的程式

 我又新建了一個test1

 

讓test  呼叫 test1裡面的一個變數

    

 

 下載進去

 

 注意哈,這樣是不允許的,再用test1請求test檔案,然後呼叫test裡面的值

      

 

 

 如果想這樣做,其實可以再做一個檔案哈,裡面放一個變數,然後test和test1都可以請求這個檔案並操作這個變數

 

現在看定時器

 

我這裡就直接說啦  一次性的定時器(執行一遍就完)(不帶ID)

 

module(...,package.seeall)

--[[
函式名:print
功能  :列印介面,此檔案中的所有列印都會加上test字首
引數  :無
返回值:無
]]
local function print(...)
    _G.print(
"test",...) end local function Timer1() print("一次的定時器,沒有ID") end sys.timer_start(Timer1,10000)//延時10S呼叫Timer1函式

 

下載看看

 

 一次性的不需要關閉,因為是自己關閉

然後來個迴圈的

module(...,package.seeall)

--[[
函式名:print
功能  :列印介面,此檔案中的所有列印都會加上test字首
引數  :無
返回值:無
]]
local function print(...)
    _G.print(
"test",...) end local function Timer1() print("一次的定時器,沒有ID") end sys.timer_start(Timer1,10000) local function Timer2() print("這個是迴圈定時器,沒有ID") end sys.timer_loop_start(Timer2,2000)

 

 現在用一個變數在裡面加一,加到5停止這個定時器

module(...,package.seeall)

--[[
函式名:print
功能  :列印介面,此檔案中的所有列印都會加上test字首
引數  :無
返回值:無
]]
local function print(...)
    _G.print("test",...)
end

local function Timer1()
    print("一次的定時器,沒有ID")
end

sys.timer_start(Timer1,10000)


local cnt=0
local function Timer2()
    print("這個是迴圈定時器,沒有ID")
cnt=cnt+1
if cnt>=5 then cnt=0 sys.timer_stop(Timer2)--直接填入函式停止
print("這個是迴圈定時器,沒有ID,現在停止") end end sys.timer_loop_start(Timer2,
2000)

 

 

 

 現在說帶ID的,可以看一下

 

 

module(...,package.seeall)

--[[
函式名:print
功能  :列印介面,此檔案中的所有列印都會加上test字首
引數  :無
返回值:無
]]
local function print(...)
    _G.print("test",...)
end

local function Timer1()
    print("一次的定時器,沒有ID")
end

sys.timer_start(Timer1,10000)


local cnt=0
local function Timer2()
    print("這個是迴圈定時器,沒有ID")
    cnt=cnt+1
    if  cnt>=5 then
        cnt=0
        sys.timer_stop(Timer2)--直接填入函式停止
        print("這個是迴圈定時器,沒有ID,現在停止")
    end
end


sys.timer_loop_start(Timer2,2000)



local cnt1=0
local function Timer3()
    print("這個是迴圈定時器,有ID")
    cnt1=cnt1+1
    if  cnt1>=5 then
        cnt1=0
        sys.timer_stop(1)--直接填入函式停止
        print("這個是迴圈定時器,有ID,現在停止")
    end
end

sys.timer_loop_start(Timer3,2000,1)

 

 

 

 所以

 

 這樣可以停止

 好現在控制燈每進一次定時器就反轉一次,就是週期性亮滅

local function Timer4()
    pio.pin.setval(1-pio.pin.getval(pio.P0_5),pio.P0_5)
end
sys.timer_loop_start(Timer4,2000,1)

 

1-pio.pin.getval(pio.P0_5)
pio.pin.getval(pio.P0_5)是讀取引腳的高低電平狀態   1-這個(0或者1) 正好是反轉得到1和0
  

 

 最終所有的原始碼

 

module(...,package.seeall)

--[[
函式名:print
功能  :列印介面,此檔案中的所有列印都會加上test字首
引數  :無
返回值:無
]]
local function print(...)
    _G.print("test",...)
end

local function Timer1()
    print("一次的定時器,沒有ID")
end
sys.timer_start(Timer1,10000)


local cnt=0
local function Timer2()
    print("這個是迴圈定時器,沒有ID")
    cnt=cnt+1
    if  cnt>=5 then
        cnt=0
        sys.timer_stop(Timer2)--直接填入函式停止
        print("這個是迴圈定時器,沒有ID,現在停止")
    end
end
sys.timer_loop_start(Timer2,2000)



local cnt1=0
local function Timer3()
    print("這個是迴圈定時器,有ID")
    cnt1=cnt1+1
    if  cnt1>=5 then
        cnt1=0
        sys.timer_stop(Timer3,1)
        print("這個是迴圈定時器,有ID,現在停止")
    end
end
sys.timer_loop_start(Timer3,2000,1)



pio.pin.setdir(pio.OUTPUT,pio.P0_5)
pio.pin.setval(0,pio.P0_5)


local function Timer4()
    pio.pin.setval(1-pio.pin.getval(pio.P0_5),pio.P0_5)
end
sys.timer_loop_start(Timer4,2000,1)

 

定時器就說到這裡哈

資料原始碼連結

連結:https://pan.baidu.com/s/1-SRfsKGQ7rZVvFmp1ObHWw 密碼:p9qs

基礎教程原始碼連結如果失效,請在淘寶介紹中下載,由於連結還是失效,請聯絡賣家,謝謝

https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-18540610442.6.36a74814ZSaRsu&id=569295486025