鸿蒙语言基础类库:【@ohos.data.storage (轻量级存储)】

轻量级存储

轻量级存储为应用提供key-value键值型的文件数据处理能力,支持应用对数据进行轻量级存储及查询。数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型。

说明:
开发前请熟悉鸿蒙开发指导文档gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。

  • 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
  • 从API Version 9开始,该接口不再维护,推荐使用新接口[@ohos.data.preferences]。

导入模块

import data_storage from '@ohos.data.storage';

常量

系统能力: 以下各项对应的系统能力均为SystemCapability.DistributedDataManager.Preferences.Core

名称参数类型可读可写说明
MAX_KEY_LENGTHstringkey的最大长度限制,需小于80字节。
MAX_VALUE_LENGTHstringvalue的最大长度限制,需小于8192字节。

data_storage.getStorageSync

getStorageSync(path: string): Storage

读取指定文件,将数据加载到Storage实例,用于数据操作。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
pathstring应用程序内部数据存储路径。

返回值:

类型说明
[Storage]获取到要操作的Storage实例,用于进行数据存储操作。

示例:

import data_storage from '@ohos.data.storage'let path = '/data/storage/el2/database'
let storage = data_storage.getStorageSync(path + '/mystore')
storage.putSync('startup', 'auto')
storage.flushSync()

data_storage.getStorage

getStorage(path: string, callback: AsyncCallback): void

读取指定文件,将数据加载到Storage实例,用于数据操作,使用callback方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
pathstring应用程序内部数据存储路径。
callbackAsyncCallback<[Storage]>回调函数。

示例:

import data_storage from '@ohos.data.storage'let path = '/data/storage/el2/database'
data_storage.getStorage(path + '/mystore', function (err, storage) {if (err) {console.info("Get the storage failed, path: " + path + '/mystore')return;}storage.putSync('startup', 'auto')storage.flushSync()
})

data_storage.getStorage

getStorage(path: string): Promise

读取指定文件,将数据加载到Storage实例,用于数据操作,使用Promise方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
pathstring应用程序内部数据存储路径。

返回值:

类型说明
Promise<[Storage]>Promise实例,用于异步获取结果。

示例:

import data_storage from '@ohos.data.storage'let path = '/data/storage/el2/database'let getPromise = data_storage.getStorage(path + '/mystore')
getPromise.then((storage) => {storage.putSync('startup', 'auto')storage.flushSync()
}).catch((err) => {console.info("Get the storage failed, path: " + path + '/mystore')
})

data_storage.deleteStorageSync

deleteStorageSync(path: string): void

从内存中移除指定文件对应的Storage单实例,并删除指定文件及其备份文件、损坏文件。删除指定文件时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
pathstring应用程序内部数据存储路径。

示例:

let path = '/data/storage/el2/database'
data_storage.deleteStorageSync(path + '/mystore')

data_storage.deleteStorage

deleteStorage(path: string, callback: AsyncCallback): void

从内存中移除指定文件对应的Storage单实例,并删除指定文件及其备份文件、损坏文件。删除指定文件时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题,使用callback方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
pathstring应用程序内部数据存储路径。
callbackAsyncCallback回调函数。

示例:

let path = '/data/storage/el2/database'
data_storage.deleteStorage(path + '/mystore', function (err) {if (err) {console.info("Deleted failed with err: " + err)return}console.info("Deleted successfully.")
})

data_storage.deleteStorage

deleteStorage(path: string): Promise

从内存中移除指定文件对应的Storage单实例,并删除指定文件及其备份文件、损坏文件。删除指定文件时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题,使用promise方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
pathstring应用程序内部数据存储路径。

返回值:

类型说明
PromisePromise实例,用于异步获取结果。

示例:

let path = '/data/storage/el2/database'
let promisedelSt = data_storage.deleteStorage(path + '/mystore')
promisedelSt.then(() => {console.info("Deleted successfully.")
}).catch((err) => {console.info("Deleted failed with err: " + err)
})

data_storage.removeStorageFromCacheSync

removeStorageFromCacheSync(path: string): void

从内存中移除指定文件对应的Storage单实例。移除Storage单实例时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
pathstring应用程序内部数据存储路径。

示例:

let path = '/data/storage/el2/database'
data_storage.removeStorageFromCacheSync(path + '/mystore')

data_storage.removeStorageFromCache

