ESP8266采用AT指令连接华为云服务器方法(MQTT固件)

一、前言

本篇文章主要介绍3个内容:

(1)ESP8266-WIFI模块常用的AI指令功能介绍

(2)ESP8266烧写MQTT固件连接华为云IOT服务器。

(3)介绍华为云IOT服务器的配置过程。

ESP8266是一款功能强大的物联网芯片,它集成了处理器、Wi-Fi网络连接和TCP/IP协议栈,提供了简单而强大的无线网络连接能力,被广泛应用于各种物联网设备中。支持AT指令集,可以通过串口与其他设备进行通信,可以降低设备间的通信难度。

以下是ESP8266模块的主要特点和功能:

(1)小巧而强大:ESP8266模块的尺寸小,但它搭载了一个高性能的32位Tensilica L106 RISC处理器,时钟频率为80MHz,可以通过软件进行固件升级。

(2)Wi-Fi连接:ESP8266支持802.11 b/g/n标准,能够实现快速而稳定的无线网络连接。它可以作为Wi-Fi客户端连接到现有的Wi-Fi网络,也可以作为Wi-Fi接入点(AP)提供无线网络服务。

(3)TCP/IP协议栈:ESP8266集成了TCP/IP协议栈,可以通过Wi-Fi与其他设备进行通信,包括传输数据、发送HTTP请求、执行WebSocket通信等。

(4)GPIO引脚:ESP8266模块具有多个通用GPIO引脚,可用于连接和控制外部设备,如传感器、继电器、LED等。

(5)低功耗:ESP8266在待机模式下的功耗非常低,适用于需要长时间运行的低功耗应用。

(6)开发环境:ESP8266的开发可以使用多种编程语言和开发平台,如Arduino IDE、MicroPython、Lua等。这使得开发人员可以选择最适合他们的工具进行开发。

图片

图片

二、下载固件

ESP8266默认的固件不支持MQTT协议,需要重新下载固件。

链接:https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB

三、常用的AT指令

【1】基础AT指令

 

cpp

AT:测试 AT 启动

AT+RST:重启模块

AT+GMR:查看版本信息

AT+CMD:查询当前固件支持的所有命令及命令类型

AT+GSLP:进⼊ Deep-sleep 模式

ATE:开启或关闭 AT 回显功能

AT+RESTORE:恢复出厂设置

AT+SAVETRANSLINK:设置开机 透传模式 信息

AT+TRANSINTVL:设置 透传模式 模式下的数据发送间隔

AT+UART_CUR:设置 UART 当前临时配置,不保存到 flash

AT+UART_DEF:设置 UART 默认配置, 保存到 flash

AT+SLEEP:设置 sleep 模式

AT+SYSRAM:查询当前剩余堆空间和最小堆空间

AT+SYSMSG:查询/设置系统提示信息

AT+SYSMSGFILTER:启用或禁用 系统消息 过滤

AT+SYSMSGFILTERCFG:查询/配置 系统消息 的过滤器

AT+SYSFLASH:查询或读写 flash 用户分区

AT+SYSMFG:查询或读写 manufacturing nvs 用户分区

AT+RFPOWER:查询/设置 RF TX Power

AT+SYSROLLBACK:回滚到以前的固件

AT+SYSTIMESTAMP:查询/设置本地时间戳

AT+SYSLOG:启用或禁用 AT 错误代码提示

AT+SLEEPWKCFG:设置 Light-sleep 唤醒源和唤醒 GPIO

AT+SYSSTORE:设置参数存储模式

AT+SYSREG:读写寄存器

【2】Wi-Fi AT 命令集

 

cpp

AT+CWINIT:初始化/清理 Wi-Fi 驱动程序

AT+CWMODE:查询/设置 Wi-Fi 模式 (Station/SoftAP/Station+SoftAP)

AT+CWSTATE:查询 Wi-Fi 状态和 Wi-Fi 信息

AT+CWJAP:连接 AP

AT+CWRECONNCFG:查询/设置 Wi-Fi 重连配置

AT+CWLAPOPT:设置 AT+CWLAP 命令扫描结果的属性

AT+CWLAP:扫描当前可用的 AP

