LuatOS-SOC接口文档(air780E)--nimble - 蓝牙BLE库(nimble版)
示例
-- 本库当前支持Air101/Air103/ESP32/ESP32C3/ESP32S3 -- 用法请查阅demo, API函数会归于指定的模式-- 名称解释: -- peripheral 外设模式, 或者成为从机模式, 是被连接的设备 -- central 中心模式, 或者成为主机模式, 是扫描并连接其他设备 -- ibeacon 周期性的beacon广播-- UUID 设备的服务(service)和特征(characteristic)会以UUID作为标识,支持 2字节/4字节/16字节,通常用2字节的缩短版本 -- chr 设备的服务(service)由多个特征(characteristic)组成, 简称chr -- characteristic 特征由UUID和flags组成, 其中UUID做标识, flags代表该特征可以支持的功能
常量
常量 | 类型 | 解释 |
---|---|---|
nimble.CHR_F_WRITE | number | chr的FLAGS值, 可写, 且需要响应 |
nimble.CHR_F_WRITE | number | chr的FLAGS值, 可读 |
nimble.CHR_F_WRITE | number | chr的FLAGS值, 可写, 不需要响应 |
nimble.CHR_F_WRITE | number | chr的FLAGS值, 可订阅, 不需要回复 |
nimble.CHR_F_WRITE | number | chr的FLAGS值, 可订阅, 需要回复 |
nimble.CFG_ADDR_ORDER | number | UUID的转换的大小端, 结合config函数使用, 默认0, 可选0/1 |
nimble.init(name)
初始化BLE上下文,开始对外广播/扫描
参数
传入值类型 | 解释 |
---|---|
string | 蓝牙设备名称,可选,建议填写 |
返回值
返回值类型 | 解释 |
---|---|
bool | 成功与否 |
例子
-- 参考 demo/nimble -- 本函数对所有模式都适用
nimble.deinit()
关闭BLE上下文
参数
无
返回值
返回值类型 | 解释 |
---|---|
bool | 成功与否 |
例子
-- 仅部分设备支持,当前可能都不支持 -- 本函数对所有模式都适用
nimble.mode(tp)
设置模式
参数
传入值类型 | 解释 |
---|---|
int | 模式, 默认server/peripheral, 可选 client/central模式 nimble.MODE_BLE_CLIENT |
返回值
返回值类型 | 解释 |
---|---|
bool | 成功与否 |
例子
-- 参考 demo/nimble -- 必须在nimble.init()之前调用 -- nimble.mode(nimble.MODE_BLE_CLIENT) -- 简称从机模式,未完善
nimble.connok()
是否已经建立连接
参数
无
返回值
返回值类型 | 解释 |
---|---|
bool | 已连接返回true,否则返回false |
例子
log.info("ble", "connected?", nimble.connok()) -- 从机peripheral模式, 设备是否已经被连接 -- 主机central模式, 是否已经连接到设备 -- ibeacon模式, 无意义
nimble.send_msg(conn, handle, data)
发送信息
参数
传入值类型 | 解释 |
---|---|
int | 连接id, 当前固定填1 |
int | 处理id, 当前固定填0 |
string | 数据字符串,可包含不可见字符 |
返回值
返回值类型 | 解释 |
---|---|
bool | 成功与否 |
例子
-- 参考 demo/nimble -- 本函数对peripheral/从机模式适用
nimble.setUUID(tp, addr)
设置server/peripheral的UUID
参数
传入值类型 | 解释 |
---|---|
string | 配置字符串,后面的示例有说明 |
string | 地址字符串 |
返回值
返回值类型 | 解释 |
---|---|
bool | 成功与否 |
例子
-- 参考 demo/nimble, 2023-02-25之后编译的固件支持本API -- 必须在nimble.init()之前调用 -- 本函数对peripheral/从机模式适用-- 设置SERVER/Peripheral模式下的UUID, 支持设置3个 -- 地址支持 2/4/16字节, 需要二进制数据 -- 2字节地址示例: AABB, 写 string.fromHex("AABB") ,或者 string.char(0xAA, 0xBB) -- 4字节地址示例: AABBCCDD , 写 string.fromHex("AABBCCDD") ,或者 string.char(0xAA, 0xBB, 0xCC, 0xDD) nimble.setUUID("srv", string.fromHex("380D")) -- 服务主UUID , 默认值 180D nimble.setUUID("write", string.fromHex("FF31")) -- 往本设备写数据的UUID, 默认值 FFF1 nimble.setUUID("indicate", string.fromHex("FF32")) -- 订阅本设备的数据的UUID,默认值 FFF2
nimble.mac()
获取蓝牙MAC
参数
无
返回值
返回值类型 | 解释 |
---|---|
string | 蓝牙MAC地址,6字节 |
例子
-- 参考 demo/nimble, 2023-02-25之后编译的固件支持本API -- 本函数对所有模式都适用 local mac = nimble.mac() log.info("ble", "mac", mac and mac:toHex() or "Unknwn")
nimble.sendNotify(srv_uuid, chr_uuid, data)
发送notify
参数
传入值类型 | 解释 |
---|---|
string | 服务的UUID,预留,当前填nil就行 |
string | 特征的UUID,必须填写 |
string | 数据, 必填, 跟MTU大小相关, 一般不要超过256字节 |
返回值
返回值类型 | 解释 |
---|---|
bool | 成功返回true,否则返回false |
例子
-- 本API于 2023.07.31 新增 -- 本函数对peripheral模式适用 nimble.sendNotify(nil, string.fromHex("FF01"), string.char(0x31, 0x32, 0x33, 0x34, 0x35))
nimble.sendIndicate(srv_uuid, chr_uuid, data)
发送indicate
参数
传入值类型 | 解释 |
---|---|
string | 服务的UUID,预留,当前填nil就行 |
string | 特征的UUID,必须填写 |
string | 数据, 必填, 跟MTU大小相关, 一般不要超过256字节 |
返回值
返回值类型 | 解释 |
---|---|
bool | 成功返回true,否则返回false |
例子
-- 本API于 2023.07.31 新增 -- 本函数对peripheral模式适用 nimble.sendIndicate(nil, string.fromHex("FF01"), string.char(0x31, 0x32, 0x33, 0x34, 0x35))
nimble.advParams(conn_mode, disc_mode, itvl_min, itvl_max, channel_map, filter_policy, high_duty_cycle)
设置广播参数
参数
传入值类型 | 解释 |
---|---|
int | 广播模式, 0 - 不可连接, 1 - 定向连接, 2 - 未定向连接, 默认0 |
int | 发现模式, 0 - 不可发现, 1 - 限制发现, 3 - 通用发现, 默认0 |
int | 最小广播间隔, 0 - 使用默认值, 范围 1 - 65535, 单位0.625ms, 默认0 |
int | 最大广播间隔, 0 - 使用默认值, 范围 1 - 65535, 单位0.625ms, 默认0 |
int | 广播通道, 默认0, 一般不需要设置 |
int | 过滤规则, 默认0, 一般不需要设置 |
int | 当广播模式为”定向连接”时,是否使用高占空比模式, 默认0, 可选1 |
返回值
返回值类型 | 解释 |
---|---|
nil | 无返回值 |
例子
-- 当前仅ibeacon模式/peripheral/从机可使用 -- 例如设置 不可连接 + 限制发现 -- 需要在nimble.init之前设置好 nimble.advParams(0, 1) -- 注意peripheral模式下自动配置 conn_mode 和 disc_mode
nimble.setChr(index, uuid, flags)
设置chr的特征
参数
传入值类型 | 解释 |
---|---|
int | chr的索引, 默认0-3 |
int | chr的UUID, 可以是2/4/16字节 |
int | chr的FLAGS, 请查阅常量表 |
返回值
返回值类型 | 解释 |
---|---|
nil | 无返回值 |
例子
-- 仅peripheral/从机可使用 nimble.setChr(0, string.fromHex("FF01"), nimble.CHR_F_WRITE_NO_RSP | nimble.CHR_F_NOTIFY) nimble.setChr(1, string.fromHex("FF02"), nimble.CHR_F_READ | nimble.CHR_F_NOTIFY) nimble.setChr(2, string.fromHex("FF03"), nimble.CHR_F_WRITE_NO_RSP) -- 可查阅 demo/nimble/kt6368a
nimble.config(id, value)
设置chr的特征
参数
传入值类型 | 解释 |
---|---|
int | 配置的id,请查阅常量表 |
any | 根据配置的不同, 有不同的可选值 |
返回值
返回值类型 | 解释 |
---|---|
nil | 无返回值 |
例子
-- 本函数在任意模式可用 -- 本API于 2023.07.31 新增 -- 例如设置地址转换的大小端, 默认是0, 兼容老的代码 -- 设置成1, 服务UUID和chr的UUID更直观 nimble.config(nimble.CFG_ADDR_ORDER, 1)
nimble.ibeacon(data, major, minor, measured_power)
配置iBeacon的参数,仅iBeacon模式可用
参数
传入值类型 | 解释 |
---|---|
string | 数据, 必须是16字节 |
int | 主版本号,默认2, 可选, 范围 0 ~ 65536 |
int | 次版本号,默认10,可选, 范围 0 ~ 65536 |
int | 名义功率, 默认0, 范围 -126 到 20 |
返回值
返回值类型 | 解释 |
---|---|
bool | 成功返回true,否则返回false |
例子
-- 参考 demo/nimble, 2023-02-25之后编译的固件支持本API -- 本函数对ibeacon模式适用 nimble.ibeacon(data, 2, 10, 0) nimble.init()
nimble.advData(data, flags)
配置广播数据,仅iBeacon模式可用
参数
传入值类型 | 解释 |
---|---|
string | 广播数据, 当前最高128字节 |
int | 广播标识, 可选, 默认值是 0x06,即 不支持传统蓝牙(0x04) + 普通发现模式(0x02) |
返回值
返回值类型 | 解释 |
---|---|
bool | 成功返回true,否则返回false |
例子
-- 参考 demo/nimble/adv_free, 2023-03-18之后编译的固件支持本API -- 本函数对ibeacon模式适用 -- 数据来源可以多种多样 local data = string.fromHex("123487651234876512348765123487651234876512348765") -- local data = crypto.trng(25) -- local data = string.char(0x11, 0x13, 0xA3, 0x5A, 0x11, 0x13, 0xA3, 0x5A, 0x11, 0x13, 0xA3, 0x5A, 0x11, 0x13, 0xA3, 0x5A) nimble.advData(data) nimble.init()-- nimble支持在init之后的任意时刻再次调用, 以实现数据更新 -- 例如 1分钟变一次 while 1 dosys.wait(60000)local data = crypto.trng(25)nimble.advData(data) end
nimble.scan(timeout)
扫描从机
参数
传入值类型 | 解释 |
---|---|
int | 超时时间,单位秒,默认28秒 |
返回值
返回值类型 | 解释 |
---|---|
bool | 启动扫描成功与否 |
例子
-- 参考 demo/nimble/scan -- 本函数对central/主机模式适用 -- 本函数会直接返回, 然后通过异步回调返回结果-- 调用本函数前, 需要先确保已经nimble.init() nimble.scan() -- timeout参数于 2023.7.11 添加
nimble.connect(mac)
连接到从机
参数
传入值类型 | 解释 |
---|---|
string | 设备的MAC地址 |
返回值
返回值类型 | 解释 |
---|---|
bool | 启动连接成功与否 |
例子
-- 本函数对central/主机模式适用 -- 本函数会直接返回, 然后通过异步回调返回结果
nimble.disconnect()
断开与从机的连接
参数
无
返回值
返回值类型 | 解释 |
---|---|
nil | 无返回值 |
例子
-- 本函数对central/主机模式适用 -- 本函数会直接返回
nimble.discSvr()
扫描从机的服务列表
参数
无
返回值
返回值类型 | 解释 |
---|---|
nil | 无返回值 |
例子
-- 本函数对central/主机模式适用 -- 本函数会直接返回,然后异步返回结果 -- 这个API通常不需要调用, 在连接从机完成后,会主动调用一次
nimble.listSvr()
获取从机的服务列表
参数
无
返回值
返回值类型 | 解释 |
---|---|
table | 服务UUID的数组 |
例子
-- 本函数对central/主机模式适用
nimble.discChr(svr_uuid)
扫描从机的指定服务的特征值
参数
传入值类型 | 解释 |
---|---|
string | 指定服务的UUID值 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功启动扫描与否 |
例子
-- 本函数对central/主机模式适用
nimble.listChr(svr_uuid)
获取从机的指定服务的特征值列表
参数
传入值类型 | 解释 |
---|---|
string | 指定服务的UUID值 |
返回值
返回值类型 | 解释 |
---|---|
table | 特征值列表,包含UUID和flags |
例子
-- 本函数对central/主机模式适用
nimble.discDsc(svr_uuid, chr_uuid)
扫描从机的指定服务的特征值的其他属性
参数
传入值类型 | 解释 |
---|---|
string | 指定服务的UUID值 |
string | 特征值的UUID值 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功启动扫描与否 |
例子
-- 本函数对central/主机模式适用
nimble.writeChr(svr_uuid, chr_uuid, data)
往指定的服务的指定特征值写入数据
参数
传入值类型 | 解释 |
---|---|
string | 指定服务的UUID值 |
string | 指定特征值的UUID值 |
string | 待写入的数据 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功启动写入与否 |
例子
-- 本函数对central/主机模式适用
nimble.writeChr(svr_uuid, chr_uuid)
从指定的服务的指定特征值读取数据(异步)
参数
传入值类型 | 解释 |
---|---|
string | 指定服务的UUID值 |
string | 指定特征值的UUID值 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功启动写入与否 |
例子
-- 本函数对central/主机模式适用 -- 详细用法请参数 demo/nimble/central
nimble.subChr(svr_uuid, chr_uuid)
订阅指定的服务的指定特征值
参数
传入值类型 | 解释 |
---|---|
string | 指定服务的UUID值 |
string | 指定特征值的UUID值 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功启动订阅与否 |
例子
-- 本函数对central/主机模式适用 -- 详细用法请参数 demo/nimble/central
nimble.unsubChr(svr_uuid, chr_uuid)
取消订阅指定的服务的指定特征值
参数
传入值类型 | 解释 |
---|---|
string | 指定服务的UUID值 |
string | 指定特征值的UUID值 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功启动取消订阅与否 |
例子
-- 本函数对central/主机模式适用 -- 详细用法请参数 demo/nimble/central
相关文章:
LuatOS-SOC接口文档(air780E)--nimble - 蓝牙BLE库(nimble版)
示例 -- 本库当前支持Air101/Air103/ESP32/ESP32C3/ESP32S3 -- 用法请查阅demo, API函数会归于指定的模式-- 名称解释: -- peripheral 外设模式, 或者成为从机模式, 是被连接的设备 -- central 中心模式, 或者成为主机模式, 是扫描并连接其他设备 -- ibeacon 周期性的be…...