removeStorageFromCache(path: string, callback: AsyncCallback): void

从内存中移除指定文件对应的Storage单实例。移除Storage单实例时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题。使用callback方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
pathstring应用程序内部数据存储路径。
callbackAsyncCallback回调函数。

示例:

let path = '/data/storage/el2/database'
data_storage.removeStorageFromCache(path + '/mystore', function (err) {if (err) {console.info("Removed storage from cache failed with err: " + err)return}console.info("Removed storage from cache successfully.")
})

data_storage.removeStorageFromCache

removeStorageFromCache(path: string): Promise

从内存中移除指定文件对应的Storage单实例。移除Storage单实例时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题。使用Promise方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
pathstring应用程序内部数据存储路径。

返回值:

类型说明
PromisePromise实例,用于异步获取结果。

示例:

let path = '/data/storage/el2/database'
let promiserevSt = data_storage.removeStorageFromCache(path + '/mystore')
promiserevSt.then(() => {console.info("Removed storage from cache successfully.")
}).catch((err) => {console.info("Removed storage from cache failed with err: " + err)
})

Storage

提供获取和修改存储数据的接口。

getSync

getSync(key: string, defValue: ValueType): ValueType

获取键对应的值,如果值为null或者非默认值类型,返回默认数据。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
keystring要获取的存储key名称,不能为空。
defValue[ValueType]给定key的存储不存在,则要返回的默认值。支持number、string、boolean。

返回值:

类型说明
ValueType键对应的值,如果值为null或者非默认值类型,返回默认数据。

示例:

let value = storage.getSync('startup', 'default')
console.info("The value of startup is " + value)

get

get(key: string, defValue: ValueType, callback: AsyncCallback): void

获取键对应的值,如果值为null或者非默认值类型,返回默认数据。使用callback方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
keystring要获取的存储key名称,不能为空。
defValue[ValueType]默认返回值。支持number、string、boolean。
callbackAsyncCallback回调函数。

示例:

storage.get('startup', 'default', function(err, value) {if (err) {console.info("Get the value of startup failed with err: " + err)return}console.info("The value of startup is " + value)
})

get

get(key: string, defValue: ValueType): Promise

获取键对应的值,如果值为null或者非默认值类型,返默认数据。使用Promise方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
keystring要获取的存储key名称,不能为空。
defValue[ValueType]默认返回值。支持number、string、boolean。

返回值:

类型说明
PromisePromise实例,用于异步获取结果。

示例:

let promiseget = storage.get('startup', 'default')
promiseget.then((value) => {console.info("The value of startup is " + value)
}).catch((err) => {console.info("Get the value of startup failed with err: " + err)
})

putSync

putSync(key: string, value: ValueType): void

首先获取指定文件对应的Storage实例,然后借助Storage API将数据写入Storage实例,通过flush或者flushSync将Storage实例持久化。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
keystring要修改的存储的key,不能为空。
value[ValueType]存储的新值。支持number、string、boolean。

示例:

storage.putSync('startup', 'auto')

put

put(key: string, value: ValueType, callback: AsyncCallback): void

首先获取指定文件对应的Storage实例,然后借助Storage API将数据写入Storage实例,通过flush或者flushSync将Storage实例持久化。使用callback方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
keystring要修改的存储的key,不能为空。
value[ValueType]存储的新值。支持number、string、boolean。
callbackAsyncCallback回调函数。

示例:

storage.put('startup', 'auto', function (err) {if (err) {console.info("Put the value of startup failed with err: " + err)return}console.info("Put the value of startup successfully.")
})

put

put(key: string, value: ValueType): Promise

首先获取指定文件对应的Storage实例,然后借助Storage API将数据写入Storage实例,通过flush或者flushSync将Storage实例持久化。使用Promise方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
keystring要修改的存储的key,不能为空。
value[ValueType]存储的新值。支持number、string、boolean。

返回值:

类型说明
PromisePromise实例,用于异步处理。

示例:

let promiseput = storage.put('startup', 'auto')
promiseput.then(() => {console.info("Put the value of startup successfully.")
}).catch((err) => {console.info("Put the value of startup failed with err: " + err)
})

hasSync

hasSync(key: string): boolean

检查存储对象是否包含名为给定key的存储。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
keystring要获取的存储key名称,不能为空。

返回值:

类型说明
booleantrue 表示存在,false表示不存在。

示例:

let isExist = storage.hasSync('startup')
if (isExist) {console.info("The key of startup is contained.")
}

has

has(key: string, callback: AsyncCallback): boolean

检查存储对象是否包含名为给定key的存储。使用callback方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
keystring要获取的存储key名称,不能为空。
callbackAsyncCallback回调函数。

返回值:

类型说明
booleantrue表示存在,false表示不存在。

示例:

storage.has('startup', function (err, isExist) {if (err) {console.info("Check the key of startup failed with err: " + err)return}if (isExist) {console.info("The key of startup is contained.")}
})

has

has(key: string): Promise

检查存储对象是否包含名为给定key的存储。使用Promise方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
keystring要获取的存储key名称,不能为空。

返回值:

类型说明
PromisePromise实例,用于异步处理。

示例:

let promisehas = storage.has('startup')
promisehas.then((isExist) => {if (isExist) {console.info("The key of startup is contained.")}
}).catch((err) => {console.info("Check the key of startup failed with err: " + err)
})

deleteSync

deleteSync(key: string): void

从存储对象中删除名为给定key的存储。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
keystring要获取的存储key名称。它不能为空。

示例:

storage.deleteSync('startup')

delete

delete(key: string, callback: AsyncCallback): void

从存储对象中删除名为给定key的存储。使用callback方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
keystring要获取的存储key名称,不能为空。
callbackAsyncCallback回调函数。

示例:

storage.delete('startup', function (err) {if (err) {console.info("Delete startup key failed with err: " + err)return}console.info("Deleted startup key successfully.")
})

delete

delete(key: string): Promise

从存储对象删除名为给定key的存储。使用Promise方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
keystring要获取的存储key名称。

返回值:

类型说明
PromisePromise实例,用于异步处理。

示例:

let promisedel = storage.delete('startup')
promisedel.then(() => {console.info("Deleted startup key successfully.")
}).catch((err) => {console.info("Delete startup key failed with err: " + err)
})

flushSync

flushSync(): void

将当前storage对象中的修改保存到当前的storage,并同步存储到文件中。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

示例:

storage.flushSync()

flush

flush(callback: AsyncCallback): void

将当前storage对象中的修改保存到当前的storage,并异步存储到文件中。使用callback方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
callbackAsyncCallback回调函数。

示例:

storage.flush(function (err) {if (err) {console.info("Flush to file failed with err: " + err)return}console.info("Flushed to file successfully.")
})

flush

flush(): Promise

将当前storage对象中的修改保存到当前的storage,并异步存储到文件中。使用Promise方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

返回值:

类型说明
PromisePromise实例,用于异步处理。

示例:

let promiseflush = storage.flush()
promiseflush.then(() => {console.info("Flushed to file successfully.")
}).catch((err) => {console.info("Flush to file failed with err: " + err)
})

clearSync

clearSync(): void

清除此存储对象中的所有存储。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

示例:

storage.clearSync()

clear

clear(callback: AsyncCallback): void

清除此存储对象中的所有存储。使用callback方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型必填说明
callbackAsyncCallback回调函数。

示例:

storage.clear(function (err) {if (err) {console.info("Clear to file failed with err: " + err)return}console.info("Cleared to file successfully.")
})

clear

clear(): Promise

清除此存储对象中的所有存储。使用Promise方式返回结果,此方法为异步方法。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

返回值:

类型说明
PromisePromise实例,用于异步处理。

示例:

let promiseclear = storage.clear()
promiseclear.then(() => {console.info("Cleared to file successfully.")
}).catch((err) => {console.info("Clear to file failed with err: " + err)
})

on(‘change’)

on(type: ‘change’, callback: Callback): void

订阅数据变更者类需要实现StorageObserver接口,订阅的key的值发生变更后,在执行flush/flushSync方法后,callback方法会被回调。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型说明
typestring事件类型,固定值’change’,表示数据变更。
callbackCallback<[StorageObserver]>回调对象实例。

示例:

var observer = function (key) {console.info("The key of " + key + " changed.")
}
storage.on('change', observer)
storage.putSync('startup', 'auto')
storage.flushSync()  // observer will be called.

off(‘change’)

off(type: ‘change’, callback: Callback): void

当不再进行订阅数据变更时,使用此接口取消订阅。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

参数:

参数名类型说明
typestring事件类型,固定值’change’,表示数据变更。
callbackCallback<[StorageObserver]>需要取消的回调对象实例。

示例:

var observer = function (key) {console.info("The key of " + key + " changed.")
}
storage.off('change', observer)

在这里插入图片描述

StorageObserver

系统能力: 以下各项对应的系统能力均为SystemCapability.DistributedDataManager.Preferences.Core

名称参数类型必填说明 HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿
keystring变更的数据内容。

ValueType

用于表示允许的数据字段类型。

系统能力: SystemCapability.DistributedDataManager.Preferences.Core

名称说明
number表示值类型为数字。
string表示值类型为字符。
boolean表示值类型为布尔值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/45575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一个基于FISCOBCOS的前后端项目(发行转账)(已开源)

本文旨在介绍一个简单的基于fiscobcos的前后端网站应用。Springbootjs前后端不分离。 所使用到的合约也是一个最基本的。首先您需要知道的是完整项目分为三部分&#xff0c;1是区块链平台webase搭建&#xff08;此项目使用节点前置webase-front即可&#xff09;&#xff0c;2是…

游戏AI的创造思路-技术基础-行为树

行为树源自于游戏&#xff0c;但又不单单局限在游戏中&#xff0c;现代的行为树为游戏提供了一套快速简洁的控制NPC/AI的方法。所以本篇来讲讲行为树这个老祖宗~~~~ 目录 1. 行为树的定义 2. 发展历史 2.1. 起源与早期发展 2.2. 关键节点与重要进展 2.3. 当前现状与未来 …

人工智能大模型讲师培训老师叶梓介绍及多模态大模型原理与实践提纲

培训需要解决的问题 通过本次培训&#xff0c;拓展对多模态AI应用领域的视野&#xff0c;帮助团队聚焦AI赋能创新突破&#xff0c;提升对AI服务的技术认知与理解&#xff0c;更好地助力业务智能化业务建设。 培训时长 1天 培训老师介绍 叶梓&#xff0c;工学博士&#xff0…

python零基础爬虫教程,(实战案例手把手教你Python爬虫教程!)

前言 女朋友看了都能学会的爬虫教学 自己断断续续学习练习了两三年python爬虫&#xff0c;从网上看了无数教程&#xff0c;跟大神们学习了各种神奇的操作&#xff0c;现在虽然没成为大神&#xff0c;但是想通过这篇教程来分享自己学习的爬虫实战案例。 通过本教程&#xff0c;你…

Linux程序替换

前言 上一期对进程的创建、终止、以及等待做了详细的介绍&#xff0c;对于进程控制的内容基本介绍的差不多了&#xff0c;本期来介绍进程控制的最后一个内容即进程的程序替换&#xff01; 本期内容介绍 • 什么是进程的程序替换 • 单进程的程序替换 • 程序替换的基本原理 •…

在 IVS 2024 加密盛会上开拓创新:CESS 引领去中心化云存储和 CD²N 之发展

作为基于区块链的去中心化云存储网络和 CDN 基础设施网络&#xff0c;CESS 在日本年度加密创业大会 IVS 2024 上成为焦点&#xff01;此次活动在历史悠久的京都举办&#xff0c;围绕“跨越边界”这一主题&#xff0c;吸引了超过15,000 名参会者&#xff0c;其中包括 3,000 创始…

SpringCloudAlibaba基础五 Nacos配置中心

一 Nacos配置中心介绍 官方文档&#xff1a;https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config Nacos 提供用于存储配置和其他元数据的 key/value 存储&#xff0c;为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos C…

2024 福州市延安中学“拿云杯”复赛试题

回忆版&#xff08;持续更新&#xff09; 目录 答案 答案

风光摄影:相机设置和镜头选择

写在前面 博文内容为《斯科特凯尔比的风光摄影手册》读书笔记整理涉及在风景拍摄中一些相机设置&#xff0c;镜头选择的建议对小白来讲很实用&#xff0c;避免拍摄一些过曝或者过暗的风景照片理解不足小伙伴帮忙指正 &#x1f603;,生活加油 99%的焦虑都来自于虚度时间和没有好…

【matlab】周期性信号分析

