当前位置: 首页 > news >正文

4G FS800DTU上传图像至巴法云

目录

1 前言

2 准备工作

2.1 硬件准备

2.2 软件环境

2.3 硬件连接

3 实现方案

4 巴法云平台账号创建与设备联网配置

4.1 创建账号

4.2 进入巴法云

4.3 获取联网参数

4.4 连接巴法云

5 拍照上传至巴法云

6 ESP32-CAM程序

7 总结


1 前言

        巴法云(Bemfa Cloud)是一个专注于 轻量级物联网(IOT)开发的云平台,主要面向智能家居、远程控制、数据监测等场景,提供 MQTT协议 支持,帮助开发者快速实现设备与云端的数据交互。

        FS800DTU核心板是基于飞思创4G Cat.1模组设计的,上面集成了DC-DC、SIM卡、天线和串口电平转换电路,支持5-16V供电输入,我们不需要额外的设计,核心板串口可与单片机直连,再接上天线、SIM卡和供电就可以进行数据交互了。

        FS800DTU支持4路Socket,支持TCP/UDP/HTTP/MQTT等通信协议,适配了阿里云、OneNET等物联网平台。不需要一条一条发AT指令配置,出厂自带YunDTU固件,通过飞思创提供的配置工具直接填写联网参数即可,连上服务器后数据直接透传,小白也能快速上手。

        产品链接:点击跳转

2 准备工作

