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

RK3568 android11 基于PN7160的NXP NFC移植

一,概述

1. 模块概述

PN7160专为在各种系统实现快速集成而设计,支持所有符合NFC Forum的模式,包括Android和Linux驱动程序,并支持实时操作系统和无操作系统的应用(PN7160不符合EMVCo)。嵌入式NFC固件减少了对主机交互的需求,并最大限度缩小了代码尺寸,使设计更轻松。PN7160具有I²C或SPI接口,与广受欢迎的MCU兼容,包括LPC、Kinetis和i.MX。

2.产品特性

  • 支持所有符合NFC Forum的模式

    读写器模式:ISO/IEC A&B、FeliCa、MIFARE 1K、4K,NFC Forum类型1、2、3、4、5,ISO/IEC 15693
    对等模式:被动和主动、发起方和目标方
    卡模拟模式:NFC Forum类型3和4(A&B)

  • 灵活的主机接口

    电源电压:1.8V或3.3V
    I²C接口或SPI接口
    符合NCI 2.0的协议
    改进同步的IRQ信号

  • 高性能NFC控制器

    射频驱动程序:2.7V至5.25V,最大值为250mA
    接收器灵敏度为20mVp-p
    完全可配置的轮询循环,带低功耗模式
    有源负载调制与动态功率控制

  • 标准封装

    HVQFN40
    VFBGA64

3.安卓NFC堆栈概述

在这里插入图片描述


二,内核移植

NFC安卓堆栈使用nxpnfc内核驱动程序与NXP NCI NFC控制器进行通信。nxpnfc内核驱动程序提供了与通过I2C或SPI物理接口连接的NFC控制器的通信。当加载到内核时,通过名为/dev/nxpnfc的设备节点将该接口公开给NFC控制器。

1.移植驱动

a. nxpnfc存储库克隆到内核目录中
$ rm -rf drivers/nfc
$ git clone https://github.com/NXPNFCLinux/nxpnfc.git drivers/nfc
b. 修改driver目录下Kconfig以及nfc目录下Makefile和Kconfig
kernel/drivers/Kconfig中添加:
source "drivers/nfc/Kconfig"====================================================================
kernel/drivers/nfc/Kconfig中添加:config NXP_NFC_I2Ctristate "NFC I2C Slave driver for NXP-NFCC"depends on I2ChelpThis enables the NFC driver for PN71xx based devices.This is for I2C connected version. NCI protocol logicresides in the usermode and it has no other NFC dependencies.If unsure, say N.config NXP_NFC_SPIIf unsure, say N.config NXP_NFC_SPItristate "NFC SPI Slave driver for NXP-NFCC"depends on SPIhelpThis enables the NFC driver for PN71xx based devices.This is for SPI connected version. NCI protocol logicresides in the usermode and it has no other NFC dependencies.If unsure, say N.config NXP_NFC_RECOVERYbool "NXP based NFC minimal FW update support"depends on NXP_NFC_I2C && I2Cdefault yhelpThis enables NFC minimal FW update.If unsure, say N.
c.内核中加载驱动
kernel/arch/arm64/configs/rockchip_defconfig中添加:CONFIG_NFC=y
CONFIG_NXP_NFC_I2C=y

2.设备树配置

nxp使用tp的接口,挂在i2c1节点下:
在这里插入图片描述
注:不同主板节点以及GPIO引脚是不同的,根据原理图确定。

