ArduinoMenu

ArduinoMenu

Arduino通用菜单和交互系统库

ArduinoMenu是一个开源的Arduino菜单库,提供自动和手动导航功能。支持创建菜单、子菜单和输入字段,处理输入输出并执行用户定义的操作。采用非阻塞设计,可与其他任务并行运行。支持多种I/O设备,内存占用小,菜单定义简单。适用于各种Arduino平台,方便开发交互式项目。

ArduinoMenuArduino嵌入式系统菜单系统交互设计Github开源项目

ArduinoMenu 4

Arduino框架的通用菜单/交互系统

许可证: LGPL-2.1+ 构建状态 捐赠 加入Gitter

目的

全自动或用户代码驱动的导航系统。 使用此系统,你可以定义菜单、子菜单、输入字段和其他迭代对象,它们处理所有输入/输出,并可以根据用户迭代调用用户定义的处理程序。 用户函数可以作为单一动作在点击/输入时调用,也可以作为事件驱动函数响应焦点进入/离开或输入/退出事件。 该系统设计为非阻塞轮询系统,允许并发任务运行。 可选地,系统可以在半自动模式下操作,从用户代码发出导航命令。

查看wiki

简单示例

#include <menu.h> #include <menuIO/serialOut.h> #include <menuIO/chainStream.h> #include <menuIO/serialIn.h> using namespace Menu; #define LEDPIN LED_BUILTIN #define MAX_DEPTH 1 unsigned int timeOn=10; unsigned int timeOff=90; MENU(mainMenu, "闪烁菜单", Menu::doNothing, Menu::noEvent, Menu::wrapStyle ,FIELD(timeOn,"开启","毫秒",0,1000,10,1, Menu::doNothing, Menu::noEvent, Menu::noStyle) ,FIELD(timeOff,"关闭","毫秒",0,10000,10,1,Menu::doNothing, Menu::noEvent, Menu::noStyle) ,EXIT("<返回") ); serialIn serial(Serial); MENU_INPUTS(in,&serial); MENU_OUTPUTS(out,MAX_DEPTH ,SERIAL_OUT(Serial) ,NONE//必须至少有2个项目 ); NAVROOT(nav,mainMenu,MAX_DEPTH,in,out); void setup() { pinMode(LEDPIN, OUTPUT); Serial.begin(115200); while(!Serial); Serial.println("菜单 4.x"); Serial.println("使用键 + - * /"); Serial.println("来控制菜单导航"); } bool blink(int timeOn,int timeOff) {return millis()%(unsigned long)(timeOn+timeOff)<(unsigned long)timeOn;} void loop() { nav.poll(); digitalWrite(LEDPIN, blink(timeOn,timeOff)); }

特性

  • 在可用PROGMEM的系统上使用PROGMEM,对RAM占用小。
  • 支持多种输入/输出设备。
  • 易于定义菜单(宏)。
  • 最小化用户代码基础。
  • 字段编辑值与现有程序变量挂钩(引用)。
  • 编辑文本字段时具有每个字符的验证。
  • 字段可以编辑任何类型的数值变量(模板)。
  • 反射字段,显示在菜单系统外部进行的变量更改。
  • 数值字段编辑和范围验证。
  • 数值和非数值类型的枚举字段。
  • 可自定义(颜色和光标)。
  • 能够在基本级别上通过串行流IO工作。
  • 支持并行多个输入和输出。
  • RAM静态分配,避免堆碎片化,定义菜单结构所需的所有RAM在程序启动时分配。
  • 菜单和提示可用事件。
  • 当没有可用输入且不需要绘制时简单返回。
  • 延迟绘制,仅在更改时绘制,避免时间消耗和闪烁。
  • 同步/异步导航API函数。
  • 无状态客户端(如网页)的异步导航。
  • 网页界面(实验性)。
  • 可以限制在显示区域内(数值字段仍可能溢出区域,用户应考虑到这一点)。
  • 在Arduino AVR和ARM、Teensy、ESP8266、Esp32、nRF52、STM32上测试通过。

视频

图片替代文本 图片替代文本 图片替代文本 图片替代文本

插件

插件是特定的菜单组合或项目自定义行为和/或绘制。