医疗器械展示预约小程序的效果如何
医疗器械行业涵盖的内容非常广,市场中大小从业的品牌/门店也很多,比如我们常见的轮椅、康复器械、拐杖、血压仪等产品市场需求都非常高,当然还有医院里用的器械等。 医疗器械市场呈现多品牌、多门店的发展趋势,虽然这些东西不是必…...
【Vue原理解析】之异步与优化
引言 Vue是一款流行的JavaScript框架,它提供了一些强大的特性来提升应用程序的性能和用户体验。在本文中,我们将深入探讨Vue的异步更新机制和一些优化技巧,帮助您更好地理解和应用这些特性。 异步更新机制 Vue使用异步更新机制来提高渲染性…...

mybatis、mysql 创建时间(create_time)异常自动更新为当前时间
目录标题 一、问题二、原因三、解决 一、问题 bug: mybatis更新代码没有修改时间,但是时间会自动更新为当前时间。 。。。 被坑了挺久 二、原因 可能是创建表的时候, Navicat Premium 等可视化工具给你整活了。。。 三、解决 取消勾选。 注意&…...
shardingsphere 加载慢 优化
shardingsphere加载慢 优化 原因: 启动速度变慢(元数据扫描耗时较长) 占用内存增多(大量单表和元数据对象) 那是因为默认扫描1张表.一张一张加载巨慢,添加以下配置增加到20张表同时扫描 错误: 如果你数据库最大连接不到20就会报错,请按照数据…...