AT+CWQAP:断开与 AP 的连接

AT+CWSAP:配置 ESP32 SoftAP 参数

AT+CWLIF:查询连接到 ESP32 SoftAP 的 station 信息

AT+CWQIF:断开 station 与 ESP32 SoftAP 的连接

AT+CWDHCP:启用/禁用 DHCP

AT+CWDHCPS:查询/设置 ESP32 SoftAP DHCP 分配的 IPv4 地址范围

AT+CWAUTOCONN:上电是否自动连接 AP

AT+CWAPPROTO:查询/设置 SoftAP 模式下 802.11 b/g/n 协议标准

AT+CWSTAPROTO:设置 Station 模式下 802.11 b/g/n 协议标准

AT+CIPSTAMAC:查询/设置 ESP32 Station 的 MAC 地址

AT+CIPAPMAC:查询/设置 ESP32 SoftAP 的 MAC 地址

AT+CIPSTA:查询/设置 ESP32 Station 的 IP 地址

AT+CIPAP:查询/设置 ESP32 SoftAP 的 IP 地址

AT+CWSTARTSMART:开启 SmartConfig

AT+CWSTOPSMART:停止 SmartConfig

AT+WPS:设置 WPS 功能

AT+MDNS:设置 mDNS 功能

AT+CWJEAP:连接 WPA2 企业版 AP

AT+CWHOSTNAME:查询/设置 ESP32 Station 的主机

【3】TCP/IP AT 命令

 

cpp

AT+CIPV6: 启用/禁用 IPv6 网络 (IPv6)

AT+CIPSTATE:查询 TCP/UDP/SSL 连接信息

AT+CIPSTATUS (弃用):查询 TCP/UDP/SSL 连接状态和信息

AT+CIPDOMAIN:域名解析

AT+CIPSTART:建立 TCP 连接、UDP 传输或 SSL 连接

AT+CIPSTARTEX:建立自动分配 ID 的 TCP 连接、UDP 传输或 SSL 连接

[仅适用数据模式] +++: 退出 数据模式

AT+SAVETRANSLINK:设置 Wi-Fi 开机 透传模式 信息

AT+CIPSEND:在 普通传输模式 或 Wi-Fi 透传模式 下发送数据

AT+CIPSENDL:在 普通传输模式 下并行发送长数据

AT+CIPSENDLCFG:设置 AT+CIPSENDL 命令的属性

AT+CIPSENDEX:在 普通传输模式 下采用扩展的方式发送数据

AT+CIPCLOSE:关闭 TCP/UDP/SSL 连接

AT+CIFSR:查询本地 IP 地址和 MAC 地址

AT+CIPMUX:启用/禁用多连接模式

AT+CIPSERVER:建立/关闭 TCP 或 SSL 服务器

AT+CIPSERVERMAXCONN:查询/设置服务器允许建立的最大连接数

AT+CIPMODE:查询/设置传输模式

AT+CIPSTO:查询/设置本地 TCP 服务器超时时间

AT+CIPSNTPCFG:查询/设置时区和 SNTP 服务器

AT+CIPSNTPTIME:查询 SNTP 时间

AT+CIPSNTPINTV:查询/设置 SNTP 时间同步的间隔

AT+CIPFWVER:查询服务器已有的 AT 固件版本

AT+CIUPDATE:通过 Wi-Fi 升级固件

AT+CIPDINFO:设置 +IPD 消息详情

AT+CIPSSLCCONF:查询/设置 SSL 客户端配置

AT+CIPSSLCCN:查询/设置 SSL 客户端的公用名 (common name)

AT+CIPSSLCSNI:查询/设置 SSL 客户端的 SNI

AT+CIPSSLCALPN:查询/设置 SSL 客户端 ALPN

AT+CIPSSLCPSK:查询/设置 SSL 客户端的 PSK

AT+CIPRECONNINTV:查询/设置 Wi-Fi 透传模式 下的 TCP/UDP/SSL 重连间隔

AT+CIPRECVTYPE:查询/设置套接字接收模式

AT+CIPRECVDATA:获取被动接收模式下的套接字数据

