esp32c3 luaos

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、介绍
  • 二、相关介绍
    • 2.1helloworld——
    • 2.2任务框架
    • 2.3消息传递 与消息订阅
    • 2.4uart
    • 2.5二进制数据/c结构体的打包与解析
    • 2.6 zbuffer库
    • 2.8 uart 485 数据解析
    • 2.9 点亮自带的lcd
    • 2.10 lcd显示文字和显示中文字体
    • 2.11 lcd显示文字和显示中文字体
    • 1.引入库
  • 二、联网
    • 2.1 连接wifi,并支持smartconfig配网 现在缺少一个判断有数据但是没有这个网络,需要重新配网的一个局面
    • 2.2 连接阿里云平台


前言

官网固件处讲解
现在已经不推本地的tools进行esp32c3的烧录; 时间(2024.8.21)

在这里插入图片描述
这上面说推荐直接云客户端
直接看官网云客户端配置


提示:以下是本篇文章正文内容,下面案例可供参考

一、介绍

在这里插入图片描述
在这里插入图片描述
其他介绍看这个

二、相关介绍

上面云端的那个地方就是进行一些固件,不是正在的代码编写。
他没有专有的ide要在vscode里面编写。环境搭建
烧录教程此时resource里面是没有esp32的需要使用上面的云端那个配置soc固件烧到板子里面
此时两个gpio灯微微亮。

2.1helloworld——

这时候我们用vscode编写代码

PROJECT = "hello_world"
VERSION = "0.0.1"sys = require"sys"
--代码区startlocal LEDA= gpio.setup(12, 0, gpio.PULLUP)
local LEDB= gpio.setup(13, 0, gpio.PULLUP)print("hello world")-- LEDA(0)
--代码区endsys.run()

2.2任务框架

然后将脚本烧录了。
使用任务的方式进行闪烁
有需要任务框架教程
对于gpio的操作

PROJECT = "hello_world"
VERSION = "0.0.1"sys = require("sys")
--代码区startlocal LEDA= gpio.setup(12, 0, gpio.PULLUP)
local LEDB= gpio.setup(13, 0, gpio.PULLUP)sys = require("sys")
--第一个任务
sys.taskInit(function()while true dolog.info("task1","-----")print("system start")sys.wait(500) --延时500m秒,这段时间里可以运行其他代码end
end)--第二个任务
sys.taskInit(function()while true dolog.info("task2","------")LEDA(1)LEDB(1)sys.wait(500) --延时0.5秒,这段时间里可以运行其他代码LEDA(0)LEDB(0)sys.wait(500) --延时0.5秒,这段时间里可以运行其他代码end
end)print("system start\n")-- LEDA(0)
--代码区endsys.run()

即可完成打印和闪烁
对于这个函数的定义以及任务的定义 ,也可以采用这种方式

PROJECT = "hello_world"
VERSION = "0.0.1"sys = require("sys")
--代码区startlocal LEDA= gpio.setup(12, 0, gpio.PULLUP)
local LEDB= gpio.setup(13, 0, gpio.PULLUP)sys = require("sys")
--第一个任务function task1()while true dolog.info("task1","-----")print("system start")sys.wait(500) --延时500m秒,这段时间里可以运行其他代码end
end
--第二个任务
sys.taskInit(function()while true dolog.info("task2","------")LEDA(1)LEDB(1)sys.wait(500) --延时0.5秒,这段时间里可以运行其他代码LEDA(0)LEDB(0)sys.wait(500) --延时0.5秒,这段时间里可以运行其他代码end
end)sys.taskInit(task1)print("system start\n")-- LEDA(0)
--代码区endsys.run()

2.3消息传递 与消息订阅

消息传递
sys.publish
sys.waitUntil
在这里插入图片描述
在这里插入图片描述

订阅消息
sys.subcribe
sys.unsubcribe

在这里插入图片描述

2.4uart