我这些年对于自动化测试的理解
📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…...

Java安全架构 JCA、JCE、JSSE、JAAS
Java语言拥有三大特征:平台无关性、网络移动性和安全性,而Java安全体系结构对这三大特征提供了强大的支持和保证, Java安全体系结构总共分为4个部分: (1)JCA( Java Cryptography Architecture…...
面试经典(4/150)删除有序数组中的重复项 II
面试经典(4/150)删除有序数组中的重复项 II 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 , 返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原…...
使用WildCard充值ChatGPT Plus 会员
登录 wildCard官网 基于国内手机号注册账号,使用支付宝验证付款即可自动申请国外银行卡,WildCard的开卡费是9.9美元, 没有后续的月费用.订阅chatgpt plus会员服务的操作图文指南见链接 chatgpt plus会员订阅指南...

element-plus使用el-date-picker组件时,如何禁止用户选择当前时间之后的日时分秒
element-plus使用el-date-picker组件时,如何禁止用户选择当前时间之后的日时分秒 例: 当前时间为2023-11-15 14.24,不能选择这之后的时分秒。(禁止用户选择2023-11-15 14.28) <el-date-pickerv-model"form.s…...

keepalived安装配置(服务器主备、负载均衡)
系统拓扑 安装keepalived 主备服务器上都需要安装 在线安装 yum install -y keepalived 离线安装 # todo 服务器准备 虚拟机ip:192.168.11.56 主服务器:192.168.11.53 备服务器:192.168.11.54 配置文件修改 keepalived安装之后&…...

盘点一款制作电子杂志的网站,小白也能快速上手
电子杂志作为一种时尚、环保、便捷的宣传形式,越来越受到各行各业的青睐。无论是企业宣传、产品推广,还是个人分享,电子杂志都能展现出独特的魅力。而制作电子杂志,不再是专业人士的专属,现在小白也能快速上手&#…...

全域全自主建设,亚信科技AntDB数据库助力广电5G业务上线运行
自2019年6月,中国广电成功获得5G牌照以来,迅速推进网络建设目标,成为5G网络覆盖广、应用场景多、用户体验出色的第四大运营商。其依托全球独有的700MHz频谱资源,具备覆盖能力强、容量足、速率高的优势。通过不断深化和中国移动的共…...
使用 SSH 密钥进行身份验证
使用 SSH 密钥进行身份验证可以提高安全性,并免去每次登录时输入密码的麻烦。以下是使用 SSH 密钥进行身份验证的步骤: 生成密钥对:在本地计算机上生成 SSH 密钥对。打开终端并执行以下命令: ssh-keygen -t rsa -b 4096这将生成…...
国内最受欢迎的电商API接口调用京东商品详情数据
国内实用的API接口 国内最受欢迎的7大API供应平台对比和介绍 本文将介绍7款API供应平台:电商API数据、百度e、Apix、数说聚合、通联数据、HaoService、datasift 。排名不分先后! 免费实用的API接口 第一部分 1、电商数据(API数据接口_开发者…...
windows远程桌面登录ubuntu,黑屏闪退,
首先需要安装xrdp以后才能远程登录,安装命令 sudo apt-get install xrdp 这里需要注意一个问题,如果在ubuntu 本地登录的情况下,windows远程登录会出现黑屏甚至闪退的问题。原因是本地登录和远程登陆是互斥的,本地登录了就不能远…...

12-使用vue2实现todolist待办事项
个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:懒惰受到的惩罚不仅仅是自己的失败,还有别人的成功。 🎅**学习目标: 坚持每一次的学习打卡 文章…...
微信小程序授权登录?
wxml <!-- 示例:在wxml中创建一个授权登录按钮 --> <button bindtap"getUserInfo">授权登录</button> js // 用户点击授权登录按钮时触发的事件处理函数getUserInfo: function (e) {wx.getUserProfile({desc: 用于完善会员资料, // 授…...
React 18 + Hooks +Ts 开发中遇到的问题及解决方案!
这篇文章是用来专门记录关于React 18 Hooks Ts 开发中遇到的问题及解决方案 Q1 问题描述: TS7016: Could not find a declaration file for module js-export-excel. /Users/zhangliangliang/WebstormProjects/daizhang-system-front/node_modules/js-export-exc…...

推荐一个非常好用的uniapp的组件库【TMUI3.0】
文章目录 前言官网地址如何使用?注意事项后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端系列文章 🐱👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...