AT+CIPRECVLEN:查询被动接收模式下套接字数据的长度

AT+PING:ping 对端主机

AT+CIPDNS:查询/设置 DNS 服务器信息

AT+CIPTCPOPT:查询/设置套接字选项

【4】MQTT AT 命令集

 

cpp

AT+MQTTUSERCFG:设置 MQTT 用户属性

AT+MQTTLONGCLIENTID:设置 MQTT 客户端 ID

AT+MQTTLONGUSERNAME:设置 MQTT 登陆用户名

AT+MQTTLONGPASSWORD:设置 MQTT 登陆密码

AT+MQTTCONNCFG:设置 MQTT 连接属性

AT+MQTTALPN:设置 MQTT 应用层协议协商(ALPN)

AT+MQTTSNI:设置 MQTT 服务器名称指示(SNI)

AT+MQTTCONN:连接 MQTT Broker

AT+MQTTPUB:发布 MQTT 消息(字符串)

AT+MQTTPUBRAW:发布长 MQTT 消息

AT+MQTTSUB:订阅 MQTT Topic

AT+MQTTUNSUB:取消订阅 MQTT Topic

AT+MQTTCLEAN:断开 MQTT 连接

四、ESP8266-AT指令连接华为云IOT

下面是STM32的实际代码,通过串口发送AT指令控制ESP8266连接华为云IOT服务器、

cpp

void ESP8266_Init(void)
{
//====================================================实现设备在线===
   //【1】复位ESP8266
   printf("AT+RST\r\n");//第一步
   delay_ms(2000);
   //【2】设置为STA模式
   printf("AT+CWMODE=1\r\n");//第二步
   delay_ms(1500);
   //【3】设置连接的WIFI热点
   // 格式: AT+CWJAP="填写wifi名称","填写WiFi密码"
   printf("AT+CWJAP="123","12345678"\r\n");//第四步
   delay_ms(1500);
   //【4】设置MQTT的登录名和密码
   // 格式: AT+MQTTUSERCFG=0,1,"NULL","填写用户名","填写密码",0,0,""
   printf("AT+MQTTUSERCFG=0,1,"NULL","65620a943668046d0e31568c_room1","a83d06a34631b72d1b35bae5ef5e23c7ea723952c33796faa47410b107e7f4b7",0,0,""\r\n");//第五步
   delay_ms(1500);
   //【5】设置MQTT的ClientID
   // 格式: AT+MQTTCLIENTID=0,"填写ClientID"
   printf("AT+MQTTCLIENTID=0,"65620a943668046d0e31568c_room1_0_0_2023112515"\r\n");//第6步 客户端ID
   delay_ms(1500);
   // 【6】设置MQTT接入地址
   // 格式: AT+MQTTCONN=0,"填写MQTT接入的地址",1883,1
   printf("AT+MQTTCONN=0,"124.70.218.131",1883,1\r\n");//第7步
   delay_ms(2000);
   
}



void ESP8266_data_publish(char *att)
{
   // char publish_command[256];
   printf("%s",att);//第2步
   //printf("AT+MQTTPUB=0,"$oc/devices/65620a943668046d0e31568c_room1/sys/properties/report","{\"services\":[{\"service_id\":\"stm32\",\"properties\":{\"%s\":%d}}]}",0,0\r\n", att, data);
   // printf("%s", publish_command);
}


int main()
{
   //【7】上传数据
              // 格式: AT+MQTTPUB=0," 发布的主题 ","上报的json数据",0,0
              // $oc/devices/64047c741eaf704179abaa58_Temp_test/sys/properties/report ","{"services":[{"service_id":"esp8266_data","properties":{"temp": 100}}]}

              //
              //组合上传的数据0---上传单个
              sprintf(MQTT_buff,"AT+MQTTPUB=0,"$oc/devices/65620a943668046d0e31568c_room1/sys/properties/report","{"services":[{"service_id":"stm32","properties":{"Temp":%d}}]}",0,0\r\n",
              temperature);
             
              //组合上传的数据--上传多个
              //sprintf(MQTT_buff,"AT+MQTTPUB=0,"$oc/devices/65620a943668046d0e31568c_room1/sys/properties/report","{"services": [{"service_id": "stm32","properties":{"Temp":%d,"Humi":%d,"Fire":%d,"MQ-135":%d,"Water":%d,"SPO2":%d,"HR":%d}}]}",0,0\r\n",
              //temperature,humidity,Fire,z,Water,SPO2,HR);
             
             
              //上传数据
              ESP8266_data_publish(MQTT_buff);
}