local LEDA= gpio.setup(12, 0, gpio.PULLUP)
local LEDB= gpio.setup(13, 0, gpio.PULLUP)
local uartid = 1
--初始化
uart.setup(uartid,--串口id115200,--波特率8,--数据位1--停止位
)
-- 收取数据会触发回调, 这里的"receive" 是固定值
uart.on(uartid, "receive", function(id, len)local s = uart.read(id, len)if #s > 0 then -- #s 是取字符串的长度if s == "on" thenLEDA(1)elseif s == "off" thenLEDA(0)end-- 如果传输二进制/十六进制数据, 部分字符不可见, 不代表没收到-- 关于收发hex值,请查阅 https://doc.openluat.com/article/583log.info("uart", "receive", id, #s, s)-- log.info("uart", "receive", id, #s, s:toHex())end-- 如使用2024.5.13之前编译的ESP32C3/ESP32S3固件, 恢复下面的代码可以正常工作-- if #s == len then--     break-- endend)

2.5二进制数据/c结构体的打包与解析

视频
在这里插入图片描述
在这里插入图片描述

2.6 zbuffer库

在这里插入图片描述
在这里插入图片描述

2.8 uart 485 数据解析

2.9 点亮自带的lcd

云平台要把这个打开,其他的不变

在这里插入图片描述
然后复制demo里面的代码
也可以打图片也放进去
在这里插入图片描述
这样屏幕就能正常显示了
精简以后的代码


-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "lcddemo"
VERSION = "1.0.0"log.info("main", PROJECT, VERSION)-- sys库是标配
_G.sys = require("sys")-- 提示:
-- 1. 只使用SPI的时钟线(SCK)和数据输出线(MOSI), 其他均为GPIO脚
-- 2. 数据输入(MISO)和片选(CS), 虽然是SPI, 但已复用为GPIO, 并非固定,是可以自由修改成其他脚
-- 3. 若使用多个SPI设备, 那么RES/CS请选用非SPI功能脚
-- 4. BL可以不接的, 若使用Air10x屏幕扩展板,对准排针插上即可
-- ]]--添加硬狗防止程序卡死
if wdt thenwdt.init(9000)--初始化watchdog设置为9ssys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
endlocal spi_id,pin_reset,pin_dc,pin_cs,bl = 2,10,6,7,11spi_lcd = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,0)
port = "device"
print('hello2222222222222222')lcd.init("st7735v",{port = port,pin_dc = pin_dc, pin_pwr = bl, pin_rst = pin_reset,direction = 1,w = 160,h = 80,xoffset = 0,yoffset = 24},spi_lcd)--如果显示颜色相反,请解开下面一行的注释,关闭反色--lcd.invoff()--0.96寸TFT如果显示依旧不正常,可以尝试老版本的板子的驱动-- lcd.init("st7735s",{port = port,pin_dc = pin_dc, pin_pwr = bl, pin_rst = pin_reset,direction = 2,w = 160,h = 80,xoffset = 0,yoffset = 0},spi_lcd)-- 不在内置驱动的, 看demo/lcd_customsys.taskInit(function()-- 开启缓冲区, 刷屏速度回加快, 但也消耗2倍屏幕分辨率的内存-- lcd.setupBuff()          -- 使用lua内存-- lcd.setupBuff(nil, true) -- 使用sys内存, 只需要选一种-- lcd.autoFlush(false)while 1 dolcd.clear()log.info("wiki", "https://wiki.luatos.com/api/lcd.html")-- API 文档 https://wiki.luatos.com/api/lcd.htmlif lcd.showImage then-- 注意, jpg需要是常规格式, 不能是渐进式JPG-- 如果无法解码, 可以用画图工具另存为,新文件就能解码了lcd.showImage(40,0,"/luadb/logo.jpg")sys.wait(100)endlog.info("lcd.drawLine", lcd.drawLine(20,20,150,20,0x001F))log.info("lcd.drawRectangle", lcd.drawRectangle(20,40,120,70,0xF800))log.info("lcd.drawCircle", lcd.drawCircle(50,50,20,0x0CE0))sys.wait(1000)end
end)-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

上面是没有开启缓冲区,下面这里开启了 缓冲区。注意才操作完以后一定要写lcd.flush()不然不会进行显示

