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

STM32软件IIC驱动TCA9548A多路测量AHT10

STM32软件IIC驱动TCA9548多路测量AHT10

  • TCA9548A
  • AHT10
  • 代码逻辑
  • 代码展示
  • 现象
  • 总结

TCA9548A

在这里插入图片描述

TCA9548A 有八个可通过 I2C 总线控制的双向转换开关,SCL/SDA 上行对扩展到八个下行对,或者通道,适用于系统中存在I2C目标地址冲突的情况。8路双向转换开关,同一时刻只能选择打开一个通道。
三个地址引脚A0,A1,A2,I2C 总线最多支持八个TCA9548A 器件。最多可以在同一条线下接8个TCA9548A模块,每个TCA9548A模块下可以再接8个I2C设备,这样在一个总线下最高可以挂载64个设备。
在这里插入图片描述

TCA9548A写指令:
开始 → 写命令(0x70)→ 选择对应的通道(eg:选择通道0,则写入0x01) → 结束
在这里插入图片描述

选择哪个通道就对应的哪个通道置1
在这里插入图片描述

TCA9548A读指令:
开始 → 读命令(0x71)→ 接收从机数据 → 结束
在这里插入图片描述

AHT10

在这里插入图片描述

关于AHT10的详细说明可以看一下两篇文章进行了解: STM32驱动AHT10(OLED显示),51驱动AHT10串口输出,这里就不做具体的说明介绍了。
这里说下相关指令的流程和注意事项:
AHT10写指令:
开始 → 写指令(0x70) → 触发测量指令(0xac) → 命令参数(0x33) → 命令参数(0x00) → 结束
在这里插入图片描述

AHT10读指令(温湿度数据都是20bit):
开始 → 读指令(0x71) → 状态寄存器数据读取 → 湿度数据[19:12] → 湿度数据[11:4] → 湿度数据[3:0] + 温度数据[19:16] → 温度数据[15:8] → 温度数据[7:0] → 结束
在这里插入图片描述

还有两个注意事项:
1.上电后,传感器最多需要20毫秒时间(此时 SCL为高电平)以达到空闲状态,即做好准备接收由主机(MCU)发送的命令。
2.传感器在采集时需要时间,主机发出测量指令(0xAC)后,延时75毫秒以上再读取转换后的数据并判断返回的状态位是否正常。若状态比特位[Bit7]为0代表数据可正常读取,为1时传感器为忙状态,主机需要等待数据处理完成。

代码逻辑

在这里插入图片描述

代码展示

STM32F103C8T6软件IIC驱动TCA9548A拓展2路AHT10温湿度测量(OLED显示通道0温湿度测试数据,串口1输出通道7温湿度数据)
main.c :