五、华为云IOT服务器部署过程

在华为云IOT平台上,需要进行设备接入、数据模型定义、规则引擎配置和应用开发等四个核心模块的开发。其中,设备接入模块包括设备注册、获取设备证书、建立连接等步骤,以保障设备与云平台之间的安全通信;数据模型定义模块需要根据实际需求定义相应的数据模型,包括上传数据格式、设备属性和服务等。规则引擎配置模块需要完成实时消息推送、远程控制和告警等功能。应用开发模块则是将完整的智能井盖系统进行打包,为用户提供统一的操作接口。

华为云官网: https://www.huaweicloud.com/

打开官网,搜索物联网,就能快速找到 设备接入IoTDA

图片

5.1 物联网平台介绍

华为云物联网平台(IoT 设备接入云服务)提供海量设备的接入和管理能力,将物理设备联接到云,支撑设备数据采集上云和云端下发命令给设备进行远程控制,配合华为云其他产品,帮助我们快速构筑物联网解决方案。

使用物联网平台构建一个完整的物联网解决方案主要包括3部分:物联网平台、业务应用和设备。

物联网平台作为连接业务应用和设备的中间层,屏蔽了各种复杂的设备接口,实现设备的快速接入;同时提供强大的开放能力,支撑行业用户构建各种物联网解决方案。

设备可以通过固网、2G/3G/4G/5G、NB-IoT、Wifi等多种网络接入物联网平台,并使用LWM2M/CoAP、MQTT、HTTPS协议将业务数据上报到平台,平台也可以将控制命令下发给设备。

业务应用通过调用物联网平台提供的API,实现设备数据采集、命令下发、设备管理等业务场景。

图片

5.2 开通物联网服务

地址: https://www.huaweicloud.com/product/iothub.html

图片

开通标准版免费单元。

图片

图片

开通之后,点击总览,查看接入信息。 我们当前设备准备采用MQTT协议接入华为云平台,这里可以看到MQTT协议的地址和端口号等信息。

图片

总结:

 

cpp

端口号:   MQTT (1883)| MQTTS (8883)
接入地址: a3433ab133.iot-mqtts.cn-north-4.myhuaweicloud.com

根据域名地址得到IP地址信息:

 

cpp

Microsoft Windows [版本 10.0.19044.2846]
(c) Microsoft Corporation。保留所有权利。

C:\Users\11266>ping a3433ab133.iot-mqtts.cn-north-4.myhuaweicloud.com

正在 Ping a3433ab133.iot-mqtts.cn-north-4.myhuaweicloud.com [121.36.42.100] 具有 32 字节的数据:
来自 121.36.42.100 的回复: 字节=32 时间=37ms TTL=31
来自 121.36.42.100 的回复: 字节=32 时间=37ms TTL=31
来自 121.36.42.100 的回复: 字节=32 时间=36ms TTL=31
来自 121.36.42.100 的回复: 字节=32 时间=37ms TTL=31

121.36.42.100 的 Ping 统计信息:
   数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
   最短 = 36ms,最长 = 37ms,平均 = 36ms

C:\Users\11266>

图片

MQTT协议接入端口号有两个,1883是非加密端口,8883是证书加密端口,单片机无法加载证书,所以使用1883端口比较合适。 接下来的ESP8266就采用1883端口连接华为云物联网平台。

5.3 创建产品

(1)创建产品

点击右上角创建产品。

图片

(2)填写产品信息

根据自己产品名字填写,设备类型选择自定义类型。

(3)添加自定义模型

产品创建完成之后,点击进入产品详情页面,翻到最下面可以看到模型定义。

图片

模型简单来说: 就是存放设备上传到云平台的数据。比如:环境温度、环境湿度、环境烟雾浓度、火焰检测状态图等等,这些我们都可以单独创建一个模型保存。

