Lua 语言Luatos 开发板学习遇到的问题,关于wait() 延时函数要写在task 下,MQTT开始学习、当时写I2C调不通的原因
内容纲要

今天遇到的问题

  1. 我想调用string 的一个函数, 我像C++ 或者JAVA 一样直接 . 它,其实我想调用它的是一个参数,应该用,这个BUG 找了好久。
  2. 在不同的分文件下面的函数,要调用它的函数需要 前面写文件名,以示区分。在C/C++ 中,这种调用往往是在头文件中引入的,所以会区分。由于在lua 中没有头文件,所以需要人为手动调用。
  3. 就是因为2 中的调用问题,导致 我以为 sys.taskInit() 函数启动不成功,而且编译器还不报错,
  4. 所有调用过sys 下的 sys.wait() sys.timerLoopStart() sys.waitUntil() 等这类函数 都必须在 sys.task 中执行, 不然报错,如果你把一个普通函数

第二天遇到的问题

  • if else 中,第二个要用 elseif, 我忘记写if 了,导致限定val 的值的时候没执行外部函数写的判断语句,而我找问题点却是在外部函数找。(属于疏忽大意)
  • 数据位读取的时候 lua 是从1 开始,C 语言是从0

开始TCP/MQTT 的学习

  • setmetatable() 函数

    参考地址

    setmetatable(o,mt)

    第一个o 是一个 普通 tab 表,mt 中存放的是索引 __index

    file

一个疑问?,如果 require 多层 ,通过调用深层的函数获得一个setmetatable(o,mt) ,这种类型的在 浅层的文件 传参到另一个lua 文件下,

懂了,编译器的认知,

  • table 函数库。 remove ,insert 等函数

    参考地址

  • question: 函数名字当成一个形参 放到table 表中,的含义。

    file

I2c 没调通的原因

  • 下方代码是我写的I2C,这里测试不用CRC校验,这里之前遇到的问题点,recv 必须要放在循环里面,不断地读它。这样才能轮询到所要数据,当然这个循环也要有一个超时的条件,一般I2C还是要有CRC校验的
local function i2c_Send_SHT20(command)
    -- local recvCount = 0
    i2c_send(command) -- 这里已经确定了要获取 温度 or 湿度,所以不必关心recv 收到的数据
    local retryCount = 0
    while retryCount < 10 do
        -- 取得1bit 数据,有2个字节 就回传   只要2个字节,就不进行校验了。
            -- 设置定时器,超时就return
        recv = i2c_recv(2)
        if recv and #recv >= 2 then return true end
        sys.wait(10)
        retryCount = retryCount + 1
    end
    log.info("cacheDATA没有收到数据到数据!!", recv)
    return false
    -- 判断是否收到数据,如果收到就返回并跳出,如果没收到就回调
end
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