uint32_t CT_data[2];
volatile int  c1,t1;
uint8_t Data;
void AHT10_Measure(void)
{OLED_ShowString(1, 5, "AHT10_Test");OLED_ShowString(2, 4, "HUM:");OLED_ShowString(3, 4, "TEM:");while(AHT10_Read_Cal_Enable()==0)//等到校准输出使能位为1,才读取。{AHT10_Init();//如果为0再使能一次Delay_ms(50);}AHT10_Read_CTdata(CT_data);  //读取温度和湿度 , 可间隔1.5S读一次c1 = CT_data[0] * 1000 / 1024 / 1024;  //计算得到湿度值(放大了10倍,如果c1=523,表示现在湿度为52.3%)t1 = CT_data[1] * 200 * 10 / 1024 / 1024 - 500;//计算得到温度值(放大了10倍,如果t1=245,表示现在温度为24.5℃)//显示湿度OLED_ShowNum(2, 10, c1 / 10, 2);OLED_ShowString(2, 12, ".");OLED_ShowNum(2, 13, c1 % 10, 1);OLED_ShowString(2, 15, "%");//显示温度OLED_ShowNum(3, 10, t1 / 10, 2);OLED_ShowString(3, 12, ".");OLED_ShowNum(3, 13, t1 %  10, 1);OLED_ShowString(3, 15, "C");  Delay_ms(1500); //延时1.5S 
}
int main(void)
{/*模块初始化*/OLED_Init();		//OLED初始化TCA9548A_Init();     //TCA9548初始化Serial_Init();while(1){//选择通道0TCA9548A_WriteByte(0);Data = TCA9548A_ReadByte();OLED_ShowHexNum(1, 1, Data, 2);AHT10_Measure();//选择通道7TCA9548A_WriteByte(7);Data = TCA9548A_ReadByte();while(AHT10_Read_Cal_Enable()==0)//等到校准输出使能位为1,才读取。{AHT10_Init();//如果为0再使能一次Delay_ms(30);}AHT10_Read_CTdata(CT_data);  //读取温度和湿度 , 可间隔1.5S读一次c1 = CT_data[0]*1000/1024/1024;  //计算得到湿度值(放大了10倍,如果c1=523,表示现在湿度为52.3%)t1 = CT_data[1] *200*10/1024/1024-500;//计算得到温度值(放大了10倍,如果t1=245,表示现在温度为24.5℃)//湿度Serial_Printf("       H:");Serial_SendNumber(c1/10, 2);Serial_Printf(".");Serial_SendNumber(c1%10, 1);Serial_SendString("%");Serial_Printf("        ");//温度Serial_Printf("T:");Serial_SendNumber(t1/10, 2);Serial_Printf(".");Serial_SendNumber(t1%10, 1);Serial_Printf(" C\n");}
}

TCA9548A.c

#include "stm32f10x.h"   
#include "TCA9548A.h"
#include "MyI2C.h"#define TCA9548_ADD  0x70       //TCA9548的I2C从机地址//TCA9548A读一个字节的寄存器
uint8_t TCA9548A_ReadByte(void)
{uint8_t Data;MyI2C_Start();MyI2C_SendByte(TCA9548_ADD << 1 | 0x01);   //发送从机地址,读写位为1,表示即将读取,0x71MyI2C_ReceiveAck();Data = MyI2C_ReceiveByte();MyI2C_SendAck(1);MyI2C_Stop();return Data;
}//TCA9548A写一个字节的寄存器,用来选择通道
void TCA9548A_WriteByte(uint8_t Channel)
{MyI2C_Start();MyI2C_SendByte(TCA9548_ADD << 1 | 0x00);    //发送从机地址,读写位为0,表示即将写入,0x70MyI2C_ReceiveAck();MyI2C_SendByte(1 << Channel);MyI2C_ReceiveAck();MyI2C_Stop();
}//TCA9548A初始化
void TCA9548A_Init(void)
{MyI2C_Init(); 
}

现象

通道7串口输出
在这里插入图片描述

通道0 OLED显示
在这里插入图片描述

总结

AHT10需要留够时间给模块初始化和测量数据,不然读出数据可能会有错误。
需要整个工程代码可以在下方评论留言哦!

相关文章:

STM32软件IIC驱动TCA9548A多路测量AHT10

STM32软件IIC驱动TCA9548多路测量AHT10 TCA9548AAHT10代码逻辑代码展示现象总结 TCA9548A TCA9548A 有八个可通过 I2C 总线控制的双向转换开关&#xff0c;SCL/SDA 上行对扩展到八个下行对&#xff0c;或者通道&#xff0c;适用于系统中存在I2C目标地址冲突的情况。8路双向转换…...

博弈论3:图游戏SG函数(Graph Games)

目录 一、图游戏是什么 1.游戏特征 2.游戏实例 二、图游戏的必胜策略 1.SG 函数&#xff08;Sprague-Grundy Function&#xff09; 2.必胜策略&#xff08;利用SG函数&#xff09; 3.拿走游戏转化成图游戏&#xff08;Take-away Game -> Graph Game&#xff09; 一、图…...