&i2c3 {status = "okay";pn547: pn547@28 {compatible = "nxp,nxpnfc";reg = <0x2B>;  //I2C地址(需要找供应商确认,错误的话是无法通讯的)nxp,nxpnfc-irq = <&gpio0 RK_PB5 IRQ_TYPE_LEVEL_LOW>;  //中断脚nxp,nxpnfc-ven = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>;  //复位脚status = "okay";};
};

3.驱动调试

配置完驱动,可以先用测试程序NfcFactoryTestApp试一下nfc通讯是否正常。
在这里插入图片描述


三,Android层移植

1.将存储库克隆到Android源目录

$ git clone https://github.com/NXPNFCLinux/nxpnfc_android11.git ${ANDROID_BUILD_TOP}/vendor/nxp/nfc

在这里插入图片描述

2.运行补丁脚本

chmod +x vendor/nxp/nfc/install_NFC.sh
./vendor/nxp/nfc/install_NFC.sh

3.adding NFC to the build

diff --git a/device/rockchip/rk356x/BoardConfig.mk b/device/rockchip/rk356x/BoardConfig.mk
index e2773c1369..0e0598f209 100644
--- a/device/rockchip/rk356x/BoardConfig.mk
+++ b/device/rockchip/rk356x/BoardConfig.mk
@@ -64,7 +64,7 @@ ENABLE_CPUSETS := true
# Enable Dex compile opt as default
WITH_DEXPREOPT := true
-BOARD_NFC_SUPPORT := false
+BOARD_NFC_SUPPORT := true
BOARD_HAS_GPS := false
BOARD_GRAVITY_SENSOR_SUPPORT := true
@@ -116,3 +116,6 @@ PRODUCT_HAVE_OPTEE := true
BOARD_ROCKCHIP_TRUST_MERGE_TO_UBOOT := true
BOARD_BASEPARAMETER_SUPPORT := true
+
+#NXP NFC Sensor
+-include vendor/nxp/nfc/BoardConfigNfc.mk
diff --git a/device/rockchip/rk356x/device.mk b/device/rockchip/rk356x/device.mk
index 1ddf1b4b1e..7cad9522b0 100644
--- a/device/rockchip/rk356x/device.mk
+++ b/device/rockchip/rk356x/device.mk
@@ -80,6 +80,9 @@ PRODUCT_PROPERTY_OVERRIDES += \
PRODUCT_COPY_FILES += \$(LOCAL_PATH)/public.libraries.txt:vendor/etc/public.libraries.txt
+#DEVICE_MANIFEST_FILE += vendor/nxp/nfc/manifest.xml
+$(call inherit-product, vendor/nxp/nfc/device-nfc.mk)

4.编译系统

a.编译报错android.hardware.nfc有冲突

修改vendor/nxp/nfc/BoardConfigNfc.mk,注释掉DEVICE_MANIFEST_FILE += vendor/nxp/nfc/manifest.xml这行。
在这里插入图片描述

b.编译报错

checkvintf I 03-13 09:55:50 18859 18859 check_vintf.cpp:84] List ‘out/target/product/rk3568_r/product/etc/vintf/’: No such file or directory
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] files are incompatible: Device manifest and framework compatibility matrix are incompatible: HALs incompatible. Matrix level = 5. Manifest level = 5. The following requirements are not met:
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] android.hardware.nfc:
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] required: @1.2::INfc/default
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] provided:
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] vendor.nxp.nxpnfc:
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] required: @1.0::INxpNfc/default
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] provided:
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] : Success
INCOMPATIBLE

可做如下修改:

diff --git a/device/rockchip/common/manifests/android.hardware.graphics.mapper@4.0.xml b/device/rockchip/common/manifests/android.hardware.graphics.mapper@4.0.xml
index 95ae60faae..9715f19c0a 100755
--- a/device/rockchip/common/manifests/android.hardware.graphics.mapper@4.0.xml
+++ b/device/rockchip/common/manifests/android.hardware.graphics.mapper@4.0.xml
@@ -8,4 +8,28 @@<instance>default</instance></interface></hal>
+    <hal format="hidl">
+        <name>android.hardwar

相关文章:

RK3568 android11 基于PN7160的NXP NFC移植

一,概述 1. 模块概述 PN7160专为在各种系统实现快速集成而设计,支持所有符合NFC Forum的模式,包括Android和Linux驱动程序,并支持实时操作系统和无操作系统的应用(PN7160不符合EMVCo)。嵌入式NFC固件减少了对主机交互的需求,并最大限度缩小了代码尺寸,使设计更轻松。…...

【网工第6版】第1章 计算机网络概论

目录 1计算机网络形成和发展 ■计算机网络 ■我国互联网发展 ■计算机网路分类 ■计算机网络应用 2 OSI和TCP/IP参考模型 ■网络分层的意义 ■OSI参考模型 ■TCP/IP参考模型 ■TCP/IP参考模型协议 3 数据封装与解封过程 ■封装 ■解封 1计算机网络形成和发展 ■计…...

【嵌入式】keil5安装(同时兼容C51和STM32)

最近在开发STM32的时候&#xff0c;安装Keil5&#xff0c;遇到STM32和C51的共存的问题&#xff0c;在网上找了很多方法&#xff0c;又遇到一些bug&#xff0c;最终还是弄好了。因此将处理的过程记录下来&#xff0c;希望对遇到相同问题的朋友一些启发。 1、下载安装包 Keil P…...

每日一题--进程与协程的区别