某些插件可能是特定平台或需要某些硬件。

  • barField - 在LCD上显示数值字段的条形图
  • cancelField - 允许在退出时恢复之前的数值。
  • SDMenu - 完全自动化的SD卡文件选择器,使用标准Arduino SD库。
  • SdFatMenu - 完全自动化的SD卡文件选择器,使用标准SdFat (https://github.com/greiman/SdFat)。

应用

一些使用ArduinoMenu的应用/教程(当前和旧版本)。
你有其他应用吗?请在gitter上告诉我或发邮件给我。

温度传感器和定时器的Arduino脚本。 它允许根据计划开启加热器和灯光
https://github.com/vikulin/LCD_LAT

Project-GlassKilnController 用于制作"温玻璃"的电热窑炉
https://arduinoinfo.mywikis.net/wiki/Project-GlassKilnController

ArduinoMenu演示TTGO T-Display 精彩教程。
https://sites.google.com/site/jmaathuis/arduino/lilygo-ttgo-t-display-esp32/arduinomenu-demo-ttgo-t-display

mvc-interface ArduinoMenu教程
https://zaragozamakerspace.com/index.php/courses/mvc-interface/

Arduino自动铜带切割机
https://www.thingiverse.com/thing:3557719

装药粉料斗水平仪和警报
https://github.com/nathandarnell/Reloading-Powder-Hopper-Level-Gauge-and-Alarm

ServoBox 舵机测试仪和监视器
https://github.com/jarkman/ServoBox

PANOBOT 全景机器人
https://github.com/RobertFach/panobot

teensy-midi-looper 基于微控制器的midi表演音序器
https://github.com/newdigate/teensy-midi-looper

AmplifierControl 自动化开/关功放和Kenwood波段解码的程序
https://github.com/petrlab/AmplifierControl spna Arduino单端口网络分析仪 (SPNA) https://github.com/tczerwonka/spna

LRDuino 车载多功能仪表系统 - STM32, SSD1306, MAX31856, ADXL345, ELM327 https://github.com/BennehBoy/LRDuino

LRDuinoTD5 车载多功能仪表系统 - STM32, SSD1306, MAX31856, ADXL345, L9637D, TD5 ECU https://github.com/BennehBoy/LRDuinoTD5

thom-radio 互联网收音机制作 https://github.com/evfool/thom-radio

MIDI_drums 7通道压电MIDI鼓机带LCD菜单 https://github.com/Sobollion/MIDI_drums

BalancingRobot https://github.com/SLBarker/BalancingRobot

swatili 50升水表,带阀门控制、LCD、按钮、RTC和霍尔效应脉冲读取器 https://github.com/daniel-leonard-robinson/swatili

Fielduino 硬件PWM发生器,使用菜单选择频率和占空比 https://github.com/neu-rah/Fielduino

ArduinoMultiDesktop 硬件设备的多桌面概念 https://github.com/dontsovcmc/ArduinoMultiDesktop

SmartGreenHouse https://github.com/dontsovcmc/SmartGreenHouse/tree/master/src

console.arduino 使用ILI9341的便携式串行调试控制台项目 https://github.com/malachib/console.arduino

平台

Atmel AVR, Atmel SAM, Espressif 32, Espressif 8266, Intel ARC32, Microchip PIC32, Nordic nRF51, Nordic nRF52, ST STM32, Teensy, TI MSP430

安装

Arduino IDE - 使用库管理器安装(ArduinoMenu库 - Rui Azevedo)

Platformio - http://platformio.org/lib/show/1468/ArduinoMenu%20library

IO设备

输出设备

串口

https://www.arduino.cc/en/Reference/Serial

  • 串口监视器

标准Arduino LCD库

https://www.arduino.cc/en/Reference/LiquidCrystal

  • hd44780

F Malpartida的LCD库

https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home

  • HD44780直接连接
  • HD44780 I2C
  • HD44780 SPI

Matthias Hertel PCF8574驱动

https://github.com/mathertel/LiquidCrystal_PCF8574

  • HD44780

Arduino TFT设备

https://www.arduino.cc/en/Guide/TFT

SSD1306Ascii

https://github.com/greiman/SSD1306Ascii

  • 基于SSD1306控制器的OLED屏幕

TFT_eSPI

兼容Arduino IDE的ESP8266和ESP32图形和字体库 https://github.com/Bodmer/TFT_eSPI

  • ILI9341, ILI9163, ST7735, S6D02A1, ILI9481, ILI9486, ILI9488, HX8357D, ST7789, ILI9486
  • Waveshare 2色和3色SPI电子纸显示器

TFT_HX8357驱动

https://github.com/Bodmer/TFT_HX8357

  • HX8357B, HX8357C, ILI9481和ILI9486

Adafruit的GFX设备

https://github.com/adafruit/Adafruit-GFX-Library

  • RGBmatrixPanel,16x32和32x32 RGB LED矩阵面板
  • Adafruit_TFTLCD,2.8"TFT LCD触摸屏分线板和Arduino TFT触摸屏扩展板
  • Adafruit_HX8340B,2.2"TFT显示器,带microSD
  • Adafruit_ST7735,1.8"TFT显示器,带microSD
  • Adafruit_PCD8544,用于Nokia 5110/3310单色LCD
  • Adafruit-Graphic-VFD-Display-Library,用于128x64图形VFD
  • Adafruit-SSD1331-OLED-Driver-Library-for-Arduino,用于0.96"16位彩色OLED,带microSD卡座
  • Adafruit_SSD1306,用于单色128x64和128x32 OLED

UTFT设备

http://www.rinkydinkelectronics.com/library.php?id=51

  • ITDB02系列 - ITead Studio
  • TFT01系列 - ElecFreaks
  • RGB LCD - NKC Electronics

U8glib设备

https://github.com/olikraus/U8glib_Arduino

SSD1306, 128x64, SSD1306, 128x32, SSD1306, 64x48, SSD1309, 128x64, SSD1322, 256x64, SSD1325, 128x64, SSD1327, 96x96, SH1106, 128x64, UC1601, 128x32, UC1608, 240x64, UC1610, 160x104, UC1611, 240x64, UC1611, 240x128, UC1701, 128x64, UC1701, 102x64, ST7565, 128x64, ST7565, 128x32, ST7920, 128x64, ST7920, 192x32, ST7920, 202x32, LD7032, 60x32, PCD8544, 84x48, TLS8204 , 84x48, PCF8812 , 96x65, KS0108 , 128x64, T6963, 128x64, T6963, 128x128, T6963, 240x64, T6963, 240x128, SBN1661, 122x32, LC7981, 160x80, LC7981, 240x64, LC7981, 240x128, LC7981, 320x64, SSD1351, HT1632, 24x16, Flipdisk, 28x14, 虚拟屏幕设备

U8G2和U8x8设备

https://github.com/olikraus/U8g2_Arduino SSD1305 128X32无名称,SSD1305 128X32无名称,SSD1305 128X64 ADAFRUIT,SSD1305 128X64 ADAFRUIT,SSD1306 128X64无名称,SSD1306 128X64 VCOMH0,SSD1306 128X64 ALT0,SSD1306 128X64无名称,SSD1306 128X64 VCOMH0,SSD1306 128X64 ALT0,SH1106 128X64无名称,SH1106 128X64 VCOMH0,SH1106 128X64 WINSTAR,SH1106 128X64无名称,SH1106 128X64 VCOMH0,SH1106 128X64 WINSTAR,SH1106 72X40 WISE,SH1106 72X40 WISE,SH1106 64X32,SH1106 64X32,SH1107 64X128,SH1107 64X128,SH1107 SEEED 96X96,SH1107 SEEED 96X96,SH1107 128X128,SH1107 128X128,SH1122 256X64,SH1122 256X64,SSD1306 128X32 UNIVISION,SSD1306 128X32 UNIVISION,SSD1306 64X48 ER,SSD1306 64X48 ER,SSD1306 48X64 WINSTAR,SSD1306 48X64 WINSTAR,SSD1306 64X32无名称,SSD1306 64X32 1F,SSD1306 64X32无名称,SSD1306 64X32 1F,SSD1306 96X16 ER,SSD1306 96X16 ER,SSD1309 128X64无名称2,SSD1309 128X64无名称2,SSD1309 128X64无名称0,SSD1309 128X64无名称0,SSD1325 NHD 128X64,SSD1325 NHD 128X64,SSD1326 ER 256X32,SSD1326 ER 256X32,SSD1327 SEEED 96X96,SSD1327 SEEED 96X96,SSD1327 MIDAS 128X128,SSD1327 MIDAS 128X128,SSD1329 128X96无名称,LD7032 60X32,LD7032 60X32,ST7920 192X32,ST7920 192X32,ST7920 192X32,ST7920 128X64,ST7920 128X64,ST7920 128X64,LS013B7DH03 128X128,UC1701 EA DOGS102,UC1701 MINI12864,PCD8544 84X48,PCF8812 96X65,HX1230 96X68,UC1604 JLX19264,UC1604 JLX19264,UC1608 ERC24064,UC1608 ERC24064,UC1608 ERC240120,UC1608 ERC240120,UC1608 240X128,UC1608 240X128,UC1638 160X128,UC1610 EA DOGXL160,UC1610 EA DOGXL160,UC1611 EA DOGM240,UC1611 EA DOGM240,UC1611 EA DOGXL240,UC1611 EA DOGXL240,UC1611 EW50850,UC1611 EW50850,ST7565 EA DOGM128,ST7565 64128N,ST7565 ZOLEN 128X64,ST7565 LM6059,ST7565 LX12864,ST7565 ERC12864,ST7565 NHD C12864,ST7565 JLX12864,ST7565 NHD C12832,UC1601 128X32,UC1601 128X32,ST7565 EA DOGM132,ST7567 PI 132X64,ST7567 JLX12864,ST7567 ENH DG128064,ST7567 ENH DG128064I,ST7588 JLX12864,ST7588 JLX12864,ST75256 JLX256128,ST75256 JLX256128,ST75256 JLX256160,ST75256 JLX256160,ST75256 JLX240160,ST75256 JLX240160,ST75256 JLX25664,ST75256 JLX25664,ST75256 JLX172104,ST75256 JLX172104,NT7534 TG12864R,IST3020 ERC19264,SBN1661 122X32,SED1520 122X32,KS0108 128X64,KS0108 ERM19264,LC7981 160X80,LC7981 160X160,LC7981 240X128,T6963 240X128,T6963 240X64,T6963 256X64,T6963 128X64,SSD1322 NHD 256X64,SSD1322 NHD 128X64,SSD1606 172X72,SSD1607 200X200,SSD1607 GD 200X200,IL3820 296X128,IL3820 V2 296X128,SED1330 240X128,RA8835 NHD 240X128,RA8835 320X240,MAX7219 32X8,A2打印机 384X240

UCGLib设备

https://github.com/olikraus/Ucglib_Arduino

ST7735, ILI9163, ILI9325, ILI9341, ILI9486, LD50T6160, PCF8833, SEPS225, SSD1331, SSD1351, HX8352C

串行ANSI终端

https://github.com/neu-rah/AnsiStream

  • Unix终端

Grove RGB LCD I2C 2x16

https://wiki.seeedstudio.com/Grove-LCD_RGB_Backlight/

Web浏览器

  • ESP8266(内置)

Web JSON

  • ESP8266(内置)

Websockets

  • ESP8266(内置)

注意: 即使不使用Web界面,ESP8266也需要流媒体库,并且需要包含 #include <menuIO/esp8266Out.h>

根据您的输出驱动程序,可能需要以下之一(可以同时安装两者)

输入设备

串行 https://www.arduino.cc/en/Reference/Serial

四相编码器 - 使用PCINT的通用编码器(内置)

按钮 - 简单数字键盘(内置)

通用键盘(无PCINT) - 可配置用于数字或模拟键盘(内置)

模拟摇杆

ClickEncoder https://github.com/0xPIT/encoder

矩阵键盘 http://playground.arduino.cc/Code/Keypad https://github.com/Nullkraft/Keypad

基于PCF8574的I2C矩阵键盘 https://github.com/whatnick/i2ckeypad

用户定义的输入调用菜单导航API

使用ESP设备时的Web浏览器(实验性)

依赖项

该库依赖于以下库:

根据输入或输出的类型,可能需要其他库。基本上是您的设备所需的任何库。

限制

  • 使用宏时菜单选项限制为16个(当前宏限制)。
  • 使用宏构建的菜单必须至少有2个选项。
  • 最多127个选项。
  • 快速访问(数字键)仅支持9个选项(1到9)。
  • 提示可能在宽度小于4个字符的面板上溢出。
  • 菜单系统基于字符,因此选择等宽字体以获得最佳效果,但它可以与任何字体一起使用,只是文本可能会溢出。

基础

  • 基于字符的信息显示。
  • 基于行的菜单组织。
  • 流式IO + 专门化。

信息

更多信息请参阅

wiki页面、issuesr-site.net

错误/建议

请报告错误、问题或改进想法,我很感谢反馈。谢谢。

在问题报告中,请指明输入和输出驱动程序或设备以及目标平台。

注意事项

编码器现在需要在setup中调用begin()(2.x)

从通用流读取输入,包括简单的编码器和键盘流 - 提供的编码器驱动程序使用内部上拉和反向逻辑

多个流打包用于输入,以混合编码器流和编码器键盘(通常1或2个键)

历史

4.0

  • SdFat插件和示例
  • EscControl示例
  • 支持Bodmer/TFT_eSPI
  • SDCard文件选择器插件
  • 允许虚拟/动态数据自定义菜单
  • 带有显式引脚模式的替代按键驱动程序
  • 更多示例
  • 带验证的文本编辑字段 *
  • 平板风格菜单(水平列表)
  • 内联平板菜单可以输入自定义格式,如IP/日期/时间,实验性的,仅适用于可以定位光标的设备
  • 插件,可能是设备特定的替代菜单项
  • 允许多个并发菜单
  • 支持UCGLib显示器
  • 支持U8x8显示器
  • 支持Arduino TFT
  • 支持PCF8574 I2C LCD
  • 支持模拟操纵杆输入
  • 添加输入突发配置选项
  • VALUEOBJ宏,用户分配的值
  • menuIn类用于菜单输入(允许设备字段反转) *
  • 一些选项已分散到其他类中
  • 允许动态菜单构建(RAM),甚至适用于AVR

* API更改

选项

<del>invertFieldKeys选项已删除,反转现在由特定的menuIn对象支持。</del>

回归:仍需要简化简单输入情况。

numValueInput移至menuIn对象

navRoot额外选项,之前在全局选项对象上

bool nav2D=false;//未使用 bool canExit=true;//v4.0从全局选项移动 bool useUpdateEvent=false;//如果为false,则在字段值更改时使用enterEvent。 idx_t inputBurst=1;//可以在输出之前处理的输入限制
串行输入

不再直接接受Serial作为输入,请使用serialIn代替

prompt基础API

printTo成员函数从:

Used printTo(navRoot&,bool,menuOut&,idx_t,idx_t);

更改为:

Used printTo(navRoot&,bool,menuOut&,idx_t,idx_t,idx_t=0);

这应该只影响自定义组件

输入现在来自menuIn类,派生自Stream,但包括每个输入类的字段轴反转标志函数。

3.0

  • 菜单控制系统的完全修订
    • 菜单结构分为RAM对象和flash对象
    • 使用单独的导航控制对象navNode
    • 中央导航控制对象navRoot
    • 对所有菜单对象使用事件(焦点、模糊、进入、退出)
    • 多个面板
    • 基本级别的颜色枚举
    • 并行多个输出设备
    • 将退出定义为常规选项
    • 限制文本宽度以防溢出

2.4

  • 支持teensy(在3.2上测试)
  • 新的字段类型SELECT
  • 反射性,字段反映值的外部更改
  • 将字段字符串存储到progmem
  • 在没有PROGMEM的系统上自动使用RAM

2.3

  • 动作函数现在需要返回bool(仅影响菜单)

false = 继续菜单

true = 退出菜单

  • 支持U8GLib屏幕
  • 可选使用ClickEncoder
  • 使用闪存存储菜单字符串和列表(PROGMEM)

2.0

  • 非阻塞菜单主循环
  • 菜单字段作为具有关联值的菜单提示 值可以是: 范围内的数值 点击时切换的值列表(用于小列表) 作为子菜单选择的值列表(用于较长列表)
  • PCINT现在支持Mega/2560和可能的其他型号

1.x

  • 基本菜单功能

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多