音视频入门基础:MPEG2-TS专题(17)——FFmpeg源码中,解析TS program map section的实现

一、引言 由《音视频入门基础&#xff1a;MPEG2-TS专题&#xff08;16&#xff09;——PMT简介》可以知道&#xff0c;PMT表&#xff08;Program map table&#xff09;由一个或多个段&#xff08;Transport stream program map section&#xff0c;简称TS program map sectio…...

SQL server学习05-查询数据表中的数据(上)

目录 一&#xff0c;基本格式 1&#xff0c;简单的SQL查询语句 2&#xff0c;关键字TOP 3&#xff0c;关键字DISTINCT 二&#xff0c;模糊查询 1&#xff0c;通配符 三&#xff0c;对结果集排序 1&#xff0c;不含关键字DISTINCT 2&#xff0c;含关键字DISTINCT 3&…...

Transformer记录Attention is all you need

视频&#xff1a; Transformer 原理详解_哔哩哔哩_bilibili 代码&#xff1a; harvardnlp/annotated-transformer: An annotated implementation of the Transformer paper....

JAVA入门:使用IDE开发

JAVA入门&#xff1a;使用IDE开发 什么是IDE IDE&#xff08;Integrated Development Environment&#xff0c;集成开发环境&#xff09;是一种软件应用程序&#xff0c;它为程序开发、软件设计、项目管理等提供全面的设施。 简单来说就是简化开发过程&#xff0c;让编程更加…...

汽车嵌入式软件构建高效技术团队的全面思考

在汽车嵌入式软件开发领域&#xff0c;构建一支高效的通用技术团队至关重要。这类团队负责为各种项目提供可复用、标准化的技术基石&#xff0c;从而提高开发效率、降低成本并确保产品质量。构建这样的团队需要从技术能力、角色分工、标准化与复用、流程管理与质量保证、工具和…...

Debezium源码分析: TopicSelector实现原理与应用

Debezium源码分析: TopicSelector实现原理与应用 Debezium源码分析: TopicSelector实现原理与应用文章目录背景介绍主要功能应用场景实现原理DataCollectionId 接口核心设计工作流程源码分析基础实现默认选择器创建应用示例1. 分库分表场景2. 多租户场景3. 业务领域分组总结设计…...

SpringCloud微服务实战系列:03spring-cloud-gateway业务网关灰度发布

目录 spring-cloud-gateway 和zuul spring webflux 和 spring mvc spring-cloud-gateway 的两种模式 spring-cloud-gateway server 模式下配置说明 grayLb://system-server 灰度发布代码实现 spring-cloud-gateway 和zuul zuul 是spring全家桶的第一代网关组件&#x…...

【恶意软件检测论文】通过提取 API 语义来实现的一个新颖的安卓恶意软件检测方法

目录 摘要1. 引言2. 相关工作2.1. 基于重新训练的恶意软件检测2.2. 基于应用关系图的恶意软件检测2.3. 基于异常样本识别的恶意软件检测2.4. 基于API聚类的恶意软件检测 3. AMDASE概述4. 基于语义距离的API聚类4.1. API特征提取4.2. API句子生成4.3. API句子编码4.4.聚类中心生…...

大模型系列4--开源大模型本地部署到微调(WIP)

背景 一直想真正了解大模型对硬件资源的需求&#xff0c;于是准备详细看一篇视频&#xff0c;将核心要点总结记录下。本文内容参考视频&#xff1a;保姆级教程&#xff1a;6小时掌握开源大模型本地部署到微调&#xff0c;感谢up主 训练成本 训练 > 微调 > 推理训练GPT…...

Linux 磁盘满了怎么办?快速排查和清理方法