进程是什么&#xff1f; 进程&#xff08;Process&#xff09; 是操作系统进行 资源分配和调度的基本单位&#xff0c;代表一个正在执行的程序实例。每个进程拥有独立的虚拟地址空间、代码、数据和系统资源&#xff08;如文件句柄、网络端口等&#xff09;。进程之间通过 IPC&…...

网络安全运维应急响应与溯源分析实战案例

在日常运维过程中&#xff0c;网络安全事件时有发生&#xff0c;快速响应和精准溯源是保障业务稳定运行的关键。本文将通过一个实际案例&#xff0c;详细解析从发现问题到溯源定位&#xff0c;再到最终解决的完整流程。 目录 一、事件背景 二、事件发现 1. 监控告警触发 2…...

leetcode29. 两数相除-medium

1 题目&#xff1a;两数相除 官方标定难度&#xff1a;中 给你两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断&#xff0c;也就是截去&#xff08;truncate&#xff09;其小数部分。…...

深海300米的低温环境中的BMS优化方法

在深海300米的低温环境中&#xff0c;采用扩展卡尔曼滤波&#xff08;EKF&#xff09;结合温度补偿模型实现电池管理系统&#xff08;BMS&#xff09;的荷电状态&#xff08;SOC&#xff09;精确估计&#xff0c;需通过以下步骤实现&#xff1a; 1. 低温电池模型建立 1.1 电池…...

高主频GPU+RTX4090:AI生图性能优化超150%

概述&#xff1a;消费级高主频CPU搭配 RTX 4090显卡可以显著提高AI生图的性能&#xff0c;相比于企业级CPU具有更大的吞吐量和更优的成本效益。 引言&#xff1a;在AI图像生成过程中&#xff0c;CPU与GPU的协同效应对系统的整体性能至关重要。测试表明&#xff0c;与RTX 4090显…...

OpenCV 图像双线性插值

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 双线性插值是一种 二维插值方法,用于计算 栅格(Grid) 或 像素点 之间的插值值。它主要用于 图像缩放、旋转、变换 等操作,以在新像素位置估算灰度值或颜色值。 如上图所示,假设存在一个二维离散函数(如图像)…...

OpenCV计算摄影学(23)艺术化风格化处理函数stylization()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 风格化的目的是生成不以照片写实为目标的多种多样数字图像效果。边缘感知滤波器是风格化处理的理想选择&#xff0c;因为它们能够弱化低对比度区…...

《我的Python觉醒之路》之转型Python(十五)——控制流