2.1 硬件准备

  1. FS800DTU核心板(型号:FS-MCore-F8A2M1
  2. 4G物联卡一张,移动,联通,电信均可。
  3. USB转TTL模块,若干根杜邦线。
  4. 4G天线一根。
  5. ESP32-CAM(MicroPython 含摄像头驱动固件)

2.2 软件环境

  1. 巴法云平台
  2. SerialPort_To_Network_ConfigTools 配置工具(用于配置 FS800DTU)
  3. Thonny(ESP32-CAM 开发环境)

2.3 硬件连接

        电源注意事项:在为 ESP32 - CAM 和 FS800DTU 供电时,建议尽量使用 5V/2A 的电源。若供电不足,可能会导致 ESP32 - CAM 拍照失败,以及 FS800DTU 无法正常注册网络,频繁重启。

3 实现方案

        ESP32-CAM 开启 AP 模式并启动 web 服务器,手机连接其生成的 WiFi,在浏览器访问拍照控制界面。按下拍照按钮后,ESP32 - CAM 进行拍照,若拍照数据成功通过串口发送给 FS800DTU,则提示拍照成功,FS800DTU 将收到的照片传输至巴法云;若发送失败,则提示拍照失败。

4 巴法云平台账号创建与设备联网配置

4.1 创建账号

        打开巴法云主页:巴法科技&巴法云-巴法设备云-巴法物联网云平台,登录巴法云平台,有账号的话直接点击登录,没有账号就注册后登录。

4.2 进入巴法云

(1)点击图存储

(2)新建主题,获取私钥

        私钥:b9d8f1671xxxxxxxxe0d3b33e60,该私钥将用于图片上传接口API的 HTTP 头部字段中

4.3 获取联网参数

(1)打开巴法云文档中心简介 | 巴法文档中心,选择图片接口->图片上传接口一

        API: https://images.bemfa.com/upload/v1/upimages.php

        HTTP头部字段:

        Authorization: b9d8f1671xxxxxxxxe0d3b33e60(使用时改为自己的巴法云的私钥)

        Authtopic: test1(使用时改为自己的定义的主题

        Content-Type: image/jpg

4.4 连接巴法云

        使用USB转TTL连接FS800DTU,打开 SerialPort_To_Network_ConfigTools 配置工具,选择 HTTP 协议,并将请求类型设置为 POST。接着,将获取的 API 地址填写到 URL 字段中。 Header 部分,按照 4.3 章节提供的 HTTP 头部字段进行填写,字段之间使用回车换行符([0D][0A])进行分隔,具体格式:Authorization: b9d8f1671xxxxxxxxe0d3b33e60[0D][0A]Authtopic: test1[0D][0A]Content-Type: image/jpg[0D][0A]。

        将配置好参数的FS800DTU与ESP32-CAM进行连接。

5 拍照上传至巴法云

(1)打开Thonny运行程序,获取ESP32-CAM的IP地址。

(2)使用手机连接连接ESP32-CAM的WiFi

(3)浏览器输入ESP32-CAM的IP地址192.168.4.1进入拍照界面。

        注意事项:如果连上WiFi之后发现无法访问该网页,可以尝试关闭手机移动数据,并且关闭手机WiFi设置里的“网络优化”或者“自动切换移动数据”功能。

(4) 点击网页上的拍照按钮,ESP32-CAM会进行拍照,拍照成功后提示拍照完成,失败则提示失败。

(5)提示拍照完成后,刷新巴法云界面,查看上传到图片。

 

6 ESP32-CAM程序

        主程序:负责初始化网络和启动 Web 服务器。

def main():try:# 初始化网络network_manager = NetworkManager()network_manager.start_ap(CONFIG['AP_SSID'])# 启动Web服务器server = WebServer(CONFIG['PORT'])server.start()except Exception as e:print('Fatal error:', e)finally:print('System shutdown')

        WebServer 类:实现了一个简单的 Web 服务器,用于接收和处理 HTTP 请求,执行捕获图像并通过串口发送,并通过网络通信与客户端进行数据交互。

class WebServer:def __init__(self, port):"""初始化 WebServer 类"""self.port = portself.socket = socket.socket()  # 创建一个 socket 对象,用于网络通信self.uart = UART(2, baudrate=CONFIG['UART_BAUDRATE'],tx=CONFIG['UART_TX_PIN'], rx=CONFIG['UART_RX_PIN'])  # 初始化 UART 对象,用于串口通信def load_html(self, filename):"""加载 HTML 文件"""try:with open(filename, 'r') as file:return file.read()  # 读取 HTML 文件内容并返回except Exception as e:print(f'Error reading HTML file {filename}: {e}')return '<!DOCTYPE html><html><body>Error loading page</body></html>'  # 返回错误提示 HTMLdef create_response(self, content_type, body, status_code=200):"""创建 HTTP 响应"""status_text = 'OK' if status_code == 200 else 'Not Found'  # 根据状态码确定状态文本response = 'HTTP/1.1 ' + str(status_code) + ' ' + status_text + '\r\n'response += 'Content-Type: ' + content_type + '\r\n'response += 'Connection: close\r\n'response += '\r\n'response += bodyreturn responsedef handle_request(self, request):"""处理 HTTP 请求"""# GET 请求处理if request.startswith('GET'):return self.create_response('text/html', self.load_html(CONFIG['HTML_FILE']))  # 加载并返回 HTML 文件内容# POST 请求处理elif request.startswith('POST'):headers_end = request.find('\r\n\r\n') + 4  # 找到请求头的结束位置if headers_end >= len(request):return self.create_response('text/plain', 'Error: No request body found', 400)  # 请求体不存在,返回错误响应body = request[headers_end:].strip()  # 提取请求体内容print('Received body:', body)if body == 'capture':try:image_data = CameraController.capture_image()  # 调用摄像头控制器捕获图像self.uart.write(image_data)  # 将图像数据通过串口发送print('Photo captured and sent via UART')return self.create_response('application/javascript', 'alert("拍照完成");')  # 返回拍照完成的提示except Exception as e:print('Capture failed:', e)return self.create_response('application/javascript', 'alert("拍照失败");', 500)  # 返回拍照失败的提示else:return self.create_response('application/javascript', 'alert("无效指令");')  # 返回无效指令的提示# 其他请求else:return self.create_response('text/plain', 'Not Found', 404)  # 返回 404 错误响应def start(self):"""启动 Web 服务器"""addr = socket.getaddrinfo('0.0.0.0', self.port)[0][-1]  # 获取服务器地址self.socket.bind(addr)  # 绑定地址到 socketself.socket.listen(1)  # 开始监听,设置最大连接数为 1print(f'Web server started on {addr}')try:while True:cl, addr = self.socket.accept()  # 接受客户端连接print('Client connected from', addr)try:request = cl.recv(1024).decode('utf-8')  # 接收客户端请求if not request:continueprint('Request:', request.splitlines()[0])  # 打印请求的第一行response = self.handle_request(request)  # 处理请求并获取响应cl.send(response.encode('utf-8'))  # 发送响应给客户端except Exception as e:print('Request handling error:', e)finally:cl.close()  # 关闭客户端连接except KeyboardInterrupt:print('Server stopped by user')  # 用户中断服务器时打印提示finally:self.socket.close()  # 关闭服务器 socket

        HTML页面:提供了一个简单的拍照界面,点击“拍照”按钮后,通过 POST 请求向服务器发送拍照指令,并根据响应状态显示成功或错误消息,同时执行服务器返回的 JavaScript 代码。

        说明:由于ESP32-CAM没有板载按键,这里使用手机访问ESP32-CAM的Web服务器点击拍照来充当拍照按键使用。

<!DOCTYPE html>
<html lang="zh-CN">
<head><title>ESP32-CAM</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><style>/* 页面样式 */body {font-family: Arial, sans-serif;max-width: 800px;margin: 0 auto;padding: 20px;}button {padding: 10px 20px;font-size: 16px;background-color: #4CAF50;color: white;border: none;border-radius: 4px;cursor: pointer;}button:disabled {background-color: #cccccc;}#status {margin-top: 20px;padding: 10px;border-radius: 4px;}.success { background-color: #dff0d8; color: #3c763d; }.error { background-color: #f2dede; color: #a94442; }</style>
</head>
<body><h1>ESP32-CAM拍照界面</h1><!-- 拍照按钮 --><button id="captureBtn">拍照</button><!-- 状态显示区域 --><div id="status"></div><script>// 为拍照按钮添加点击事件监听器document.getElementById('captureBtn').addEventListener('click', async function() {const btn = this; // 引用按钮本身const status = document.getElementById('status'); // 引用状态显示区域try {// 发送 POST 请求到服务器根路径,请求体为 'capture'const response = await fetch('/', {method: 'POST',headers: { 'Content-Type': 'text/plain' },body: 'capture'});// 检查响应状态if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}// 读取响应文本const js = await response.text();status.className = 'success'; // 设置状态样式为成功status.textContent = '拍照指令已发送'; // 显示成功消息// 执行返回的 JavaScript 代码try {new Function(js)();} catch(e) {console.error('JS执行错误:', e); // 捕获并打印 JavaScript 执行错误}// 1秒后自动清除状态消息setTimeout(() => {status.textContent = '';status.className = '';}, 1000); } catch(error) {// 捕获并处理请求失败的情况console.error('拍照请求失败:', error);status.className = 'error'; // 设置状态样式为错误status.textContent = '拍照失败: ' + error.message; // 显示错误消息// 错误信息3秒后清除setTimeout(() => {status.textContent = '';status.className = '';}, 3000);} finally {btn.disabled = false; // 无论成功或失败,都重新启用按钮}});
</script>
</body>
</html>

7 总结

        本文介绍了用 ESP32 - CAM 搭配 FS800DTU 上传图像至巴法云的方法,感谢大家的观看。若您对本文章有任何不清楚的地方,可以私信或者在评论区留言,我们看到会及时回复您!

相关文章:

4G FS800DTU上传图像至巴法云

目录 1 前言 2 准备工作 2.1 硬件准备 2.2 软件环境 2.3 硬件连接 3 实现方案 4 巴法云平台账号创建与设备联网配置 4.1 创建账号 4.2 进入巴法云 4.3 获取联网参数 4.4 连接巴法云 5 拍照上传至巴法云 6 ESP32-CAM程序 7 总结 1 前言 巴法云(Bemfa Cloud)是一个…...

一键叠图工具

写了个拼图小工具 供大家测试 APP安卓的 测试下载 点击下载 百度网盘: https://pan.baidu.com/s/17B5KVIMMZlOAsF7a16KNug?pwd1234 提取码: 1234 拼图步骤&#xff1a;选图--选择变亮或变暗--滤镜发色 在正式开始之前&#xff0c;我们来定义几条原则先&#xff08;熟悉…...

【OSG学习笔记】Day 12: 回调机制——动态更新场景

UpdateCallback 在OpenSceneGraph&#xff08;OSG&#xff09;里&#xff0c;UpdateCallback是用来动态更新场景的关键机制。 借助UpdateCallback&#xff0c;你能够实现节点的动画效果&#xff0c;像旋转、位移等。 NodeCallback osg::NodeCallback 是一个更通用的回调类&…...

快速上手Prism WPF 工程

1、Prism 介绍 ​定位​&#xff1a; Prism 是 ​微软推出的框架&#xff0c;专为构建 ​模块化、可维护的复合式应用程序​ 设计&#xff0c;主要支持 WPF、Xamarin.Forms、UWP 等平台。​核心功能​&#xff1a; ​模块化开发​&#xff1a;将应用拆分为独立模块&#xff0c…...

Dockerfile讲解与示例汇总

容器化技术已经成为应用开发和部署的标准方式,而Docker作为其中的佼佼者,以其轻量、高效、可移植的特性,深受开发者和运维人员的喜爱。本文将从实用角度出发,分享各类常用服务的Docker部署脚本与最佳实践,希望能帮助各位在容器化之路上少走弯路。 无论你是刚接触Docker的…...

MATLAB Coder代码生成(工业部署)——MATLAB技巧

MATLAB Coder是MATLAB生态中用于将算法代码转换为C/C++代码的核心工具,其生成的代码可直接部署到嵌入式硬件、工业控制器或企业级应用中,尤其在智能制造、物联网和实时控制领域具有广泛应用。 通过 MATLAB Coder,可以轻松地将 MATLAB 代码转换为高效的 C/C++ 代码,适用于嵌…...

3、CMake语法:制作和使用动态库和静态库

动态库和静态库 1 动态库和静态库简介1.1 静态库静态库文件类型.lib 文件.pdb 文件 1.2 动态库动态库文件类型 1.3 总结 2. 制作和使用静态库2.1 CMake指定输出的路径 2.2 VS利用第三方库编译静态库 2.3 使用静态库CMake链接静态库VS链接静态库 3. 制作和使用动态库3.1 CMake指…...

使用双端队列deque模拟栈stack

使用双端队列deque模拟栈stack 今天的内容有点简单~ 众所周知&#x1f913;&#x1f446;&#xff0c;栈作为一个先进后出的结构&#xff0c;在计算机的世界确实能够发挥很多的作用。 而我们C祖师爷本贾尼是第一批把这个结构作为实实在在的容器做进std的人~ 那为了更好的了解…...

Spring系列四:AOP切面编程第三部分

&#x1f40b;AOP-JoinPoint 1.通过JoinPoint可以获取到调用方法的签名 2.其他常用方法 ●代码实现 1.com.zzw.spring.aop.aspectj.SmartAnimalAspect Aspect //表示是一个切面类 Component //会将SmartAnimalAspect注入到容器 public class SmartAnimalAspect {//给Car配置…...

为什么使用ThreadLocal后要调用remove()方法呢?

ThreadLocalMap中包含一个数组&#xff0c;每个节点对应的类名叫Entry&#xff0c;这个类继承WeakReference<ThreadLocal<?>>&#xff0c;entry中有两个属性&#xff1a;key和value。特别需要指出的是key来自于父类中的threadLocal对象。 为了避免内存泄露&#…...

如何在idea 中写spark程序

在 IntelliJ IDEA 中编写 Spark 程序可以通过以下步骤进行&#xff1a; 1. **安装 Scala 插件**&#xff1a;首先确保已经安装了 Scala 插件。在 IntelliJ IDEA 中选择 File -> Settings -> Plugins -> 搜索 Scala -> 安装插件。 2. **创建新项目**&#xff1a;在…...

国产全兼容ADS131E08芯片---LHA7878

LHA787X是一系列多通道同步采样、24位A-∑模数转换器(ADC)&#xff0c;内置可编程增益放大器(PGA)、内部基准和振荡器。凭借ADC的宽动态范围、可扩展数据传输速率以及内部故障检测监测计&#xff0c;LHA787X受到工业电源监测和保护以及测试和测量应用的青睐。真正的高阻抗输入支…...

免费LUT网站

FREE LUTs | Color Lookup Tables - Presetpro.com...

ICH CTD中ISS的关键内容与作用

1. ISS在ICH CTD中的定位 1.1 模块2与模块5的分工 1.1.1 模块2:整体总结的全局视角 模块2的2.7.4 ISS对所有临床研究安全性数据整合分析,涵盖I-III期试验,提供药物安全性全局视角,确保其在目标人群中的可接受性。 ISS需与风险控制措施关联,如说明书警示、风险管理计划,…...

Ocelot的应用案例

搭建3个项目&#xff0c;分别是OcelotDemo、ServerApi1和ServerApi2这3个项目。访问都是通过OcelotDemo进行轮训转发。 代码案例链接&#xff1a;https://download.csdn.net/download/ly1h1/90715035 1.架构图 2.解决方案结构 3.步骤一&#xff0c;添加Nuget包 4.步骤二&…...

OpenCV VC编译版本

vc12 Visual Studio 2013 vc14 Visual Studio 2015 vc15 Visual Studio 2017 vc16 Visual Studio 2019 vc17 Visual Studio 2022 opencv支持情况&#xff1a; OpenCV2.4.10 支持 VS2010&#xff0c;VS2012&#xff0c;VS2013 &#xff08;x64&#xff0c;x86&#xff09; …...

测试用例介绍

文章目录 一、测试用例基本概念1.1 测试用例基本要素 二、测试用例的设计方法2.1 基于需求的设计方法2.2 等价类2.3 边界值2.4 错误猜测法2.6 场景设计法2.7 因果图2.5 正交排列 三、综合&#xff1a;根据某个场景去设计测试用例&#xff08;万能公式&#xff09;四、如何使用F…...

Vue 2 中 Vue 实例对象(vm)的所有核心方法,包含完整示例、使用说明及对比表格

以下是 Vue 2 中 Vue 实例对象&#xff08;vm&#xff09;的所有核心方法&#xff0c;包含完整示例、使用说明及对比表格&#xff1a; 1. $mount() 作用&#xff1a;手动挂载 Vue 实例到 DOM 元素 参数&#xff1a; element&#xff1a;DOM 元素或选择器字符串&#xff08;可…...

大模型的scaling laws:Scaling Laws for Neural Language Models

一、TL&#xff1b;DR Loss与模型size、数据集大小以及用于训练的计算量呈幂律关系其他架构细节&#xff0c;如网络宽度或深度&#xff0c;在较宽范围内影响极小简单的公式可以描述过拟合与模型/数据集大小的依赖关系&#xff0c;以及训练速度与模型大小的依赖关系作用&#x…...

【Docker】使用 jq 管理镜像源

国内访问 Docker Hub 速度较慢&#xff0c;通过配置国内镜像加速器&#xff0c;可显著加快拉取镜像速度。使用 jq 操作 /etc/docker/daemon.json 的 registry-mirrors 字段&#xff0c;可避免手动编辑带来的格式错误&#xff0c;并在添加、替换、删除等场景下保持高效与安全。 …...

青年座谈会的读书汇报

今天&#xff0c;单位组织了一个五四青年座谈会&#xff0c;我们室由于大家都在出差忙之类的&#xff0c;我必须要参加&#xff0c;还要我做一个汇报&#xff0c;我一新来的还没深入到研发工作中&#xff0c;于是决定写了一篇简单的读书笔记&#xff0c;再用deepseek润色一下&a…...

leetcode刷题日记——两数相加

[ 题目描述 ]&#xff1a; [ 思路 ]&#xff1a; 通过两个循环将 l1, l2存储的数字读出&#xff0c;然后求和&#xff0c;再将结果存储链表中由此发了一个问题&#xff0c;结果溢出&#xff0c;如果使用更大的 long 类型&#xff0c;后续不出所料&#xff0c;仍然超出所以只能…...

使用腾讯地图检索地点

最近需求又多了&#xff0c;现在需要使用腾讯地图检索功能&#xff0c;需要经纬度返给商户后端 效果图&#xff1a; 把地图写成组件 现在components创建map/Getpoint.vue 代码如下 <template><div class"getpoint-container"><div><div id&…...

VINS-FUSION:跑通手机录制数据

文章目录 &#x1f4da;简介&#x1f680;手机录制数据&#x1f680;跑通数据&#x1f527;启动rviz&#x1f527;启动配置&#x1f527;播放rosbag&#x1f3af;跑通结果 &#x1f4da;简介 利用智能手机的 摄像头IMU 采集数据&#xff0c;并在 VINS-Fusion&#xff08;视觉惯…...

iView Table 组件跨页选择功能实现文档

iView Table 组件跨页选择功能实现文档 功能概述 实现基于 iView Table 组件的多选功能&#xff0c;支持以下特性&#xff1a; ✅ 跨页数据持久化选择✅ 当前页全选/取消全选✅ 自动同步选中状态显示✅ 分页切换状态保持✅ 高性能大数据量支持 实现方案 技术栈 iView UI 4…...

Spark知识总结

宽窄依赖&#xff1a;父RDD的分区只对应下面子RDD的一个分区&#xff0c;为窄依赖。其余为宽依赖 维度‌‌窄依赖‌‌宽依赖‌数据传输无shuffle&#xff0c;本地处理14需shuffle&#xff0c;跨节点传输14并行度高&#xff08;允许流水线并行&#xff09;57低&#xff08;需等…...

window 图形显示驱动-在 WDDM 1.2 中提供无缝状态转换(下)

在不禁用驱动程序的情况下转换到操作系统 有时操作系统遇到不可恢复的错误&#xff0c;必须发出系统 bug 检查。 发生这种情况时&#xff0c;在某些情况下&#xff0c;操作系统必须控制显示器&#xff0c;但无法停止 WDDM 驱动程序。 需要 WDDM 1.2 及更高版本的驱动程序来实现…...

WPF之Label控件详解

文章目录 1. 引言2. Label控件基础2.1 类继承结构2.2 Label类定义 3. Label控件的核心属性3.1 Content属性3.2 Target属性3.3 其他常用属性 4. 标签样式与模板自定义4.1 简单样式设置4.2 使用Style对象4.3 触发器使用4.4 使用ControlTemplate完全自定义 5. Label与表单控件交互…...

STM32 HAL库实现USB虚拟串口

1. 引言 在嵌入式系统开发中&#xff0c;USB 虚拟串口是一种非常实用的功能。它允许 STM32 微控制器通过 USB 接口与计算机进行通信&#xff0c;就像使用传统的串口一样。这种方式不仅简化了硬件设计&#xff0c;还提高了通信的灵活性和稳定性。STM32F407 系列微控制器具有强大…...

第二阶段:基础加强阶段总体介绍

Java语法的学习笔记 下面放复习的文档链接&#xff0c;如果有需要可以前往下载获取&#xff0c;这个仓库还有关于mysql、hadoop、python等的复习部分&#xff0c;并且每个文档有着对应的代码部分。文章作为复习使用&#xff0c;更多代码内容见链接如下: https://gitee.com/zha…...

Callable Future 实现多线程按照顺序上传文件

/** * 异步上传 BiopsyFlow 中的所有视频和音频文件到暂存服务器 */ private List<String> uploadBiopsyFlowFiles(BiopsyFlow biopsyFlow, SyncFile SyncFile) { List<String> fileBase64List syncFile.getFileBase64List(); if (CollectionUtils.is…...

leetcode283-移动零

leetcode 283 思路 本题是通过把数组中所有不为0的数字前置&#xff0c;实现把所有的0后置的效果 双指针法 slow 充当指针&#xff0c;记录当前零应该被移到的位置。而 i 用来遍历整个数组&#xff0c;检查每个元素。如果当前元素不为零&#xff0c;就将其与 slow 位置上的…...

【dify+docker安装教程】

目录 一、dify安装包下载 二、运行环境配置 1、下载docker 2、安装 2.1 新建文件夹 2.2 安装 2.3 命令安装 3.下载完成后需要重启电脑&#xff0c;注意保存文档&#xff01;&#xff01;注意保存&#xff01;&#xff01;注意&#xff01;&#xff01;&#xff08;血的教…...

GPU虚拟化实现(五)

GPU虚拟化实现(五) 章节回顾初步介绍详细介绍核心数据结构核心功能和运作机制初始化显存分配显存释放显存溢出检查显存类型检查查看分配信息代码执行流程假设例子总结章节回顾 在上一章,简单介绍了项目拦截cuda函数的流程,其本质上与拦截nvml函数的流程是一致的,都是首先…...

C++——入门基础

文章目录 一、前言二、C的发展历史2.1 C的诞生2.2 C的重要性 三、C的应用3.1第一个C程序3.2 C版3.2 C版3.3 C版与C版的区分 3.2 namespace关键字3.2.1 namespace的意义3.2.2C中域的分类3.2.3 namespace的定义3.2.4 namespace的实质3.2.5 namespace的嵌套 3.3 作用域运算符 &…...

AT2401C与RFX2401C问题处理资料

1、AT2401C 可以 PIN 对 PIN 替代 RFX2401C 吗&#xff1f; 答&#xff1a;AT2401C 可以 PIN 对 PIN 替换 RFX2401C&#xff1b;同时 CB2401 也可以 PIN 对 PIN 替换 RFX2401C&#xff1b;我们主要推 AT2401C 这款芯片&#xff0c;如果客户产 品需要过认证或者应用于音频产品建…...

微信小程序连续多个特殊字符自动换行解决方法

效果图 .wxml <view class"container"><text>没转换{{text}}</text><view style"height: 60rpx;" /><text>转换后{{convert}}</text> </view>.js Page({data: {text:&#xff01;&#xff01;&#xff01;&am…...

【Linux实践系列】:进程间通信:万字详解命名管道实现通信

&#x1f525; 本文专栏&#xff1a;Linux Linux实践项目 &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 与其等待完美的风&#xff0c;不如学会在逆风中调整帆的角度——所有伟大航程都始于此刻出发的勇气 ★★★ 本文前置知…...

【TS入门笔记4---装饰器】

TS入门笔记4 TypeScript---装饰器一、装饰器基础1. 定义与作用&#xff1a;装饰器是一种特殊类型的声明&#xff0c;它可以被附加到类声明、方法、访问符、属性或参数上&#xff0c;用来修改类的行为。在 TypeScript 里&#xff0c;装饰器本质上是一个函数&#xff0c;它接收不…...

大学之大:韩国科学技术研究院2025.4.28

韩国科学技术研究院&#xff08;KAIST&#xff09;作为韩国理工科教育与科研的旗舰机构&#xff0c;其发展历程深刻反映了韩国从工业化到科技强国的转型轨迹。以下从历史沿革、学科优势、教学特色、科研创新、教育规模、资源投入及未来战略等维度展开全面分析&#xff1a; 一、…...

【QT】QT控制硬件

QT控制硬件 1.上位机程序开发2.具体例子控制led灯3. linux中的函数跟QT类里面的函数同名&#xff0c;发生冲突4.示例代码 1.上位机程序开发 QT做一个上位机程序&#xff0c;控制底层的硬件设备(下位机) 总结&#xff1a; 在构造函数里面去初始化&#xff0c;打开硬件驱动在析…...

Spring的BeanFactory和FactoryBean的区别

​ ‌BeanFactory和FactoryBean在Spring框架中扮演着不同的角色&#xff0c;具有不同的功能和用途。‌ 定义与角色 ‌BeanFactory‌&#xff1a;BeanFactory是Spring IoC容器的核心接口&#xff0c;用于管理和维护Bean的定义、创建和生命周期。它是Spring IoC容器的基础&…...

【JavaScript】if语句

JS中的程序是从上到下一行一行执行的。 通过流程控制语句可以控制程序执行流程&#xff0c;使程序可以根据一定的条件来选择执行语句。 语句的分类&#xff1a; 1、条件判断语句 2、条件分支语句 3、循环语句 条件判断语句&#xff1a;使用条件判断语句可以在执行某个语句之前进…...

PostgreSQL oracle_fdw 扩展解析

PostgreSQL oracle_fdw 扩展解析 oracle_fdw 是 PostgreSQL 的一个外部数据包装器(Foreign Data Wrapper)扩展&#xff0c;允许 PostgreSQL 直接连接和操作 Oracle 数据库。以下是全面详细的使用指南&#xff1a; 一、安装与配置 1. 前置要求 Oracle 客户端库&#xff1a;必…...

从信息传输到智能互动,融云的全球智能通信云服务进化

4 月 24 日-25 日&#xff0c;GTC2025 全球流量大会在深圳福田会展中心举办&#xff0c;融云携全球智能通信云解决方案亮相。 在大会首日的开幕式峰会上&#xff0c;融云高级研发总监李宏博受邀分享《从信息传输到智能互动&#xff0c;融云的全球智能通信云服务进化》。 作为连…...

关于https请求丢字符串导致收到报文解密失败问题

加密方法&#xff1a;AES两次URLEncoder 问题现象&#xff1a;服务端收到的报文中少了类似%25这样的字符&#xff0c;导致解密失败 问题分析&#xff1a;用RequestBody接受 也有可能是springboot自动做了一次解码URLDecoder&#xff0c;自己只需要解码一次就好了...

Rust 学习笔记:修复所有权常见错误

Rust 学习笔记&#xff1a;修复所有权常见错误 Rust 学习笔记&#xff1a;修复所有权常见错误错误一&#xff1a;返回栈上的引用错误二&#xff1a;没有足够的权限错误三&#xff1a;别名和可变性错误四&#xff1a;从集合中拷贝一个元素&#xff08;转移所有权&#xff09;错误…...

Unity3D引擎框架及用户接口调用方式相关分析及汇总

分析目的 目前外网3D手游绝大部基于Unity3D引擎进行开发,Unity3D引擎属于商业引擎,引擎整理框架的运行机制较为神秘,本文介绍Unity引擎框架、对象组织方式、用户接口与引擎交互方式等原理,通过本文的分析和介绍可了解Unity3D框架中大致执行原理。 实现原理 Unity引擎作为…...

喷泉码在物联网场景下的案例分析

在物联网复杂场景下,无线传感器网络作为信息感知前端,面临能量受限、信道不稳定、多跳传输可靠性差等难题,严重制约物联网系统运行效能。传统基于反馈重传的通信机制在无线传感器网络中难以为继。其 ACK 确认操作频繁,大幅增加能耗,且在动态网络拓扑中,反馈易丢失,致使数…...

OpenCV 图形API(69)图像与通道拼接函数------将一个 GMat 类型的对象转换为另一个具有不同深度GMat对象函数convertTo()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将一个矩阵转换为另一种数据深度&#xff0c;并可选择进行缩放。 该方法将源像素值转换为目标数据深度。最终应用 saturate_cast<> 以避免…...