当 Linux 磁盘满了&#xff0c;会导致系统无法正常运行&#xff0c;比如无法写入文件、服务停止、甚至系统崩溃。因此&#xff0c;快速排查并清理磁盘空间是非常重要的。以下是详细的排查和解决步骤&#xff1a; 一、快速定位磁盘占用原因 1. 检查磁盘使用情况 使用 df 命令查…...

go 协程练习例题

go 协程练习例题 例1&#xff1a;统计 1-200000 的数字中&#xff0c;哪些是素数例2&#xff1a;使用单通道、2个协程交替读取字符串例3&#xff1a;使用1个管道&#xff0c;2个协程写数据、1个协程读例4&#xff1a;完成一个并发任务调度器&#xff0c;按照指定顺序执行一系列…...

JAVA:访问者模式(Visitor Pattern)的技术指南

1、简述 访问者模式(Visitor Pattern)是一种行为型设计模式,允许你将操作分离到不同的对象中,而无需修改对象本身的结构。这种模式特别适合复杂对象结构中对其元素进行操作的场景。 本文将介绍访问者模式的核心概念、优缺点,并通过详细代码示例展示如何在实际应用中实现…...

如何实现邮箱+验证码登录功能(express+vue+MySQL版)

目录 1. 初始化项目2. 配置环境变量3. 更新数据库4. 编写路由函数5. 前端调用接口 1. 初始化项目 前端根目录&#xff1a;/web 后端根目录&#xff1a;/api_server 安装依赖&#xff1a; npm install express mysql nodemailer randomstring dotenv其中&#xff0c;nodemaile…...

Pycharm访问MySQL数据库·上

1.MySQL驱动模块Connector #导入数据库的驱动工具 import mysql.connector #连接数据库必备的条件 config {"host": "localhost","port": 3306,"user": "root","password": "888888","database&…...

vscode+msys2+clang+xmake c++开发环境搭建

转载请标明出处&#xff1a;小帆的帆的专栏 安装msys2 下载msys2安装包&#xff1a;清华源下载地址安装msys2&#xff1a;安装目录&#xff0c;C:\Softwares\msys64 安装cling工具链&#xff0c;xmake &#xff01;&#xff01;&#xff01;在开始菜单中启动MSYS2 CLANG64,…...

Python面试常见问题及答案5

一、基础语法相关 问题1&#xff1a; Python的可变数据类型和不可变数据类型有哪些&#xff1f; 答案&#xff1a; 在Python中&#xff0c;可变数据类型有列表&#xff08;list&#xff09;、字典&#xff08;dict&#xff09;、集合&#xff08;set&#xff09;。这些数据类型…...

威联通docker无法拉取镜像

链接:威联通TS-464C 折腾--Container Station国内无法拉取镜像_docker_wangguanghe-开放原子开发者工作坊我这里用的是IPV6 ,没有公网资源啊。 wangguanghe...

3D 生成重建034-NerfDiff借助扩散模型直接生成nerf

3D 生成重建034-NerfDiff借助扩散模型直接生成nerf 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 感觉这个论文可能能shapE差不多同时期工作&#xff0c;但是shapE是生成任意种类。 本文提出了一种新颖的单图像视图合成方法NerfDiff&#xff0c;该方法利用神经辐射场 …...

ASP.net Core EntityFramework Code EF code 汇总

Entity FrameWork EF 总结 EF Core EF Core 如果实体模型很多&#xff0c;全部放在 上下文中的 OnModelCreating(ModelBuilder modelBuilder) 不太好维护 可以把实体模型 分离出去&#xff0c;每个类创建一个实体模型 public class BookConfiguration &#xff1a;IEntityT…...

AtCoder Beginner Contest 384 Solution

