结构体位域保存传感器数据
1、原理图分析:
8个74HC4052共用两个选通引脚,8个输入引脚,一共可以检测64个数字红外传感器。74HC4052的功能表如下,nY0表示所有Y0引脚。
S1 S0 Channel on
0 0 nY0
0 1 nY1
1 0 nY2
1 1 nY3
enum sensor_id{HS01 = 0, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, HS11, HS12, HS13, HS14, HS15, HS16, HS17,HS18,HS19,HS20,HS21,HS22,HS23,HS24,HS25,HS26,HS27,HS28,HS29,HS30,HS31,HS32,HS33,HS34,HS35,HS36,HS37,HS38,HS39,HS40,HS41,HS42,HS43,HS44,HS45,HS46,HS47,HS48,HS49,HS50,HS51,HS52,HS53,HS54,HS55,HS56,HS57,HS58,HS59,HS60,HS61,HS62,HS63,HS64,HS_NUM
};#define RENEM_STEPS 4
uint8_t renew_flag = 0;
static uint8_t phase = 0;
volatile uint8_t g_u8sensorStatus[HS_NUM];
//周期性更新红外数字传感器的状态,200us调用一次
void renew_irsensor_status(void)
{renew_flag = 1;if(++phase >= RENEM_STEPS)phase = 0;switch(phase){case 0://读取S1=0,S0=1g_u8sensorStatus[HS06] = GPIO_PinRead(BOARD_INITPINS_IRIN1_PORT,BOARD_INITPINS_IRIN1_PIN);g_u8sensorStatus[HS41] = GPIO_PinRead(BOARD_INITPINS_IRIN2_PORT,BOARD_INITPINS_IRIN2_PIN);g_u8sensorStatus[HS12] = GPIO_PinRead(BOARD_INITPINS_IRIN3_PORT,BOARD_INITPINS_IRIN3_PIN);g_u8sensorStatus[HS56] = GPIO_PinRead(BOARD_INITPINS_IRIN4_PORT,BOARD_INITPINS_IRIN4_PIN);g_u8sensorStatus[HS19] = GPIO_PinRead(BOARD_INITPINS_IRIN5_PORT,BOARD_INITPINS_IRIN5_PIN);g_u8sensorStatus[HS23] = GPIO_PinRead(BOARD_INITPINS_IRIN6_PORT,BOARD_INITPINS_IRIN6_PIN);g_u8sensorStatus[HS27] = GPIO_PinRead(BOARD_INITPINS_IRIN7_PORT,BOARD_INITPINS_IRIN7_PIN);g_u8sensorStatus[HS31] = GPIO_PinRead(BOARD_INITPINS_IRIN8_PORT,BOARD_INITPINS_IRIN8_PIN);g_u8sensorStatus[HS03] = GPIO_PinRead(BOARD_INITPINS_IRIN9_PORT,BOARD_INITPINS_IRIN9_PIN);g_u8sensorStatus[HS36] = GPIO_PinRead(BOARD_INITPINS_IRIN10_PORT,BOARD_INITPINS_IRIN10_PIN);g_u8sensorStatus[HS09] = GPIO_PinRead(BOARD_INITPINS_IRIN11_PORT,BOARD_INITPINS_IRIN11_PIN);g_u8sensorStatus[HS46] = GPIO_PinRead(BOARD_INITPINS_IRIN12_PORT,BOARD_INITPINS_IRIN12_PIN);g_u8sensorStatus[HS50] = GPIO_PinRead(BOARD_INITPINS_IRIN13_PORT,BOARD_INITPINS_IRIN13_PIN);g_u8sensorStatus[HS54] = GPIO_PinRead(BOARD_INITPINS_IRIN14_PORT,BOARD_INITPINS_IRIN14_PIN);g_u8sensorStatus[HS59] = GPIO_PinRead(BOARD_INITPINS_IRIN15_PORT,BOARD_INITPINS_IRIN15_PIN);g_u8sensorStatus[HS63] = GPIO_PinRead(BOARD_INITPINS_IRIN16_PORT,BOARD_INITPINS_IRIN16_PIN); GPIO_PinWrite(BOARD_INITPINS_IRS0_PORT, BOARD_INITPINS_IRS0_PIN,0); GPIO_PinWrite(BOARD_INITPINS_IRS1_PORT, BOARD_INITPINS_IRS1_PIN,0); break;case 1: //读取S1=0,S0=0g_u8sensorStatus[HS04] = GPIO_PinRead(BOARD_INITPINS_IRIN1_PORT,BOARD_INITPINS_IRIN1_PIN);g_u8sensorStatus[HS39] = GPIO_PinRead(BOARD_INITPINS_IRIN2_PORT,BOARD_INITPINS_IRIN2_PIN);g_u8sensorStatus[HS10] = GPIO_PinRead(BOARD_INITPINS_IRIN3_PORT,BOARD_INITPINS_IRIN3_PIN);g_u8sensorStatus[HS14] = GPIO_PinRead(BOARD_INITPINS_IRIN4_PORT,BOARD_INITPINS_IRIN4_PIN);g_u8sensorStatus[HS17] = GPIO_PinRead(BOARD_INITPINS_IRIN5_PORT,BOARD_INITPINS_IRIN5_PIN);g_u8sensorStatus[HS21] = GPIO_PinRead(BOARD_INITPINS_IRIN6_PORT,BOARD_INITPINS_IRIN6_PIN);g_u8sensorStatus[HS25] = GPIO_PinRead(BOARD_INITPINS_IRIN7_PORT,BOARD_INITPINS_IRIN7_PIN);g_u8sensorStatus[HS29] = GPIO_PinRead(BOARD_INITPINS_IRIN8_PORT,BOARD_INITPINS_IRIN8_PIN);g_u8sensorStatus[HS01] = GPIO_PinRead(BOARD_INITPINS_IRIN9_PORT,BOARD_INITPINS_IRIN9_PIN);g_u8sensorStatus[HS34] = GPIO_PinRead(BOARD_INITPINS_IRIN10_PORT,BOARD_INITPINS_IRIN10_PIN);g_u8sensorStatus[HS07] = GPIO_PinRead(BOARD_INITPINS_IRIN11_PORT,BOARD_INITPINS_IRIN11_PIN);g_u8sensorStatus[HS44] = GPIO_PinRead(BOARD_INITPINS_IRIN12_PORT,BOARD_INITPINS_IRIN12_PIN);g_u8sensorStatus[HS48] = GPIO_PinRead(BOARD_INITPINS_IRIN13_PORT,BOARD_INITPINS_IRIN13_PIN);g_u8sensorStatus[HS52] = GPIO_PinRead(BOARD_INITPINS_IRIN14_PORT,BOARD_INITPINS_IRIN14_PIN);g_u8sensorStatus[HS16] = GPIO_PinRead(BOARD_INITPINS_IRIN15_PORT,BOARD_INITPINS_IRIN15_PIN);g_u8sensorStatus[HS61] = GPIO_PinRead(BOARD_INITPINS_IRIN16_PORT,BOARD_INITPINS_IRIN16_PIN); GPIO_PinWrite(BOARD_INITPINS_IRS0_PORT, BOARD_INITPINS_IRS0_PIN,0); GPIO_PinWrite(BOARD_INITPINS_IRS1_PORT, BOARD_INITPINS_IRS1_PIN,1); break;case 2://读取S1=1,S0=0g_u8sensorStatus[HS05] = GPIO_PinRead(BOARD_INITPINS_IRIN1_PORT,BOARD_INITPINS_IRIN1_PIN);g_u8sensorStatus[HS40] = GPIO_PinRead(BOARD_INITPINS_IRIN2_PORT,BOARD_INITPINS_IRIN2_PIN);g_u8sensorStatus[HS11] = GPIO_PinRead(BOARD_INITPINS_IRIN3_PORT,BOARD_INITPINS_IRIN3_PIN);g_u8sensorStatus[HS15] = GPIO_PinRead(BOARD_INITPINS_IRIN4_PORT,BOARD_INITPINS_IRIN4_PIN);g_u8sensorStatus[HS18] = GPIO_PinRead(BOARD_INITPINS_IRIN5_PORT,BOARD_INITPINS_IRIN5_PIN);g_u8sensorStatus[HS22] = GPIO_PinRead(BOARD_INITPINS_IRIN6_PORT,BOARD_INITPINS_IRIN6_PIN);g_u8sensorStatus[HS26] = GPIO_PinRead(BOARD_INITPINS_IRIN7_PORT,BOARD_INITPINS_IRIN7_PIN);g_u8sensorStatus[HS30] = GPIO_PinRead(BOARD_INITPINS_IRIN8_PORT,BOARD_INITPINS_IRIN8_PIN);g_u8sensorStatus[HS02] = GPIO_PinRead(BOARD_INITPINS_IRIN9_PORT,BOARD_INITPINS_IRIN9_PIN);g_u8sensorStatus[HS35] = GPIO_PinRead(BOARD_INITPINS_IRIN10_PORT,BOARD_INITPINS_IRIN10_PIN);g_u8sensorStatus[HS08] = GPIO_PinRead(BOARD_INITPINS_IRIN11_PORT,BOARD_INITPINS_IRIN11_PIN);g_u8sensorStatus[HS45] = GPIO_PinRead(BOARD_INITPINS_IRIN12_PORT,BOARD_INITPINS_IRIN12_PIN);g_u8sensorStatus[HS49] = GPIO_PinRead(BOARD_INITPINS_IRIN13_PORT,BOARD_INITPINS_IRIN13_PIN);g_u8sensorStatus[HS53] = GPIO_PinRead(BOARD_INITPINS_IRIN14_PORT,BOARD_INITPINS_IRIN14_PIN);g_u8sensorStatus[HS58] = GPIO_PinRead(BOARD_INITPINS_IRIN15_PORT,BOARD_INITPINS_IRIN15_PIN);g_u8sensorStatus[HS62] = GPIO_PinRead(BOARD_INITPINS_IRIN16_PORT,BOARD_INITPINS_IRIN16_PIN); GPIO_PinWrite(BOARD_INITPINS_IRS0_PORT, BOARD_INITPINS_IRS0_PIN,1); GPIO_PinWrite(BOARD_INITPINS_IRS1_PORT, BOARD_INITPINS_IRS1_PIN,1); break;case 3: //读取S1=1,S0=1 g_u8sensorStatus[HS38] = GPIO_PinRead(BOARD_INITPINS_IRIN1_PORT,BOARD_INITPINS_IRIN1_PIN);g_u8sensorStatus[HS42] = GPIO_PinRead(BOARD_INITPINS_IRIN2_PORT,BOARD_INITPINS_IRIN2_PIN);g_u8sensorStatus[HS13] = GPIO_PinRead(BOARD_INITPINS_IRIN3_PORT,BOARD_INITPINS_IRIN3_PIN);g_u8sensorStatus[HS57] = GPIO_PinRead(BOARD_INITPINS_IRIN4_PORT,BOARD_INITPINS_IRIN4_PIN);g_u8sensorStatus[HS20] = GPIO_PinRead(BOARD_INITPINS_IRIN5_PORT,BOARD_INITPINS_IRIN5_PIN);g_u8sensorStatus[HS24] = GPIO_PinRead(BOARD_INITPINS_IRIN6_PORT,BOARD_INITPINS_IRIN6_PIN);g_u8sensorStatus[HS28] = GPIO_PinRead(BOARD_INITPINS_IRIN7_PORT,BOARD_INITPINS_IRIN7_PIN);g_u8sensorStatus[HS32] = GPIO_PinRead(BOARD_INITPINS_IRIN8_PORT,BOARD_INITPINS_IRIN8_PIN);g_u8sensorStatus[HS33] = GPIO_PinRead(BOARD_INITPINS_IRIN9_PORT,BOARD_INITPINS_IRIN9_PIN);g_u8sensorStatus[HS37] = GPIO_PinRead(BOARD_INITPINS_IRIN10_PORT,BOARD_INITPINS_IRIN10_PIN);g_u8sensorStatus[HS43] = GPIO_PinRead(BOARD_INITPINS_IRIN11_PORT,BOARD_INITPINS_IRIN11_PIN);g_u8sensorStatus[HS47] = GPIO_PinRead(BOARD_INITPINS_IRIN12_PORT,BOARD_INITPINS_IRIN12_PIN);g_u8sensorStatus[HS51] = GPIO_PinRead(BOARD_INITPINS_IRIN13_PORT,BOARD_INITPINS_IRIN13_PIN);g_u8sensorStatus[HS55] = GPIO_PinRead(BOARD_INITPINS_IRIN14_PORT,BOARD_INITPINS_IRIN14_PIN);g_u8sensorStatus[HS60] = GPIO_PinRead(BOARD_INITPINS_IRIN15_PORT,BOARD_INITPINS_IRIN15_PIN);g_u8sensorStatus[HS64] = GPIO_PinRead(BOARD_INITPINS_IRIN16_PORT,BOARD_INITPINS_IRIN16_PIN);GPIO_PinWrite(BOARD_INITPINS_IRS0_PORT, BOARD_INITPINS_IRS0_PIN,1); GPIO_PinWrite(BOARD_INITPINS_IRS1_PORT, BOARD_INITPINS_IRS1_PIN,0); break;default:break;}renew_flag = 0;
}
/产品有64个数字红外传感器,传感器的状态有两种,0或1,使用结构体位域,在节省内存的同时还方便阅读。
这个定义在中间层,应用层调用中间层,驱动层负责获取传感器的状态并赋值给这个结构体。/
struct ir_sensor
{uint32_t s001:1;uint32_t s002:1;uint32_t s003:1;uint32_t s004:1;uint32_t s005:1;uint32_t s006:1;uint32_t s007:1;uint32_t s008:1;uint32_t s009:1;uint32_t s010:1;uint32_t s011:1;uint32_t s012:1;uint32_t s013:1;uint32_t s014:1;uint32_t s017:1;uint32_t s018:1;uint32_t s019:1;uint32_t s020:1;uint32_t s014:1;uint32_t s001:1;uint32_t s102:1;uint32_t s103:1;uint32_t s104:1;uint32_t s201:1;uint32_t s202:1;uint32_t s203:1;uint32_t s204:1;uint32_t s205:1;uint32_t s206:1;uint32_t s301:1;uint32_t s302:1; uint32_t s303:1;uint32_t s401:1;uint32_t s402:1;uint32_t s403:1;uint32_t s404:1;uint32_t s405:1;uint32_t s406:1;uint32_t s407:1;uint32_t s408:1;uint32_t s410:1;uint32_t s411:1;uint32_t s412:1; uint32_t s511:1;uint32_t s512:1;uint32_t s513:1;uint32_t s521:1;uint32_t s522:1;uint32_t s523:1;uint32_t s611:1;uint32_t s612:1;uint32_t s613:1;uint32_t s621:1;uint32_t s622:1;uint32_t s623:1;uint32_t s500:1;uint32_t ss01:1;uint32_t sf01:1;uint32_t sb01:1;uint32_t sb02:1;uint32_t sw01:1;uint32_t sab1:1;
}//周期性更新数字红外传感器状态到中间层,1ms调用一次
struct ir_sensor g_irSensor;
void get_irsensor_status(void)
{uint8_t i,l_u8sensorStatus[HS_NUM];if( renew_flag ) return;for(i=0;i<HS_NUM;i++){l_u8sensorStatus[i] = g_u8sensorStatus[i];}g_irSensor.s001 = l_u8sensorStatus[HS01];
}相关文章:
结构体位域保存传感器数据
1、原理图分析: 8个74HC4052共用两个选通引脚,8个输入引脚,一共可以检测64个数字红外传感器。74HC4052的功能表如下,nY0表示所有Y0引脚。 S1 S0 Channel on 0 0 nY0 0 1 nY1 1 0 nY2 1 1 nY3 enum sensor_id{HS01 0, HS02, HS03, HS0…...
66-ES6:var,let,const,函数的声明方式,函数参数,剩余函数,延展操作符
1.JavaScript语言的执行流程 编译阶段:构建执行函数;执行阶段:代码依次执行 2.代码块:{ } 3.变量声明方式var 有声明提升,允许重复声明,声明函数级作用域 访问:声明后访问都是正常的&…...
prime_series_level-1靶场详解
环境搭建 官网https://www.vulnhub.com/entry/prime-1,358/ 直接导入靶机 解题思路 arp-scan -l 确认靶机ip为192.168.236.136 也可以使用nmap扫网段 nmap -sn 192.168.236.0/24 使用nmap扫描靶机开放的端口 nmap -sS -T5 --min-rate 10000 192.168.236.136 -sC -p- …...
LeetCode刷题笔记之二叉树(三)
一、寻找特定节点 1. 404【左叶子之和】 题目: 给定二叉树的根节点 root ,返回所有左叶子之和。代码: class Solution {public int sumOfLeftLeaves(TreeNode root) {//左叶子不止是最左边的叶子,而是二叉树中每个节点的左叶子…...
IBM在闪存系统集成实时恶意软件I/O检测功能
IBM在其最新一代FlashCore Modules(FCMs)固件中集成了使用机器学习进行实时勒索软件和其他攻击检测的功能。这些FCMs是专用于IBM FlashSystem 5000和Storwize阵列的闪存驱动器,采用U.2外形尺寸及NVMe接口。现有的第三代FCMs分别提供4.8、9.6、…...
bpmn-js中实现xml数据转为json数据
开发bpmn-js建模器,希望将bpmn数据格式转为json数据格式更加清晰的展示数据层次,以结果为导向分析需求,实现功能的思路有两种方式: 通过bpmn-js转化为JS数据对象,然后通过JS中提供的JSON模块转换为json数据将xml解析成dom对象,通过dom对象转化为json格式数据三方库这里主…...
HUAWEI Programming Contest 2024(AtCoder Beginner Contest 342)(A,B,C,D,E,F,G)
看不懂的英文,题意很难理解,这场还是有点难度的。 C需要处理,D是不太明显的dijikstra,E是线段树优化dp,F是个不好想的线段树,主席树应该也能做。 我觉得讲的很好的宝藏up主->B站视频讲解。之后会比较忙…...
解决Docker镜像中CentOS 8仓库问题
前言: 在yum执行过程中,持续遇到与CentOS 8上的’appstream’仓库元数据检索相关的错误。具体错误消息为:“错误:下载’appstream’仓库元数据失败:无法准备内部镜像列表:镜像列表中没有URL。” 问题分析&…...
顶顶通呼叫中心中间件-如何使处于机器人话术中的通话手动转接到坐席分机上讲解(mod_cti基于FreeSWITCH)
顶顶通呼叫中心中间件使用httpapi实现电话转接操作过程讲解(mod_cti基于FreeSWITCH) 需要了解呼叫中心中间件可以点以下链接了解顶顶通小孙 1、使用httpapi接口转接 一、打开web版的ccadmin并且找到接口测试 打开web-ccadmin并且登录,登录完成之后点击运维调试-再…...
HarmonyOS—使用数据模型和连接器
Serverless低代码开发平台是一个可视化的平台, 打通了HarmonyOS云侧与端侧能力,能够轻松实现HMS Core、AGC Serverless能力调用。其中,数据模型和连接器是两大主要元素。开发者在使用DevEco Studio的低代码功能进行开发时,可以使用…...
基于MQTT协议实现微服务架构事件总线
一、场景描述 昨天在博客《客户端订阅服务端事件的实现方法》中提出了利用websocket、服务端EventEmitter和客户端mitt实现客户端订阅服务端事件,大大简化了客户端对服务端数据实时响应的逻辑。上述方案适用于单服务节点的情形。 对于由服务集群支撑的微服务架构&…...
免费的Git图形界面工具sourceTree介绍
阅读本文同时请参阅-----代码库管理工具Git介绍 sourceTree是一款免费的Git图形界面工具,它简化了Git的使用过程,使得开发者可以更加方便地下载代码、更新代码、提交代码和处理冲突。下面我将详细介绍如何使用sourceTree进行这些操作。 1.下载和…...
【Appium UI自动化】pytest运行常见错误解决办法
通过Appium工具录制代码在pycharm上运行报错: 错误一: 1.提示 setup() 方法运行 error failed 解决办法:未创建 init __ 方法,创建一个空的__init.py文件就解决了。 原因: 错误二: 2.运行代码ÿ…...
IDEA如何开启Dashboard
普通的面板 Run Dashboard面板 修改配置文件 找到项目的.idea文件夹 点击编辑workspace.xml文件 添加下方代码 <component name"RunDashboard"><option name"ruleStates"><list><RuleState><option name"name" valu…...
【论文复现】——一种新的鲁棒三维点云平面拟合方法
目录 一、算法原理1、论文概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的GPT爬虫。 一、算法原理 1、论文概述 针对三维点云中的异常值和粗差点对平面拟合精度产生的影响,文章提出一…...
【C语言】学生宿舍信息管理系统
目录 项目说明 1. 数据结构设计 2. 功能实现 3. 主菜单设计 4. 文件操作 5. 系统使用 项目展示 1.主菜单功能界面 编辑 2.添加信息 3.查询信息 4.修改信息 5.删除信息 6.退出程序 项目完整代码 结语 在这篇博客中,我们将探讨如何使用C语言来开发…...
用Python插入页码到PDF文档
页码是许多类型文件中的重要内容,它能方便读者在文档中的导航。在创建PDF文档时,添加页码对于组织和引用内容特别有用。在本文中,我们将探讨如何利用Python程序高效地插入页码到PDF文档中,简化工作流程并创建出精美、结构合理的PD…...
LabVIEW光偏振态转换及检测仿真系统
LabVIEW光偏振态转换及检测仿真系统 随着光学技术的发展,光偏振态的研究与应用越来越广泛。为了深入理解光的偏振现象,开发了一套基于LabVIEW的光偏振态转换及检测仿真系统。该系统不仅能够模拟线偏振光、圆偏振光、椭圆偏振光等不同偏振态的产生与转换…...
scp 本地机和远程机传输文件的方法
在本地机器上,通过ssh连接到远程机器,如果想要在两个机器之间互相传输文件,那么可以使用scp。 scp运行的地方:本地机的终端 样例: 1 将本地文件filename1传输到远程主机的/home/username/filename2目录下 scp -r D:\…...
自定义神经网络二之模型训练推理
文章目录 前言模型概念模型是什么?模型参数有哪些神经网络参数案例 为什么要生成模型模型的大小什么是大模型 模型的训练和推理模型训练训练概念训练过程训练过程中的一些概念 模型推理推理概念推理过程 总结 前言 自定义神经网络一之Tensor和神经网络 通过上一篇…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
