上位机图像处理和嵌入式模块部署(树莓派4b使用lua)

ops/2024/10/22 2:43:44/

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        lua是一个脚本语言,比c语言开发容易,也没有python那么重,整体使用还是非常方便的。一般当成胶水语言进行开发,非常方便。不过考虑到还有很多的同学没有接触过lua,今天主要讨论下在树莓派4b上怎么使用lua

1、下载lua

        直接从官方下载最新版本的lua语言即可,

https://www.lua.org/download.html

2、编译lua

        因为树莓配4b本身包含了gcc和g++编译器,所以可以直接从开发板上面进行编译开发。首先解压软件,

tar xzvf lua-5.4.6.tar.gz

        解压完了,接着就是直接进行编译,

cd lua-5.4.6/
make linux

        编译结束之后,不出意外的话,我们就可以看到两个生成的可执行文件,一个静态库文件。其中可执行文件是lua,编译文件是luac,静态库文件是liblua.a。

3、最简单的打印hello.lua

        学习一门新的语言,可以从hello world开始。最简单的脚本就是这样的一个hello.lua文件,

print("Hello World!")

        执行方法有两种,第一种就是用./src/luac hello.lua,生成luac.out,然后用lua来执行luac.out文件。还有一种就是直接用./src/lua hello.lua来执行。因为我们刚开始学习,所以建议采用后面一种方法。

4、循环文件loop.lua

        一般学习语言,无非就是变量、判断、循环和函数。这里,我们来看看循环应该怎么处理的,

while( true )
doprint("循环将永远执行下去")
end

5、函数文件function.lua

        看过了循环,接着继续看函数文件function.lua的实现过程,

--[[ 函数返回两个值的最大值 --]]
function max(num1, num2)if (num1 > num2) thenresult = num1;elseresult = num2;endreturn result;
end
-- 调用函数
print("两值比较最大值为 ",max(10,4))
print("两值比较最大值为 ",max(5,6))

        函数本身不复杂,注意这里的--代表注释,稍微留心一下即可。

6、类的定义文件class.lua

        本身lua是一个面向对象的语言,我们可以简单看下,在lua下面class.lua是如何进行处理和定义的。

-- 元类
Shape = {area = 0}-- 基础类方法 new
function Shape:new (o,side)o = o or {}setmetatable(o, self)self.__index = selfside = side or 0self.area = side*side;return o
end-- 基础类方法 printArea
function Shape:printArea ()print("面积为 ",self.area)
end-- 创建对象
myshape = Shape:new(nil,10)myshape:printArea()

7、更重要的学习

        很多时候,我们使用lua作为胶水语言来进行业务处理。主要还是看重了它可以快速开发的特点。这种情况下,底层开发语言一般用c/c++语言,上层业务用lua语言。所以这个时候,大家还要学习下c语言和lua之间相互调用的方法和过程,这一点比较重要。


http://www.ppmy.cn/ops/33188.html

相关文章

C语言什么是指向函数的指针?

一、问题 指针可以指向普通数值、数组,还可以指向指针,那么可以指向函数吗?答案是可以, 那么它是什么样的呢? 二、解答 ⼀个函数在编译时被分配⼀个⼊⼜地址,这个地址就称为函数的指针。所以,可…

图像识别 之 目标检测

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#xf…

巧用 TiCDC Syncpiont 构建银行实时交易和准实时计算一体化架构

本文阐述了某商业银行如何利用 TiCDC Syncpoint 功能,在 TiDB 平台上构建一个既能处理实时交易又能进行准实时计算的一体化架构,用以优化其零售资格业务系统的实践。通过迁移到 TiDB 并巧妙应用 Syncpoint,该银行成功解决了原有多个 MySQL 集…

Vue项目解决自定义el-dialog的border-radius无效的问题

一、问题产生的原因 自定义el-dialog的border-radius无效的原因其实就是因为层级的问题, f12打开样式检查就能发现组件自身已经全局定义了一个圆角变量 二、解决方法 和上面一样,在项目全局也就是在app.vue中定义全局变量 并且需要给!important&a…

上位机图像处理和嵌入式模块部署(树莓派4b和qt应用全屏占有)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 我们都知道,嵌入式应用一般都是为了某一个特定应用而存在的。也就是说,和pc不同,这个嵌入式板子一般都是为了解…

课题学习(二十三)---三轴MEMS加速度计芯片ADXL372

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。 一、基础配置 测量范围-200g-200g,分辨率为12位, V s 、 V D D I / O V_s、V_{DDI/O} Vs​、VDDI/O​范围为1.6V-3.5V 1.1 引脚配…

python使用opencv对图像的基本操作(3)

17.颜色空间的转换 17.1.rgb图像转gray图像 from skimage import io,color img io.imread(lbxx.jpg) img_gray color.rgb2gray(img) #将rgb图像转换成gray图像 io.imshow(img_gray)运行结果: 17.2.rgb图像转hsv图像 from skimage import io,color img io.im…

ubuntu20中ros与anaconda的python版本冲突问题

系统环境 原本系统是ubuntu20 noetic,python都在/usr/bin中,一共是两个版本的python,一个是python3.8,另一个是python2.7。 问题发现 当安装anaconda后,并且将anaconda的bin目录加入到系统环境中时候,…