5.4 添加设备

产品是属于上层的抽象模型,接下来在产品模型下添加实际的设备。添加的设备最终需要与真实的设备关联在一起,完成数据交互。

(1)注册设备

点击右上角注册设备。

图片

(2)根据自己的设备填写

在弹出的对话框里填写自己设备的信息。根据自己设备详细情况填写。

(3)保存设备信息

创建完毕之后,点击保存并关闭,得到创建的设备密匙信息。该信息在后续生成MQTT三元组的时候需要使用。

5.5 MQTT协议主题订阅与发布

(1)MQTT协议介绍

当前的设备是采用MQTT协议与华为云平台进行通信。

MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级传输协议。MQTT协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景。目前MQTT拥有各种平台和设备上的客户端,已经形成了初步的生态系统。

MQTT是一种消息队列协议,使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合,相对于其他协议,开发更简单;MQTT协议是工作在TCP/IP协议上;由TCP/IP协议提供稳定的网络连接;所以,只要具备TCP协议栈的网络设备都可以使用MQTT协议。 本次设备采用的ESP8266就具备TCP协议栈,能够建立TCP连接,所以,配合STM32代码里封装的MQTT协议,就可以与华为云平台完成通信。

华为云的MQTT协议接入帮助文档在这里: https://support.huaweicloud.com/devg-iothub/iot_02_2200.html

图片

业务流程:

图片

(2)华为云平台MQTT协议使用限制

描述限制
支持的MQTT协议版本3.1.1
与标准MQTT协议的区别支持Qos 0和Qos 1支持Topic自定义不支持QoS2不支持will、retain msg
MQTTS支持的安全等级采用TCP通道基础 + TLS协议(最高TLSv1.3版本)
单帐号每秒最大MQTT连接请求数无限制
单个设备每分钟支持的最大MQTT连接数1
单个MQTT连接每秒的吞吐量,即带宽,包含直连设备和网关3KB/s
MQTT单个发布消息最大长度,超过此大小的发布请求将被直接拒绝1MB
MQTT连接心跳时间建议值心跳时间限定为30至1200秒,推荐设置为120秒
产品是否支持自定义Topic支持
消息发布与订阅设备只能对自己的Topic进行消息发布与订阅
每个订阅请求的最大订阅数无限制

(3)主题订阅格式

帮助文档地址:https://support.huaweicloud.com/devg-iothub/iot_02_2200.html

图片

对于设备而言,一般会订阅平台下发消息给设备 这个主题。

设备想接收平台下发的消息,就需要订阅平台下发消息给设备 的主题,订阅后,平台下发消息给设备,设备就会收到消息。

(4)主题发布格式

对于设备来说,主题发布表示向云平台上传数据,将最新的传感器数据,设备状态上传到云平台。

这个操作称为:属性上报。

帮助文档地址:https://support.huaweicloud.com/usermanual-iothub/iot_06_v5_3010.html

图片

5.6 MQTT三元组

MQTT协议登录需要填用户ID,设备ID,设备密码等信息,就像我们平时登录QQ,微信一样要输入账号密码才能登录。MQTT协议登录的这3个参数,一般称为MQTT三元组。

接下来介绍,华为云平台的MQTT三元组参数如何得到。

(1)MQTT服务器地址

要登录MQTT服务器,首先记得先知道服务器的地址是多少,端口是多少。

帮助文档地址: https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/home

图片

MQTT协议的端口支持1883和8883,它们的区别是:8883 是加密端口更加安全。但是单片机上使用比较困难,所以当前的设备是采用1883端口进连接的。

根据上面的域名和端口号,得到下面的IP地址和端口号信息: 如果设备支持填写域名可以直接填域名,不支持就直接填写IP地址。 (IP地址就是域名解析得到的)

华为云的MQTT服务器地址:121.36.42.100
华为云的MQTT端口号:1883

(2)生成MQTT三元组

华为云提供了一个在线工具,用来生成MQTT鉴权三元组: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

打开这个工具,填入设备的信息(也就是刚才创建完设备之后保存的信息),点击生成,就可以得到MQTT的登录信息了。

