LuatOS-SOC接口文档(air780E)--lcd - lcd驱动模块
常量
| 常量 | 类型 | 解释 |
|---|---|---|
| lcd.font_opposansm8 | font | 8号字体 |
| lcd.font_unifont_t_symbols | font | 符号字体 |
| lcd.font_open_iconic_weather_6x_t | font | 天气字体 |
| lcd.font_opposansm10 | font | 10号字体 |
| lcd.font_opposansm12 | font | 12号字体 |
| lcd.font_opposansm16 | font | 16号字体 |
| lcd.font_opposansm18 | font | 18号字体 |
| lcd.font_opposansm20 | font | 20号字体 |
| lcd.font_opposansm22 | font | 22号字体 |
| lcd.font_opposansm24 | font | 24号字体 |
| lcd.font_opposansm32 | font | 32号字体 |
| lcd.font_opposansm8_chinese | font | 8号中文字体 |
| lcd.font_opposansm10_chinese | font | 10号中文字体 |
| lcd.font_opposansm12_chinese | font | 12号中文字体 |
| lcd.font_opposansm16_chinese | font | 16号中文字体 |
| lcd.font_opposansm18_chinese | font | 18号中文字体 |
| lcd.font_opposansm20_chinese | font | 20号中文字体 |
| lcd.font_opposansm22_chinese | font | 22号中文字体 |
| lcd.font_opposansm24_chinese | font | 24号中文字体 |
| lcd.font_opposansm32_chinese | font | 32号中文字体 |
lcd.init(tp, args)
lcd显示屏初始化
参数
| 传入值类型 | 解释 |
|---|---|
| string | lcd类型,当前支持: |
| table | 附加参数,与具体设备有关: |
| userdata | spi设备,当port = “device”时有效 |
返回值
无
例子
-- 初始化spi0的st7735s 注意:lcd初始化之前需要先初始化spi
spi_lcd = spi.deviceSetup(0,20,0,0,8,2000000,spi.MSB,1,1)
log.info("lcd.init",
lcd.init("st7735s",{port = "device",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))
lcd.close()
关闭lcd显示屏
参数
无
返回值
无
例子
-- 关闭lcd lcd.close()
lcd.on()
开启lcd显示屏背光
参数
无
返回值
无
例子
-- 开启lcd显示屏背光 lcd.on()
lcd.off()
关闭lcd显示屏背光
参数
无
返回值
无
例子
-- 关闭lcd显示屏背光 lcd.off()
lcd.sleep()
lcd睡眠
参数
无
返回值
无
例子
-- lcd睡眠 lcd.sleep()
lcd.wakeup()
lcd唤醒
参数
无
返回值
无
例子
-- lcd唤醒 lcd.wakeup()
lcd.invon()
lcd反显
参数
无
返回值
无
例子
-- lcd反显 lcd.invon()
lcd.invoff()
lcd反显关闭
参数
无
返回值
无
例子
-- lcd反显关闭 lcd.invoff()
lcd.cmd(cmd)
lcd命令
参数
| 传入值类型 | 解释 |
|---|---|
| int | cmd |
返回值
无
例子
-- lcd命令 lcd.cmd(0x21)
lcd.data(data)
lcd数据
参数
| 传入值类型 | 解释 |
|---|---|
| int | data |
返回值
无
例子
-- lcd数据 lcd.data(0x21)
lcd.setColor(back,fore)
lcd颜色设置
参数
| 传入值类型 | 解释 |
|---|---|
| int | 背景色 |
| int | 前景色 |
返回值
无
例子
-- lcd颜色设置 lcd.setColor(0xFFFF,0x0000)
lcd.draw(x1, y1, x2, y2,color)
lcd颜色填充
参数
| 传入值类型 | 解释 |
|---|---|
| int | 左上边缘的X位置. |
| int | 左上边缘的Y位置. |
| int | 右下边缘的X位置. |
| int | 右下边缘的Y位置. |
| string | 字符串或zbuff对象 |
返回值
无
例子
-- lcd颜色填充
local buff = zbuff.create({201,1,16},0x001F)
lcd.draw(20,30,220,30,buff)
lcd.clear(color)
lcd清屏
参数
| 传入值类型 | 解释 |
|---|---|
| int | 屏幕颜色 可选参数,默认背景色 |
返回值
无
例子
-- lcd清屏 lcd.clear()
lcd.fill(x1, y1, x2, y2,color)
lcd颜色填充
参数
| 传入值类型 | 解释 |
|---|---|
| int | 左上边缘的X位置. |
| int | 左上边缘的Y位置. |
| int | 右下边缘的X位置,不含 |
| int | 右下边缘的Y位置,不含 |
| int | 绘画颜色 可选参数,默认背景色 |
返回值
无
例子
-- lcd颜色填充 lcd.fill(20,30,220,30,0x0000)
lcd.drawPoint(x0,y0,color)
画一个点.
参数
| 传入值类型 | 解释 |
|---|---|
| int | 点的X位置. |
| int | 点的Y位置. |
| int | 绘画颜色 可选参数,默认前景色 |
返回值
无
例子
lcd.drawPoint(20,30,0x001F)
lcd.drawLine(x0,y0,x1,y1,color)
在两点之间画一条线.
参数
| 传入值类型 | 解释 |
|---|---|
| int | 第一个点的X位置. |
| int | 第一个点的Y位置. |
| int | 第二个点的X位置. |
| int | 第二个点的Y位置. |
| int | 绘画颜色 可选参数,默认前景色 |
返回值
无
例子
lcd.drawLine(20,30,220,30,0x001F)
lcd.drawRectangle(x0,y0,x1,y1,color)
从x / y位置(左上边缘)开始绘制一个框
参数
| 传入值类型 | 解释 |
|---|---|
| int | 左上边缘的X位置. |
| int | 左上边缘的Y位置. |
| int | 右下边缘的X位置. |
| int | 右下边缘的Y位置. |
| int | 绘画颜色 可选参数,默认前景色 |
返回值
无
例子
lcd.drawRectangle(20,40,220,80,0x001F)
lcd.drawCircle(x0,y0,r,color)
从x / y位置(圆心)开始绘制一个圆
参数
| 传入值类型 | 解释 |
|---|---|
| int | 圆心的X位置. |
| int | 圆心的Y位置. |
| int | 半径. |
| int | 绘画颜色 可选参数,默认前景色 |
返回值
无
例子
lcd.drawCircle(120,120,20,0x001F)
lcd.drawQrcode(x, y, str, size)
缓冲区绘制QRCode
参数
| 传入值类型 | 解释 |
|---|---|
| int | x坐标 |
| int | y坐标 |
| string | 二维码的内容 |
| int | 显示大小 (注意:二维码生成大小与要显示内容和纠错等级有关,生成版本为1-40(对应 21x21 - 177x177)的不定大小,如果和设置大小不同会自动在指定的区域中间显示二维码,如二维码未显示请查看日志提示) |
返回值
| 返回值类型 | 解释 |
|---|---|
| nil | 无返回值 |
例子
无
lcd.setFont(font)
设置字体
参数
| 传入值类型 | 解释 |
|---|---|
| int | font lcd.font_XXX 请查阅常量表 |
返回值
无
例子
-- 设置为字体,对之后的drawStr有效,调用lcd.drawStr前一定要先设置-- 若提示 "only font pointer is allow" , 则代表当前固件不含对应字体, 可使用云编译服务免费定制 -- 云编译文档: https://wiki.luatos.com/develop/compile/Cloud_compilation.html-- lcd库的默认字体均以 lcd.font_ 开头 lcd.setFont(lcd.font_opposansm12) lcd.drawStr(40,10,"drawStr") sys.wait(2000) lcd.setFont(lcd.font_opposansm12_chinese) -- 具体取值可参考api文档的常量表 lcd.drawStr(40,40,"drawStr测试")
lcd.drawStr(x,y,str,fg_color)
显示字符串
参数
| 传入值类型 | 解释 |
|---|---|
| int | x 横坐标 |
| int | y 竖坐标 注意:此(x,y)为左下起始坐标 |
| string | str 文件内容 |
| int | fg_color str颜色 注意:此参数可选,如不填写则使用之前设置的颜色,绘制只会绘制字体部分,背景需要自己清除 |
返回值
无
例子
-- 显示之前先设置为中文字体,对之后的drawStr有效 lcd.setFont(lcd.font_opposansm12) lcd.drawStr(40,10,"drawStr") sys.wait(2000) lcd.setFont(lcd.font_opposansm16_chinese) lcd.drawStr(40,40,"drawStr测试")
lcd.drawGtfontGb2312(str,size,x,y)
使用gtfont显示gb2312字符串
参数
| 传入值类型 | 解释 |
|---|---|
| string | str 显示字符串 |
| int | size 字体大小 (支持16-192号大小字体) |
| int | x 横坐标 |
| int | y 竖坐标 |
返回值
无
例子
-- 注意, gtfont是额外的字体芯片硬件, 需要外挂在SPI总线才能调用本函数的
lcd.drawGtfontGb2312("啊啊啊",32,0,0)
lcd.drawGtfontGb2312Gray(str,size,gray,x,y)
使用gtfont灰度显示gb2312字符串
参数
| 传入值类型 | 解释 |
|---|---|
| string | str 显示字符串 |
| int | size 字体大小 (支持16-192号大小字体) |
| int | gray 灰度[1阶/2阶/3阶/4阶] |
| int | x 横坐标 |
| int | y 竖坐标 |
返回值
无
例子
-- 注意, gtfont是额外的字体芯片硬件, 需要外挂在SPI总线才能调用本函数的
lcd.drawGtfontGb2312Gray("啊啊啊",32,4,0,40)
lcd.drawGtfontUtf8(str,size,x,y)
使用gtfont显示UTF8字符串
参数
| 传入值类型 | 解释 |
|---|---|
| string | str 显示字符串 |
| int | size 字体大小 (支持16-192号大小字体) |
| int | x 横坐标 |
| int | y 竖坐标 |
返回值
无
例子
lcd.drawGtfontUtf8("啊啊啊",32,0,0)
lcd.drawGtfontUtf8Gray(str,size,gray,x,y)
使用gtfont灰度显示UTF8字符串
参数
| 传入值类型 | 解释 |
|---|---|
| string | str 显示字符串 |
| int | size 字体大小 (支持16-192号大小字体) |
| int | gray 灰度[1阶/2阶/3阶/4阶] |
| int | x 横坐标 |
| int | y 竖坐标 |
返回值
无
例子
lcd.drawGtfontUtf8Gray("啊啊啊",32,4,0,40)
lcd.getSize()
获取屏幕尺寸
参数
无
返回值
| 返回值类型 | 解释 |
|---|---|
| int | 宽, 如果未初始化会返回0 |
| int | 高, 如果未初始化会返回0 |
例子
log.info("lcd", "size", lcd.getSize())
lcd.drawXbm(x, y, w, h, data)
绘制位图
参数
| 传入值类型 | 解释 |
|---|---|
| int | X坐标 |
| int | y坐标 |
| int | 位图宽 |
| int | 位图高 |
| int | 位图数据,每一位代表一个像素 |
返回值
无
例子
-- 取模使用PCtoLCD2002软件即可 阴码 逐行 逆向 -- 在(0,0)为左上角,绘制 16x16 "今" 的位图 lcd.drawXbm(0, 0, 16,16, string.char(0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00 ))
lcd.showImage(x, y, file)
显示图片,当前只支持jpg,jpeg
参数
| 传入值类型 | 解释 |
|---|---|
| int | X坐标 |
| int | y坐标 |
| string | 文件路径 |
返回值
无
例子
lcd.showImage(0,0,"/luadb/logo.jpg")
lcd.flush()
主动刷新数据到界面, 仅设置buff且禁用自动属性后使用
参数
无
返回值
| 返回值类型 | 解释 |
|---|---|
| bool | 成功返回true, 否则返回nil/false |
例子
无
lcd.setupBuff(conf, onheap)
设置显示缓冲区, 所需内存大小为 2×宽×高 字节. 请衡量内存需求与业务所需的刷新频次.
参数
| 传入值类型 | 解释 |
|---|---|
| userdata | conf指针, 不需要传 |
| bool | true使用heap内存, false使用vm内存, 默认使用vm内存, 不需要主动传 |
返回值
| 返回值类型 | 解释 |
|---|---|
| bool | 是否成功 |
例子
-- 初始化lcd的buff缓冲区, 可理解为FrameBuffer区域. lcd.setupBuff()
lcd.autoFlush(enable)
设置自动刷新, 需配合lcd.setupBuff使用
参数
| 传入值类型 | 解释 |
|---|---|
| bool | 是否自动刷新,默认为true |
返回值
无
例子
-- 设置buff 并禁用自动更新 lcd.setupBuff() lcd.autoFlush(false) -- 禁止自动更新后, 需要使用 lcd.flush() 主动刷新数据到屏幕
lcd.rgb565(r, g, b, swap)
RGB565颜色生成
参数
| 传入值类型 | 解释 |
|---|---|
| int | 红色, 0x00 ~ 0xFF |
| int | 绿色, 0x00 ~ 0xFF |
| int | 蓝色, 0x00 ~ 0xFF |
| bool | 是否翻转, true 翻转, false 不翻转. 默认翻转 |
返回值
| 返回值类型 | 解释 |
|---|---|
| int | 颜色值 |
例子
-- 本API支持多种模式, 参数数量分别是 1, 2, 3, 4 -- 1. 单参数形式, 24bit RGB值, swap = true, 推荐 local red = lcd.rgb565(0xFF0000) local green = lcd.rgb565(0x00FF00) local blue = lcd.rgb565(0x0000FF)-- 2. 两参数形式, 24bit RGB值, 增加swap的设置 local red = lcd.rgb565(0xFF0000, true) local green = lcd.rgb565(0x00FF00, true) local blue = lcd.rgb565(0x0000FF, true)-- 3. 三参数形式, 红/绿/蓝, 各8bit local red = lcd.rgb565(0xFF, 0x00, 0x00) local green = lcd.rgb565(0x00, 0xFF, 0x00) local blue = lcd.rgb565(0x00, 0x00, 0xFF)-- 4. 四参数形式, 红/绿/蓝, 各8bit, 增加swap的设置 local red = lcd.rgb565(0xFF, 0x00, 0x00, true) local green = lcd.rgb565(0x00, 0xFF, 0x00, true) local blue = lcd.rgb565(0x00, 0x00, 0xFF, true)
相关文章:
LuatOS-SOC接口文档(air780E)--lcd - lcd驱动模块
常量 常量 类型 解释 lcd.font_opposansm8 font 8号字体 lcd.font_unifont_t_symbols font 符号字体 lcd.font_open_iconic_weather_6x_t font 天气字体 lcd.font_opposansm10 font 10号字体 lcd.font_opposansm12 font 12号字体 lcd.font_opposansm16 font…...
敏捷是怎么提高工作效率的
敏捷管理是一门极力减少不必要工作量的艺术。 谷歌、亚马逊、苹果、微信、京东等全球 500 强企业都在用的管理方法,适用于各行各业,被盛赞为应获“管理学的诺贝尔奖”。 它专注于让员工不受种种杂事的羁绊,激发个体斗志,释放出巨大…...
【C++】哈希的应用 -- 布隆过滤器
文章目录 一、布隆过滤器提出二、布隆过滤器概念三、布隆过滤器哈希函数个数的选择四、布隆过滤器的实现1.布隆过滤器的插入2.布隆过滤器的查找3.布隆过滤器删除4.完整代码实现 五、布隆过滤器总结1.布隆过滤器优点2.布隆过滤器缺陷3.布隆过滤器的应用4.布隆过滤器相关面试题 一…...
如何在Git中修改远程仓库地址
原文(可不登录复制代码):如何在Git中修改远程仓库地址-北的杂货间 Git是广泛使用的分布式版本控制系统,它允许开发者在本地仓库上工作,并将更改上传到远程仓库。然而,有时候你可能需要修改远程仓库的地址&…...
Go语言的sync.Once()函数
sync.Once 是 Go 语言标准库 sync 包提供的一个类型,它用于确保一个函数只会被执行一次,即使在多个 goroutine 中同时调用。 sync.Once 包含一个 Do 方法,其签名如下: func (o *Once) Do(f func()) Do 方法接受一个函数作为参数…...
修改 Stable Diffusion 使 api 接口增加模型参数
参考:https://zhuanlan.zhihu.com/p/644545784 1、修改 modules/api/models.py 中的 StableDiffusionTxt2ImgProcessingAPI 增加模型名称 StableDiffusionTxt2ImgProcessingAPI PydanticModelGenerator("StableDiffusionProcessingTxt2Img",StableDiff…...
微信小程序自定义组件及会议管理与个人中心界面搭建
一、自定义tabs组件 1.1 创建自定义组件 新建一个components文件夹 --> tabs文件夹 --> tabs文件 创建好之后win7 以上的系统会报个错误:提示代码分析错误,已经被其他模块引用,只需要在 在project.config.json文件里添加两行配置 &…...
UiPath:一家由生成式AI驱动的流程自动化软件公司
来源:猛兽财经 作者:猛兽财经 总结: (1)UiPath(PATH)的股价并没有因为生成式AI的炒作而上涨,但很可能会成为主要受益者。 (2)即使在严峻的宏观环境下,UiPath的收入还在不…...
使用AI编写测试用例——详细教程
随着今年chatGPT的大热,每个行业都试图从这项新技术当中获得一些收益我之前也写过一篇测试领域在AI技术中的探索:软件测试中的AI——运用AI编写测试用例现阶段AI还不能完全替代人工测试用例编写,但是如果把AI当做一个提高效率的工具ÿ…...
又哭又笑,这份面试宝典要是早遇到就好了
01、算法原理 选择排序(Selection sort)是一种简单直观的排序算法。 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素&#…...
订单30分钟自动关闭的五种解决方案
1 前言 在开发中,往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务 。那么这里就会产生一个问题,这…...
【vSphere 8 自签名 VMCA 证书】企业 CA 签名证书替换 vSphere VMCA CA 证书Ⅰ—— 生成 CSR
目录 替换拓扑图证书关系示意图说明 & 关联博文1. 默认证书截图2. 使用 certificate-manager 生成CSR2.1 创建存放CSR的目录2.2 记录PNID和IP2.3 生成CSR2.4 验证CSR 参考资料 替换拓扑图 证书关系示意图 本系列博文要实现的拓扑是 说明 & 关联博文 因为使用企业 …...
【diffusion model】扩散模型入门
写在最前,参加DataWhale 10月组队学习。 参考资料: HuggingFace 开源diffusion-models-class 1.扩散模型介绍 2.调用模型生成一张赛博风格的猫咪图片 2.1 安装依赖包 %pip install -qq -U diffusers datasets transformers accelerate ftfy pyarrow9…...
[Spring]为什么Spring动态代理默认使用CGlib,而不是JDK代理?
文章目录 原因一:CGlib不需要接口原因二:CGlib效率高原因三:JDK代理会导致注解失效如果希望使用JDK代理扩展AOP in Spring Boot, is it a JDK dynamic proxy or a Cglib dynamic proxy?SpringSpringBoot 原因一:CGlib不需要接口 …...
最长上升子序列(二分)代码模板
用二分的思想求最长上升子序列的思想就是保持单调性,用一个q[]数组来作为一个单调数组。 每次将a[i]放进q数组中,但是要保持单调性,q数组的长度就是答案。 q[]数组中存的是所以以下标为长度的最长子序列的结尾的最小值。 理解q[]数组的意义…...
存储优化知识复习一详细版解析
存储优化 知识复习一 一、 选择题 1、1948 年,____提出了“信息熵”(shāng) 的概念,解决了对信息的量化度量问题。 A、薛定谔 B、香农 C、克劳修斯 D、纳什 【参考答案】B2、 RAID2.0技术下,LUN是建立在____上。 A、硬盘 B、条带 C、Chun…...
“暂停加息,股市低迷:242只股票创新低,比特币突破2.8万美元后看涨趋势不可挡!“
11 月1日 FOMC 会议 美联储主席杰罗姆鲍威尔周五在纽约发表讲话,毫不意外地,他采取了更加鸽派的立场,因为在不确定的世界中,美国政府的过度杠杆化和可能即将到来的经济衰退已成为共识。 根据鲍威尔对未来加息的最低限度讨论&…...
微信小程序会议OA系统其他页面
前言: 及上一文章:https://blog.csdn.net/djssubddbj/article/details/133895170?spm1001.2014.3001.5501我们所写的会议OA的首页,在这个上面我们继续完成我们的会议OA系统,这是我们的本期所要完成的页面 自定义组件 微信小程序…...
LabVIEW中使用Get LV Class Default Value 出现错误1498
LabVIEW中使用Get LV Class Default Value 出现错误1498 在LabVIEW中开发了一个应用程序,其中包含可以在执行时动态配置插件的基类。生成可执行文件后,当应用程序要执行子类时,收到以下错误信息。 Error1498 occurred at Gen LV Class Defa…...
RabbitMQ中的核心概念和交换机类型
目录 一、RabbitMQ相关概念二、Exchange类型三、RabbitMQ概念模型总结 一、RabbitMQ相关概念 Producer:生产者,就是投递消息的一方。生产者创建消息,然后发布到RabbitMQ中。消息一般可以包含两个部分:消息体和附加消息。 消息体…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