目录 信号预处理 周期性特征提取方法 频谱分析 傅里叶变换 快速傅里叶变换&#xff08;FFT&#xff09; 周期图法 Welch法 自相关分析 时频分析 基于模型的方法 时间序列分解 应用实例 提取信号的周期性特征是一个在信号处理领域广泛应用的技术&#xff0c;特别是在…

每日一练:奇怪的TTL字段(python实现图片操作实战)

打开图片&#xff0c;只有四种数字&#xff1a;127&#xff0c;191&#xff0c;63&#xff0c;255 最大数字为255&#xff0c;想到进制转换 将其均转换为二进制&#xff1a; 发现只有前2位不一样 想着把每个数的前俩位提取出来&#xff0c;组成新的二进制&#xff0c;然后每…

做3D渲染,选择什么显卡好?

对于设计行业的小伙伴来说&#xff0c;电脑配置的优劣是个尤为关键的要素&#xff0c;特别是显卡&#xff0c;对于很多人而言&#xff0c;如何选择一张最适合的 3D 渲染显卡确实一大难关&#xff01; 在目前市场上&#xff0c;主流的显卡分别是 AMD 显卡和 NVIDIA 显卡&#x…

Java基础面试题大全

Java基础 语法基础 aab 和 ab 操作隐式的将操作的结果类型强制转换成持有结果的类型&#xff0c;而不会 比如对byte&#xff0c;short&#xff0c;int类型的操作&#xff0c;会先将他们提升到int类型&#xff0c;然后在执行操作。所以比如我定义了两个byte类型的a和b&#x…

KEIL 5项目中源文件图标带有雪花(四叶草)消除办法

今天在使用KEIL 5写STM32程序的时候&#xff0c;出现了一个错误&#xff1a; Error: L6218E: Undefined symbol test_for_diaodu (referred from main.o). 具体表现为&#xff0c;不管我把自己写的一个my.c里的什么函数或者变量名&#xff0c;即使在main.c中声明、引用了&#…

PCL从理解到应用【04】Octree 原理分析 | 案例分析 | 代码实现

前言 Octree 作为一种高效的空间分割数据结构&#xff0c;具有重要的应用价值。 本文将深入分析 Octree 的原理&#xff0c;通过多个实际案例帮助读者全面理解其功能和应用&#xff0c;包括最近邻搜索、半径搜索、盒子搜索以及点云压缩&#xff08;体素化&#xff09;。 特性…

搞懂负载均衡,零基础也可以!

本文作者&#xff1a;程序员鱼皮 免费编程学习 - 编程导航网&#xff1a;https://www.code-nav.cn 大家好&#xff0c;我是鱼皮。 周末在家写代码&#xff0c;无意中跟朋友提了下 LB&#xff0c;还说 LB 好的呱呱叫。 朋友笑了笑&#xff0c;问我 LB 是谁&#xff1f; 我解释…

加密软件|让数据传输更安全

加密软件在当今数字化时代扮演着至关重要的角色&#xff0c;它们通过先进的加密算法和技术&#xff0c;确保数据在存储、传输和分享过程中的安全性&#xff0c;从而保护个人隐私和企业机密。一、加密软件的基本作用数据加密&#xff1a;加密软件通过应用复杂的加密算法&#xf…

Python转换PDF为PowerPoint演示文件

PDF文件以其跨平台兼容性和版面固定性成为了分享和存储文档资料的首选格式。然而&#xff0c;在需要进行生动、互动性强的演示时&#xff0c;PDF的静态特性便难以满足个性化演示需求。将PDF文件转换为PowerPoint演示文稿可以解决这一问题。PowerPoint不仅提供了丰富的动画和过渡…

网关设备BL122实现Modbus RTU/TCP转Profinet协议

Modbus与Profinet是两种广泛应用于工业自动化领域的通信协议&#xff1a;Modbus因其简单性和兼容性&#xff0c;在许多工业设备中得到广泛应用&#xff1b;而Profinet提供了高速、高精度的通信能力&#xff0c;适合于复杂控制系统和实时应用&#xff0c;但两者之间的差异导致了…

uniapp easycom组件冲突

提示信息 ​easycom组件冲突&#xff1a;[/components/uni-icons/uni-icons.vue,/uni_modules/uni-icons/components/uni-icons/uni-icons.vue]​ 问题描述 老项目&#xff0c;在uniapp插件商城导入了一个新的uniapp官方开发的组件》uni-data-picker 数据驱动的picker选择器 …