下面是打开的页面:

图片

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

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

相关文章

LVGL部件

一.标签部件 1.如何创建标签部件以及设置文本 ![2024-01-28T09:54:08.png][3] void my_lvgl(void) {lv_obj_t *lablelv_label_create(lv_scr_act()); //创建一个标签lv_label_set_text(lable,"hello"); //普通更改文字lv_label_set_text_fmt(lab…

统计学-认识数据

数据 如: 定性数据: 性别:男、女 颜色:红、绿、青、蓝、紫 教育程度:高中、本科、硕士、博士 评价:好评、中评、差评 定量数据: 年份:2019、2018、2017、2016 温度:10、…

专业133总分400+上海交通大学819考研经验分享上交819电子信息与通信工程

今年专业819信号系统与信号处理133,总分400,如愿考上梦中上海交通大学,通过自己将近一年的复习,实现了人生中目前为止最大的逆袭(自己本科学校很普通),总结自己的复习经历,希望可以给…

C++ 数论相关题目 扩展欧几里得算法(裴蜀定理)

给定 n 对正整数 ai,bi ,对于每对数,求出一组 xi,yi ,使其满足 aixibiyigcd(ai,bi) 。 输入格式 第一行包含整数 n 。 接下来 n 行,每行包含两个整数 ai,bi 。 输出格式 输出共 n 行,对于每组 ai,bi ,求…

多只动物3D姿态估计与行为识别系统

动物社会行为的量化是动物科学研究的重要步骤。虽然现有的深度学习方法已经实现了对常见动物的精确姿态估计、识别和行为分类,但由于缺乏注释良好的数据集,其应用依然受到挑战。因此该研究展示了一个计算框架,即社会行为图谱(SBeA…

MkDocs 部署指南

简介 MkDocs 可以同时编译多个 markdown 文件,形成书籍一样的文件。有多种主题供你选择,很适合项目使用。 MkDocs 是快速,简单和华丽的静态网站生成器,可以构建项目文档。文档源文件在 Markdown 编写,使用单个 YAML …

大数据StarRocks(八):资源隔离实战

前言 自 2.2 版本起,StarRocks 支持资源组管理,集群可以通过设置资源组(Resource Group)的方式限制查询对资源的消耗,实现多租户之间的资源隔离与合理利用。在 2.3 版本中,StarRocks 支持限制大查询&#…

qt5-入门

参考: qt学习指南 Qt5和Qt6的区别-CSDN博客 Qt 学习之路_w3cschool Qt教程,Qt5编程入门教程(非常详细) 本地环境: win10专业版,64位 技术选择 Qt5力推QML界面编程。QML类似HTML,可以借助CSS进…

LabVIEW机械臂轨迹跟踪控制

介绍了一个使用LabVIEW开发的机械臂轨迹跟踪控制系统。该系统的主要目标是实现对机械臂运动轨迹的精确控制,使其能够按照预定路径进行精确移动。此系统特别适用于需要高精度位置控制的场合,如自动化装配、精密操作等。 为了实现LabVIEW环境下的机械臂轨迹…

React 组件生命周期-概述、生命周期钩子函数 - 挂载时、生命周期钩子函数 - 更新时、生命周期钩子函数 - 卸载时

React 组件生命周期-概述 学习目标: 能够说出组件的生命周期一共几个阶段 组件的生命周期是指组件从被创建到挂在到页面中运行,在到组件不用时卸载组件 注意:只有类组件才有生命周期,函数组件没有生命周期(类组件需要实例化&…

2024最新版IntelliJ IDEA安装使用指南

2024最新版IntelliJ IDEA安装使用指南 Installation and Usage Guide to the Latest JetBrains IntelliJ IDEA Community Editionn in 2024 By JacksonML JetBrains公司开发的IntelliJ IDEA一经问世,就受到全球Java/Kotlin开发者的热捧。这款集成开发环境&#xf…

C#,数据检索算法之插值搜索(Interpolation Search)的源代码

数据检索算法是指从数据集合(数组、表、哈希表等)中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文提供插值搜索(Interpolation Search)的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.…