[今天是2025年3月17日&#xff0c;继续复习第一章节、第二章节的内容 ] 《我的Python觉醒之路》之转型Python&#xff08;十四&#xff09;——控制流...

内存管理

一.什么是内存管理呢&#xff1f; 我们可以来看一下这个图&#xff0c;我们来了解一下这些地方都存的是什么。 数据段就是存放全局和静态变量的&#xff0c;代码段是存放常量的。 栈 局部变量&#xff1a;在函数内部定义的变量&#xff0c;其存储空间在栈上分配。当函数被调用时…...

学习threejs,使用MeshLambertMaterial漫反射材质

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshLambertMaterial…...

P41-指针进阶1、2

1.字符指针 2.数组指针 3.指针数组 4.数组传参和指针传参 5.函数指针 6.函数指针数组 7.指向函数指针数组的指针 8.回调函数 9.指针和数组面试题的解析 指针的主题&#xff0c;我们在初级阶段的《指针》章节已经接触过了&#xff0c;我们知道了指针的概念 1.指针就是个…...

旅游类小程序界面设计

产品概述 艾啦游是一款互联网旅游类小程序&#xff0c;致力于国内精品旅游&#xff0c;以及拥有自由行、专属热榜单、出行攻略等诸多功能&#xff0c;汇聚了许多国内的人气景点&#xff0c;与诸多城市的酒店也保持合作&#xff0c;打造一体式旅行服务&#xff0c;更有不断上新…...

探索具身多模态大模型:开发、数据集和未来方向(下)

25年2月来自广东人工智能和数字经济实验室、深圳大学、巴黎理工学院和巴黎高等师范学院、中山大学的论文“Exploring Embodied Multimodal Large Models: Development, Datasets, and Future Directions”。 近年来&#xff0c;具身多模态大模型 (EMLM) 因其在复杂的现实环境中…...

14 结构体

结构体 结构体是什么&#xff1f; 在前面我们学习过基础的数据类型int float char 等&#xff0c;都只能用来表示基础的数据类型&#xff0c;那么要怎么来表示复杂的数据类型呢&#xff1f; 比如学生信息&#xff1a; 学号姓名性别年龄总分数100maye男18666101椰汁女19555 …...

如何配置 Docker 以实现无需 sudo 使用

1. 背景知识&#xff1a;为什么需要 sudo&#xff1f; Docker 是一个容器化平台&#xff0c;其核心组件包括&#xff1a; Docker 守护进程&#xff08;dockerd&#xff09;&#xff1a;负责管理容器的创建、运行和销毁。Docker CLI&#xff1a;用户通过命令行工具&#xff08…...

嵌入式开发之STM32学习笔记day06

基于STM32F103C8T6的开发实践——从入门到精通01 1. 引言 STM32系列微控制器是STMicroelectronics推出的一款高性能、低功耗的32位微控制器&#xff0c;广泛应用于嵌入式系统中。STM32F103C8T6是其中非常受欢迎的一款&#xff0c;凭借其强大的性能、丰富的外设接口和低廉的价格…...

openocd C#桌面工具

文章目录 简介一、主界面二、文件列表三、rtl介绍四、虚拟示波器1、画线2、画点3、合并显示4、测试代码简介 基于廉价9.9包邮的DAP-Link,在IAR和Keil中下载和调试都没毛病。 可是不能单独使用。单独烧录固件用不了,也不能同jlink一样打印日志和显示波形。 openocd开源工具能…...

goland小问题报错及解决

报错信息&#xff1a; cannot use rw (variable of type *populateResponse) as ResponseWriter value in argument to t.fh.ServeHTTP: *populateResponse does not implement ResponseWriter (missing method Fprintf) cannot use rw (variable of type *http2responseWrite…...

AtCoder Beginner Contest 397 A - D题解

Tasks - OMRON Corporation Programming Contest 2025 (AtCoder Beginner Contest 397) 本文为 AtCoder Beginner Contest 397 A - D题解 题目A: 代码(C): #include <bits/stdc.h>int main() {double n;std::cin >> n;if (n > 38.0) {std::cout << 1;}…...

18年老牌软件,完美解锁pro!

很多小伙伴在学习、工作中都喜欢使用思维导图来整理和记录自己的思路&#xff0c;通过图形化的方式展示复杂概念和关系&#xff0c;使信息更加清晰易懂&#xff0c;有助于理解和记忆&#xff1b;其次&#xff0c;分层次和分类别的信息结构也能够快速理清思路&#xff0c;突出重…...

Power Apps 技术分享:画布应用使用表单控件

前言 表单控件&#xff0c;是画布应用里一个非常好用的控件&#xff0c;我们今天简单介绍下&#xff0c;如何使用这个控件。 正文 1.首先&#xff0c;我们需要有一个数据源&#xff0c;我们这里用上一篇博客新建的数据源&#xff0c;如下图&#xff1a; 2.新建一个页面&#xf…...

视频转音频, 音频转文字

Ubuntu 24 环境准备 # 系统级依赖 sudo apt update && sudo apt install -y ffmpeg python3-venv git build-essential python3-dev# Python虚拟环境 python3 -m venv ~/ai_summary source ~/ai_summary/bin/activate核心工具链 工具用途安装命令Whisper语音识别pip …...

ZLMediaKit源码分析——[1] 开篇:onceToken源码分析

系列文章目录 第一篇 基于SRS 的 WebRTC 环境搭建 第二篇 基于SRS 实现RTSP接入与WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 环境搭建 第四篇 WebRTC学习一:获取音频和视频设备 第五篇 WebRTC学习二:WebRTC音视频数据采集 第六篇 WebRTC学习三:WebRTC音视频约束 …...

EasyRTC嵌入式音视频通话SDK:微信生态支持、轻量化架构与跨平台兼容性(Linix/Windows/ARM/Android/iOS/LiteOS)

随着WebRTC技术的不断发展&#xff0c;实时音视频通信在各个领域的应用越来越广泛。EasyRTC嵌入式音视频通话SDK作为一款基于WebRTC技术的实时通信解决方案&#xff0c;凭借其强大的功能和灵活的集成能力&#xff0c;受到了越来越多开发者的关注。 一、系统架构设计 纯C语言开…...

Python中使用vlc库实现视频播放功能

文章目录 前言1. 环境准备1.1Python安装1.2选择Python开发环境1.3安装必要库 2. 基础播放示例3. 常用播放控制功能4. 事件监听5. 播放网络流媒体6. 结合 GUI 库制作视频播放器&#xff08;以 Tkinter 为例&#xff09; 前言 本教程主要包含打开文件、播放和停止按钮&#xff0…...

Elasticsearch面试题

以下是150道Elasticsearch面试题及其详细回答&#xff0c;涵盖了Elasticsearch的基础知识、配置与优化、查询操作、集群管理、性能调优等多个方面&#xff0c;每道题目都尽量详细且简单易懂&#xff1a; Elasticsearch基础概念类 1. 什么是Elasticsearch&#xff1f; Elastics…...

Linux上位机开发实战(qt编译之谜)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多同学都喜欢用IDE&#xff0c;也能理解。因为不管是visual studio qt插件&#xff0c;还是qt creator其实都帮我们做了很多额外的工作。这里面最…...

SpringBoot3+Druid+MybatisPlus多数据源支持,通过@DS注解配置Service/Mapper/Entity使用什么数据源

在 Spring Boot 3 中结合 Druid 和 MyBatis-Plus 实现多数据源支持&#xff0c;并通过 DS 注解动态切换数据源&#xff0c;可以按照以下步骤进行配置&#xff1a; 官方文档&#xff1a;多数据源支持 | MyBatis-Plus 1. 引入依赖 在 pom.xml 中添加以下依赖&#xff1a; <…...

Java学习------内部类

1. 定义 定义在一个类中的类 2. 使用时机 当一个类需要用到另一个类&#xff0c;并且两个类的联系比较密切时就需要使用内部类内部类可以访问外部类的私有成员&#xff0c;这样可以将相关的类和接口隐藏在外部类的内部&#xff0c;提高封装性匿名内部类是没有名字的类&#…...

【QA】建造者模式在Qt有哪些应用

#设计模式 #Qt 一、QDomDocument&#xff08;XML 文档构建&#xff09; 模式角色&#xff1a; Builder&#xff1a;QDomDocument 本身Product&#xff1a;XML 文档对象Director&#xff1a;用户代码通过 QDomDocument 逐步构建文档结构 示例代码&#xff1a; QDomDocument…...

uniapp 多环境配置打包,比较优雅的解决方案,全网相对优解

uniapp 多环境配置打包&#xff0c;比较优雅的解决方案&#xff0c;全网相对优解 读取.env.[development|test|staging|production]配置文件进行打包&#xff0c;最终效果如下图可以看到多个环境&#xff0c; 并且我们可以自定义更多的环境配置 前言 由于uniapp的hbuilder开发…...

【量化科普】Liquidity,流动性

【量化科普】Liquidity&#xff0c;流动性 &#x1f680;量化软件开通 &#x1f680;量化实战教程 在金融市场中&#xff0c;流动性&#xff08;Liquidity&#xff09;是一个至关重要的概念。它指的是资产能够以多快的速度被买入或卖出而不显著影响其价格的能力。高流动性的…...

qt介绍图表 charts 一

qt chartsj基于Q的Graphics View框架&#xff0c;其核心组件是QChartView和QChart.QChartView是一个显示图表的独立部件&#xff0c;基类为QGraphicsView.QChar类管理图表的序列&#xff0c;图例和轴示意图。 绘制一个cos和sin曲线图&#xff0c;效果如下 实现代码 #include…...

如何图像去噪?(一)

喜欢可以在我的主页订阅专栏哟&#xff0c;至少更新6年~~&#xff0c;更到我上大学也可能会继续更~~ 第一章 图像去噪的基础知识与核心概念 1.1 图像噪声的数学模型与物理成因 定义扩展&#xff1a; 图像噪声是信号采集、传输或存储过程中引入的随机干扰&#xff0c;其本质为…...

【数据库】Data Model(数据模型)数据模型分析

理解图片中的 Data Model&#xff08;数据模型&#xff09;是学习数据库设计和应用程序开发的重要一步。作为初学者&#xff0c;你可以通过比喻和简单的解释来理解这些概念以及它们之间的联系。以下是对图片中数据模型的详细分析&#xff0c;以及如何理解它们之间的关系。 1. 数…...

win10 c++ VsCode 配置PCL open3d并显示

win10 c VsCode配置PCL open3d并显示 一、效果图二、配置步骤2.1 安装vscode2.2 pcl-open3d配置2.3 vscode中设置 三、测试代码四、注意事项及后续 一、效果图 二、配置步骤 2.1 安装vscode vscode下载链接 下载中文插件、c相关插件 2.2 pcl-open3d配置 1&#xff09;下载…...

Flask多参数模版使用

需要建立目录templates&#xff1b; 把建好的html文件放到templates目录里面&#xff1b; 约定好参数名字&#xff0c;单个名字可以直接使用&#xff1b;多参数使用字典传递&#xff1b; 样例&#xff1a; from flask import render_template # 模板 (Templates) #Flask 使用…...

python中a is None 和 a==None有区别吗

在 Python 中&#xff0c;a is None 和 a None 的区别如下&#xff1a; 1. a is None 这是身份&#xff08;identity&#xff09;比较&#xff0c;用于检查 a 是否就是 None 这个对象。None 是 Python 的单例对象&#xff0c;意味着在 Python 运行过程中&#xff0c;所有 No…...

Excel(函数篇):COUNTIF与CONUTIFS函数、SUMIF与SUMIFS函数、ROUND函数、MATCH与INDEX函数、混合引用与条件格式

目录 COUNTIF和COUNTIFS函数COUNTIF函数COUNTIFS函数SUMIF和SUMIFS函数SUMIF函数SUMIFS函数SUMIFS函数与控件实现动态年月汇总ROUND、ROUNDUP、ROUNDDOWN函数单元格混合引用条件格式与公式,标记整行数据MATCH和INDEX函数COUNTIF和COUNTIFS函数 COUNTIF函数 统计下“苏州”出现…...

C语言及内核开发中的回调机制与设计模式分析

在C语言以及操作系统内核开发中,回调机制是一种至关重要的编程模式。它通过注册框架和定义回调函数,实现了模块间的解耦和灵活交互,为系统的扩展性和可维护性提供了有力支持。本文将深入探讨这种机制的工作原理、应用场景以及与设计模式的关联。 一、回调机制的核心概念 (…...

SAP WORKFLOW BUSINESS PROCESS AUTOMATION

SAP WORKFLOW BUSINESS PROCESS AUTOMATION...

它,让机器人与HMI屏无缝对接

随着工业自动化向智能化发展&#xff0c;机器人与HMI屏的通信变得至关重要。本文将为您介绍一款创新的解决方案&#xff0c;它打破了通信协议的壁垒&#xff0c;实现机器人与HMI屏的无缝连接。 随着工业自动化向智能化的迈进&#xff0c;生产制造业正加速引入大量工业机器人以替…...

Vala语言基础知识-源文件和编译

源文件和编译 Vala代码‌以.vala为扩展名。与Java等语言不同&#xff0c;Vala‌不强制要求严格的文件结构‌——它没有类似Java的"包"&#xff08;package&#xff09;或"类文件"&#xff08;class file&#xff09;的概念&#xff0c;而是通过文件内的文本…...

《mc百科》小引

现在的年轻人&#xff0c;不是玩农药&#xff0c;就是在打和平&#xff0c;几乎每到街上&#xff0c;想就看见农药上号的&#xff0c;但这些游戏&#xff0c;虽然宜人&#xff0c;但随时都能让人异化。 但有一种游戏&#xff0c;可以说几乎涵盖了所有文化。早其自由度高达999%…...

java泛型通配符?及上下界(extends,super)保证安全性、灵活性、可读性

在 Java 中&#xff0c;泛型通配符&#xff08;?&#xff09;用于表示未知类型&#xff0c;通常用于增强泛型的灵活性。通配符可以与上下限结合使用&#xff0c;以限制泛型的范围。以下是通配符及上下限的使用示例&#xff1a; 1. 无界通配符 (?) 无界通配符表示可以接受任意…...

PyQt6内嵌http.server Web 和Flask Web服务器方法详解

PyQt6 可以内嵌一个简单的 Web 服务器。虽然 PyQt6 本身不提供直接的 Web 服务器功能&#xff0c;但可以结合 Python 的标准库&#xff08;如 http.server&#xff09;或其他 Web 框架&#xff08;如 Flask、FastAPI 等&#xff09;来实现。 示例&#xff1a;使用 http.server…...

【ProjectDiscovery 生态中核心工具 Subfinder、Httpx、Katana 和 Nuclei 的基础使用教程】

ProjectDiscovery 生态中核心工具 Subfinder、Httpx、Katana 和 Nuclei 的基础使用教程 一、Subfinder&#xff1a;子域名发现工具安装基础使用 二、Httpx&#xff1a;HTTP 探测与指纹识别安装基础使用 三、Katana&#xff1a;网络爬虫工具安装基础使用 四、Nuclei&#xff1a;…...