sys.taskInit(function()-- 开启缓冲区, 刷屏速度回加快, 但也消耗2倍屏幕分辨率的内存lcd.setupBuff()          -- 使用lua内存-- lcd.setupBuff(nil, true) -- 使用sys内存, 只需要选一种lcd.autoFlush(false)while 1 dolcd.clear()lcd.flush()log.info("wiki", "https://wiki.luatos.com/api/lcd.html")-- API 文档 https://wiki.luatos.com/api/lcd.htmlif lcd.showImage then-- 注意, jpg需要是常规格式, 不能是渐进式JPG-- 如果无法解码, 可以用画图工具另存为,新文件就能解码了lcd.showImage(40,0,"/luadb/logo.jpg")-- sys.wait(100)endlog.info("lcd.drawLine", lcd.drawLine(20,20,150,20,0x001F))log.info("lcd.drawRectangle", lcd.drawRectangle(20,40,120,70,0xF800))log.info("lcd.drawCircle", lcd.drawCircle(50,50,20,0x0CE0))lcd.flush()sys.wait(1000)end
end)

2.10 lcd显示文字和显示中文字体

需要云编译配置这几项
在这里插入图片描述

然后在代码里面写

--- 模块功能:lcddemo
-- @module lcd
-- @author Dozingfiretruck
-- @release 2021.01.25-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "lcddemo"
VERSION = "1.0.0"log.info("main", PROJECT, VERSION)-- sys库是标配
_G.sys = require("sys")-- 提示:
-- 1. 只使用SPI的时钟线(SCK)和数据输出线(MOSI), 其他均为GPIO脚
-- 2. 数据输入(MISO)和片选(CS), 虽然是SPI, 但已复用为GPIO, 并非固定,是可以自由修改成其他脚
-- 3. 若使用多个SPI设备, 那么RES/CS请选用非SPI功能脚
-- 4. BL可以不接的, 若使用Air10x屏幕扩展板,对准排针插上即可
-- ]]--添加硬狗防止程序卡死
if wdt thenwdt.init(9000)--初始化watchdog设置为9ssys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
endlocal spi_id,pin_reset,pin_dc,pin_cs,bl = 2,10,6,7,11spi_lcd = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,0)--打开spi
port = "device"
print('hello2222222222222222')lcd.init("st7735v",{port = port,pin_dc = pin_dc, pin_pwr = bl, pin_rst = pin_reset,direction = 1,w = 160,h = 80,xoffset = 0,yoffset = 24},spi_lcd)--如果显示颜色相反,请解开下面一行的注释,关闭反色--lcd.invoff()--0.96寸TFT如果显示依旧不正常,可以尝试老版本的板子的驱动-- lcd.init("st7735s",{port = port,pin_dc = pin_dc, pin_pwr = bl, pin_rst = pin_reset,direction = 2,w = 160,h = 80,xoffset = 0,yoffset = 0},spi_lcd)-- 不在内置驱动的, 看demo/lcd_customsys.taskInit(function()-- 开启缓冲区, 刷屏速度回加快, 但也消耗2倍屏幕分辨率的内存lcd.setupBuff()          -- 使用lua内存-- lcd.setupBuff(nil, true) -- 使用sys内存, 只需要选一种lcd.autoFlush(false)while 1 dolcd.clear()lcd.flush()lcd.setFont(lcd.font_opposansm12)lcd.drawStr(40,10,"drawStr")lcd.setFont(lcd.font_sarasa_m14_chinese)-- 具体取值可参考api文档的常量表lcd.drawStr(40,40,"drawStr测试")lcd.flush()sys.wait(1000)end
end)-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

2.11 lcd显示文字和显示中文字体

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

二、联网