文章目录 ABCDEFG A void solve() {string s; char x, y;qr(n, x, y, s);for(auto i: s) {if(i ! x) i y;cout << i;} }B void solve() {qr(n, m);for (int i 1; i < n; i) {int x, y;qr(x, y);x--;if(1600 - x * 400 < m && m < 2799 - x * 400) m…...

c# TaskScheduler

这里记录下 TaskScheduler 的简单用法。 使用场景&#xff1a; 使用 Task 的时候&#xff0c;大家知道用 TaskFactory.StartNew 可以用来创建一个 Task 。这里如果创建了 3 个&#xff0c;那么这3个 Task 就各自放飞直接运行了。 class Program {private static TaskFactory…...

FFMPEG视频转图片

用FFMPEG视频转图片&#xff0c;并且for循环 import os import subprocess# 输入文件夹和输出文件夹路径 input_folder r"I:\xxx" output_base_folder r"D:\xxx\YOLO\data\video" output_subfolder_name "20240609"# 创建输出子文件夹 output…...

激活函数-swiGLU

swiGLU&#xff08;Switch Gated Linear Unit&#xff09;简介 swiGLU 是一种改进的激活函数模块&#xff0c;主要用于深度学习中的 Transformer 模型和其他神经网络架构。它在 GLU&#xff08;Gated Linear Unit&#xff09; 的基础上进行了修改&#xff0c;以提升模型的表现…...

PCIe学习笔记

PCIE高速串行数据总线 当拿到一块板子 比如你要用到PCIE 首先要看这块板子的原理图 一般原理图写的是 PCI express 表示PCIE 以下是Netfpga为例下的PCIE插口元件原理图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/01dc604fbdc847e8998a978c83c7b2eb.png 一般主…...

制作容器镜像

容器基础镜像制作 由于项目使用麒麟操作系统&#xff0c;需要在麒麟桌面操作系统和服务器操作系统里编译代码&#xff0c;如果每次都在物理机和虚拟机里编译太不方便&#xff0c;也无法使用常用的 jenkins k8s 组成的 CI/CD 编译环境&#xff0c;如果基于整个ISO太大了&#…...

mysql系列4—mysql数据库设计和查询优化

背景 数据库作为持久层需要从磁盘读写数据&#xff0c;是整个系统的短板&#xff0c;其性能会直接体现在产品性能上。因此数据库的设计和优化再怎么强调也不为过。本文将从数据库设计和查询优化两个角度思考如何提高数据库性能&#xff0c;内容包括数据库范式与表设计、基本字…...

音视频入门基础:MPEG2-TS专题(16)——PMT简介

一、引言 PMT&#xff08;Program Map Table&#xff09;与PAT表成对出现&#xff0c;其PID由PAT表给出。通过PMT表可以得到该节目包含的视频和音频信息&#xff0c;从而找到音视频流&#xff1a; 二、PMT表中的属性 根据《T-REC-H.222.0-202106-S!!PDF-E.pdf》第79页&#x…...

2024小迪安全信息收集第三课

目录 一、Web应用-架构分析-WAF&蜜罐识别 二、Web应用-架构分析-框架组件指纹识别 #Web架构 开源CMS 前端技术 开发语言 框架组件 Web服务器 应用服务器 数据库类型 操作系统信息 应用服务信息 CDN信息 WAF信息 蜜罐信息 其他组件信息 #指纹识别 #WAF识别…...

ESP32-C3 入门笔记07: ESP-NOW动态绑定MAC地址. (ESP-IDF + VSCode)

ESP-NOW 简介 ESP-NOW [gitbuh] ESP-NOW 是一种由乐鑫公司定义的无连接 Wi-Fi 通信协议。在 ESP-NOW 中&#xff0c;应用程序数据被封装在各个供应商的动作帧中&#xff0c;然后在无连接的情况下&#xff0c;从一个 Wi-Fi 设备传输到另一个 Wi-Fi 设备。 CTR 与 CBC-MAC 协…...

Windows如何安装go环境,离线安装beego

一、安装go 1、下载go All releases - The Go Programming Language 通过网盘分享的文件&#xff1a;分享的文件 链接: https://pan.baidu.com/s/1MCbo3k3otSoVdmIR4mpPiQ 提取码: hxgf 下载amd64.zip文件&#xff0c;然后解压到指定的路径 2、配置环境变量 需要新建两个环境…...

【Unity技巧】如何设置屏幕最小宽度

在 Unity 中&#xff0c;设置屏幕最小宽度可以通过调整 Canvas 的 CanvasScaler 组件来控制 UI 元素的缩放&#xff0c;并确保 UI 在不同屏幕宽度下始终能保持适当的布局。 不过&#xff0c;如果你想要限制游戏的实际窗口宽度&#xff0c;通常是通过代码来实现的。例如&#x…...

【新版】阿里云ACP云计算题库及答案解析

阿里云ACO云计算考试提醒都是选择题&#xff0c;70道单选题30道单选题&#xff0c;聪明的小伙伴都知道刷题备考加深记忆&#xff0c;给大家分享一波阿里云ACP云计算题库及答案&#xff0c;希望对大家顺利拿到阿里云ACP云计算高级工程师证书有所帮助&#xff01; 1、设计云上架…...

【蓝桥杯每日一题】推导部分和——带权并查集

推导部分和 2024-12-11 蓝桥杯每日一题 推导部分和 带权并查集 题目大意 对于一个长度为 ( N ) 的整数数列 A 1 , A 2 , ⋯ , A N A_1, A_2, \cdots, A_N A1​,A2​,⋯,AN​ &#xff0c;小蓝想知道下标 ( l ) 到 ( r ) 的部分和 ∑ i l r A i A l A l 1 ⋯ A r \sum_{…...

【Linux服务器nginx前端部署详解】ubantu22.04,前端Vue项目dist打包

本文主要讲一下在Linux系统环境下&#xff08;以ubantu22.04为例&#xff09;&#xff0c;如何用nginx部署前端Vue项目打包的dist静态资源。有些具体的命令就不展开讲了&#xff0c;可以自行查看其他博主的文章&#xff0c;我主要讲整体的步骤和思路。 一、ubantu系统安装ngin…...

Groovy 语法快速入门

文章目录 1. Groovy 的特点2. 基本语法2.1. 变量2.2. 字符串2.3. 条件语句 3. 集合操作3.1. 列表&#xff08;List&#xff09;3.2. 映射&#xff08;Map&#xff09; 4. 循环语句4.1. 普通循环4.2. 闭包遍历 5. 方法定义6. 闭包&#xff08;Closure&#xff09;6.1. 定义与调用…...

vue3 Textarea在光标定位处,增加一定的关键词。

1、经常碰到这种情况&#xff0c;有一些是系统预留的关键词可以选择&#xff0c;当用户把光标定位到什么地方&#xff0c;我们就要在这个位置插入指定的关键词。 2、光标定位在今天的前面&#xff0c;那么我们点击【逗号】按钮&#xff0c;在这个位置增加一个逗号。 3、代码&…...

硬件设计-电源轨噪声对时钟抖动的影响

目录 定义 实际案例 总结 定义 首先了解抖动的定义&#xff0c;在ITU-T G.701中有关抖动的定义如下&#xff1a; 数字信号重要瞬间相对于其理想时间位置的短期非累积变化。 抖动是时钟或数据信号时序的短期时域变化。抖动包括信号周期、频率、相位、占空比或其他一些定时特…...

Graspness 端到端抓取点估计 | 环境搭建 | 模型推理测试

在复杂场景中实现抓取检测&#xff0c;Graspness是一种端到端的方法&#xff1b; 输入点云数据&#xff0c;输出抓取角度、抓取深度、夹具宽度等信息。 开源地址&#xff1a;https://github.com/rhett-chen/graspness_implementation?tabreadme-ov-file 论文地址&#xff1…...

大模型呼入机器人的缺点是什么?(转)

大模型呼入机器人的缺点是什么&#xff1f;(转) 原作者&#xff1a;开源呼叫中心FreeIPCC&#xff0c;其Github&#xff1a;https://github.com/FreeIPCC/FreeIPCC 大模型呼入机器人在提供高效、自动化服务的同时&#xff0c;也存在一些缺点。以下是对其缺点的详细归纳&#…...

ASP.NET |日常开发中连接Oracle数据库详解

ASP.NET &#xff5c;日常开发中连接Oracle数据库详解 前言一、安装和配置 Oracle 数据访问组件1.1 安装ODP.NET&#xff08;Oracle Data Provider for.NET&#xff09;&#xff1a;1.2 引用相关程序集&#xff1a; 二、配置连接字符串2.1 连接字符串的基本组成部分&#xff1a…...

Kaggler日志-Day4

进度24/12/14 昨日复盘&#xff1a; Pandas课程完成 Intermediate Mechine Learning2/7 今日记录&#xff1a; Intermediate Mechine Learning之类型变量 读两篇讲解如何提问的文章&#xff0c;在提问区里发起一次提问 实战&#xff1a;自己从头到尾首先Housing Prices Compe…...

onnx算子的注册详解及案例 (完整版)

文章目录 1. 介绍1.1 导出onnx不成功1.2 分析和解决方案2. 案例2.1 Asinh算子注册2.1.1 导出onnx2.1.2 算子注册2.2 自定义算子的注册2.1 直接导出自定义算子2.2 自定义算子的注册并导出2.3 导出带deformable conv 的onnx2.3.1 直接导出deformable conv2.3.2 注册并导出deforma…...

2024生命科学前沿技术

前沿技术是指高技术领域中具有前瞻性、先导性和探索性的重大技术&#xff0c;是未来高技术更新换代和新兴产业发展的重要基础&#xff0c;是国家高技术创新能力的综合体现。选择前沿技术的主要原则一是代表世界高技术前沿的发展方向。二是对国家未来新兴产业的形成和发展具有引…...

游戏引擎学习第47天

仓库: https://gitee.com/mrxiao_com/2d_game 昨天我们花了一点时间来修复一个问题&#xff0c;但基本上是在修复这个问题的过程中&#xff0c;我们决定添加一个功能&#xff0c;那就是在屏幕上控制多个实体。所以如果我有一个手柄&#xff0c;我可以添加另一个角色&#xff0…...

1.编写 Prompt 的原则

一、环境配置 使用 OpenAI 的 ChatGPT API&#xff0c;需要有 API_KEY&#xff0c;并安装 OpenAI 库。安装命令&#xff1a;pip install openai 和 pip install zhipuai。配置方法&#xff1a;直接设置 openai.api_key 或通过环境变量设置。 二、两个基本原则 2.1 原则一&am…...

【JavaEE】网络(2)

一、网络编程套接字 1.1 基础概念 【网络编程】指网络上的主机&#xff0c;通过不同的进程&#xff0c;以编程的方式实现网络通信&#xff1b;当然&#xff0c;我们只要满足进程不同就行&#xff0c;所以即便是同一个主机&#xff0c;只要是不同进程&#xff0c;基于网络来传…...

SAS - Subtractive Port

在SAS&#xff08;串行连接SCSI&#xff0c;Serial Attached SCSI&#xff09;协议中&#xff0c;subtractive port 是一种特殊类型的端口&#xff0c;主要用于设备间的路由功能。它的作用是在路径选择过程中充当默认路径&#xff0c;以处理未明确指定路径的请求。以下是它的定…...

Unity3D项目为什么要使用FairyGUI

前言 Unity3D项目选择使用FairyGUI的原因是多方面的&#xff0c;主要涵盖性能优化、设计模式、编辑器支持、跨平台兼容性以及丰富的功能特性。以下是对这些方面的详细解析以及相关的代码实现。 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;希望大家可以点击进来一…...