2.1 连接wifi,并支持smartconfig配网 现在缺少一个判断有数据但是没有这个网络,需要重新配网的一个局面

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "wifidemo"
VERSION = "1.0.0"-- 引入必要的库文件(lua编写), 内部库不需要require
sys = require("sys")
require("sysplus")-- -- wifi扫描成功后, 会有WLAN_SCAN_DONE消息, 读取即可
-- sys.subscribe("WLAN_SCAN_DONE", function ()
--     local results = wlan.scanResult()
--     log.info("scan", "results", #results)
--     for k,v in pairs(results) do
--         log.info("scan", v["ssid"], v["rssi"], (v["bssid"]:toHex()))
--     end
-- end)-- sys.taskInit(function()
--     sys.wait(1000)
--     wlan.init()
--     while 1 do
--         wlan.scan()
--         sys.wait(30000) -- 注意, 尤其是Air780系列, 这个时间只能更长不能短
--     end
-- end)
if wdt then--添加硬狗防止程序卡死,在支持的设备上启用这个功能wdt.init(9000)--初始化watchdog设置为9ssys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
end
fskv.kvdb_init()sys.subscribe("IP_READY", function(ip) -- 联网成功的订阅log.info("wlan", "ip ready", ip)-- 联网成功, 可以发起http, mqtt, 等请求了
end)
-- sys.subscribe("IP_ERROR", function() -- 联网失败的订阅
--     log.info("联网失败 ")
-- end)sys.taskInit(function()sys.wait(2000)wlan.init()sys.wait(1000)-- 获取上次保存的配网信息, 如果存在就直接联网, 不需要配网了-- 注意, fskv保存的数据是掉电存储的, 刷脚本/刷固件也不会清除-- 如需完全清除配置信息, 可调用 fskv.clear() 全清if fskv.kv_get("wlan_ssid") thenwlan.connect(fskv.kv_get("wlan_ssid"), fskv.kv_get("wlan_passwd"))log.info( "fskv有联网数据")log.info( "正在连接请稍等******")--可能连接不成功,如果连接超时了(要有一个定时器计时),就让定时器打开"start_smartconfig"return -- 等联网就行了elselog.info( "fskv中没有联网数据")sys.publish("start_smartconfig")end-- wlan.connect("linsen66", "66668888")-- log.info("wlan", "wait for IP_READY")-- sys.waitUntil("IP_READY", 30000)-- if wlan.ready() then--     log.info("wlan", "ready !!")--     sys.wait(100)-- else--     print("wlan NOT ready!!!!")-- endwhile 1 dosys.waitUntil("start_smartconfig")-- 启动配网, 默认是esptouch模式     wlan.smartconfig(wlan.AIRKISS) 是AIRKISS 模式wlan.smartconfig(wlan.AIRKISS)log.info( "打开esptouch模式 的smartconfig")local ret, ssid, passwd = sys.waitUntil("SC_RESULT", 3*60*1000) --3分钟if ret == false thenlog.info("timeout stop smartconfig")wlan.smartconfig(wlan.STOP)-- sys.wait(3000) -- 再等3s重新配网, 或者直接reboot也行else-- 获取配网后, ssid和passwd会有值log.info("获取到的账号和密码 ", ssid, passwd)-- 获取IP成功, 将配网信息存入fskv, 做持久化存储log.info("fskv", "save ssid and passwd")fskv.kv_set("wlan_ssid", ssid)fskv.kv_set("wlan_passwd", passwd)endsys.wait(1000)end
end)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

在这里插入图片描述
在这里插入图片描述

2.2 连接阿里云平台

参考文档1
参考文档2
参考文档3

代码

参考视频

云端配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上传数据参考

local basedata =
{method = "thing.event.property.post",id = "1",params = {data_contral = 1},version  = "1.0",
}
local led1_data =
{method = "thing.event.property.post",id = "1",params = {led_contral_1 = 0},version  = "1.0",
}
--发布一条QOS为1的消息
function publishTest()--注意:在此处自己去控制payload的内容编码,aLiYun库中不会对payload的内容做任何编码转换-- aliyun.publish(topic,qos,payload,cbFnc,cbPara)log.info("aliyun", "上行数据")jsondata = json.encode(basedata)aliyun.publish("/sys/k021qfZofse/demo_1/thing/event/property/post",1,jsondata,publishTestCb,"publishTest_"..publishCnt)jsonled1= json.encode(led1_data)aliyun.publish("/sys/k021qfZofse/demo_1/thing/event/property/post",1,jsonled1,publishTestCb,"publishTest_"..publishCnt)-- aliyun.publish("/"..tPara[ProductKey]"/"..tPara[DeviceName].."/update",1,12)-- aliyun.publish("/k021qfZofse/demo_1/data_contral",1,"100")-- /sys/k021qfZofse/demo_1/thing/event/property/post
end

下传数据参考
这里进行调试,点击设置以后数据发送到esp32 使用串口产看数据

    -- /sys/k021qfZofse/demo_1/thing/service/property/set-- {"method":"thing.service.property.set","id":"1083737772",-- "params":{"led_contral_1":0,"led_contral_2":1,"data_contral":1},"version":"1.0.0"}-- 	0	0	0

其中"data_contral":1是我们需要的
在这里插入图片描述

使用这种方式就可以把数据解析出来

local function rcvCbFnc(topic,payload,qos,retain,dup)log.info("aliyun", "收到下行数据", topic,payload,qos,retain,dup)anly_data = json.decode(payload)contral_led = anly_data["params"]["led_contral_2"]print("contral_led的数据是------:",contral_led)
end

相关代码。

gitee

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/52217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入探讨 ElementUI 动态渲染 el-table

在前端开发中,表格是不可或缺的一部分。无论是数据展示、数据录入,还是数据分析,表格都扮演着重要的角色。而在 Vue.js 生态系统中,ElementUI 提供了一个强大且灵活的表格组件——el-table。本文将带你深入了解如何使用 ElementUI…

缓存实现方式

缓存是一个常见的话题,因为它对于提高应用程序性能至关重要。缓存是一种存储数据的临时地方,以便快速访问数据,减少对原始数据源(如数据库或文件系统)的访问次数,从而提高应用程序的响应速度和吞吐量。 Jav…

【运维】Linux如何解压.rar文件

在Linux系统中解压.rar文件,你可以使用unrar或rar工具。如果系统中还没有安装它们,可以先通过包管理器进行安装。以下是具体步骤: 1. 安装 unrar 对于基于Debian的发行版(如Ubuntu):sudo apt-get install unrar对于基于Red Hat的发行版(如CentOS、Fedora):sudo yum i…

【Nodejs】六、express框架

目录 一、express 介绍 二、express 使用 2.1 express 下载 2.2 express 使用 三、express 路由 3.1 什么是路由 3.2 路由的使用 3.3 获取请求参数 3.4 获取路由参数 四、express 响应设置 五、express 中间件 5.1 什么是中间件 5.2 中间件的作用 5.3 中间件的类…

如何应对突发技术故障和危机:开发团队的应急策略

开发团队如何应对突发的技术故障和危机? 在数字化时代,软件服务的稳定性对于企业至关重要。然而,即使是大型平台,如网易云音乐,也可能遇到突发的技术故障。网页端出现502 Bad Gateway 报错,且App也无法正常…

如何在VMware ESXI中创建Linux虚拟机并实现异地SSH远程访问

目录 ⛳️推荐 前言 1. 在VMware ESXI中创建Ubuntu虚拟机 2. Ubuntu开启SSH远程服务 3. 安装Cpolar工具 4. 使用SSH客户端远程访问Ubuntu 5. 固定TCP公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不…

生产环境docker nginx+php8.0镜像

生产环境docker nginxphp8.0镜像 自定义创建php8.0镜像,创建dockerfile FROM php:8.0-fpm# 安装系统依赖 RUN sed -i s|http://deb.debian.org/debian|http://mirrors.aliyun.com/debian|g /etc/apt/sources.list && \apt-get update && apt-get i…

重塑“我店”平台:绿色积分引领的数字消费新纪元

在数字化转型的洪流中,“我店”平台凭借其创新的绿色积分体系异军突起,成为市场中的璀璨新星。本文将深度剖析“我店”的运营模式、市场效应及其如何通过绿色积分机制开创消费新潮流。 一、崛起之路与市场震撼力 自2021年盛夏在上海启航以来&#xff0c…

docker-实战——consul集群

使用docker方式安装consul集群 环境准备 操作系统openEuler 23.09docker环境docker-compose环境本次计划部署的consul集群有3个节点,都是server类型 docker pull registry.cn-hangzhou.aliyuncs.com/bcbx/consul:1.7.8 网络不通的情况下使用上述方式进行镜像拉取 host网络节点…

WPS宏实现Sheet页拆分功能

源表格首列名称中一样的分别创建该名称的Sheet页,首先把首列复制导致Sheet2页,根据去重后的值创建新的Sheet页,把源表格数据复制到新建的Sheet页,遍历删除不需要的留下需要的就完成了。 function JIn521() { //设置工作…

ffmpeg读取时长、读取视频格式

ffmpeg读取时长、读取视频格式 ffmpeg读取时长ffmpeg读取视频格式 ffmpeg读取时长 命令命令介绍具体用法ffmpeg -i查看视频时长ffmpeg -i 视频链接 or 视频路径 2>&1 | grep Duration ffmpeg读取视频格式 命令命令介绍具体用法ffmpeg -i查看视频时长ffmpeg -i 视频链接…

Java CompletableFuture:你真的了解它吗?

文章目录 1 什么是 CompletableFuture?2 如何正确使用 CompletableFuture 对象?3 如何结合回调函数处理异步任务结果?4 如何组合并处理多个 CompletableFuture? 1 什么是 CompletableFuture? CompletableFuture 是 Ja…

<数据集>商品条形码识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:3748张 标注数量(xml文件个数):3748 标注数量(txt文件个数):3748 标注类别数:1 标注类别名称:[Barcode] 序号类别名称图片数框数1Barcode37484086 使用标注工具&am…

探索Qotom Q51251OPS迷你电脑:功能与广泛应用

Qotom Q51251 OPS(开放可插拔规范)迷你电脑是一款设计紧凑且功能强大的设备,旨在满足不同领域的多样化需求。基于英特尔Core i5-12450H Alder Lake H处理器,这款设备不仅具备出色的计算性能,还提供了丰富的连接选项&am…

【MySQL】数据库基础(库的操作)

目录 一、MySQL安装、连接、修改密码操作 二、库的操作 2.1 创建数据库 2.2 字符集和校验规则 2.3 操控数据库 2.4 修改数据库 2.5 删除数据库 2.6 数据库的备份和恢复 2.7 查看连接情况 前情提要: 我的服务器操作系统是Ubuntu20.04,安装的是M…

关于Spring Boot的自动配置

目录 1.EnableAutoConfiguration注解 2.SpringBootConfiguration注解 3.Import注解 4.spring.factories 5.总结 (1)EnableAutoConfiguration (2)AutoConfigurationImportSelector (3) SpringFactoriesLoade…

【好书推荐】值得深读的EMC参考书籍

以下排序不分先后,都是好书! 书名:Electromagnetic Compatibility Engineering 作者:Henry W. Ott 这本书的讨论重点放在了经济高效的EMC设计上,并将数学的数量和复杂度保持在最低限度,辅以 250 多个带有…

Jenkins汉化配置详解

Window安装构建神器Jenkins Window安装构建神器Jenkins详细教程-CSDN博客DevOps,CI,CD,自动化简单介绍选择其他需要和Jenkins一起安装的服务,点击Next。https://blog.csdn.net/qq_37237487/article/details/141299623 登录进入J…

什么是BOM,有哪些分类?

一、什么是BOM? BOM是物料清单的缩写,也称为产品结构表或产品结构树。 BOM的作用主要是通过计算机辅助企业生产管理,使计算机能够识别企业所制造的产品构成和所有要涉及的物料。 在制造业中,BOM是一份详细记录制造某个产品时所…

大模型19:微调大模型方法

有监督微调(SFT)、奖励模型(RM)训练,以及基于人类反馈的强化学习(RLHF)训练 1. 有监督微调(SFT - Supervised Fine-Tuning) 数据处理 数据收集:首先&#x…