ESP32开发

目录

1、简介

1.1 种类

1.2 特点

1.3 管脚功能

1.4 接线方式

1.5 工作模式

2、基础AT指令介绍

2.1 AT指令类型

2.2 基础指令及其描述

2.3 使用AT指令需要注意的事

3、AT指令分类和提示信息

3.1 选择是否保存到Flash的区别

3.2 提示信息

3.3 其他会保存到Flash的AT指令

4、基础WI-FI功能指令

5、TCP&IP功能AT指令概述

6、AT指令应用示例_单连接 TCP Client

6.1 配置 WiFi 模式

6.2 连接路由器 

6.3 查询 ESP8266 设备的 IP 地址

6.4 建立TCP服务器

6.5 ESP8266设备作为TCP client连接到上述服务器

6.6 ESP8266 设备向服务器发送数据

6.7 ESP8266设备接收数据提示信息

7、AT指令应用示例_UDP传输

7.1 固定远端的 UDP 通信

7.1.1 配置 WiFi 模式

7.1.2 连接路由器

7.1.3 查询 ESP8266 设备的 IP 地址

7.1.4 建立UDP服务器

7.1.5 使能多连接

7.1.6 创建UDP传输

7.1.7 发送数据

7.1.8 断开UDP传输

7.2 远端可变的 UDP 通信

7.2.1 配置 WiFi 模式

7.2.2 连接路由器

7.2.3 查询 ESP8266 设备的 IP 地址

 7.2.4 建立UDP服务器

7.2.5 使能单连接

7.2.5 创建UDP传输

7.2.6 发送数据

7.2.7 发送数据到其他指定远端

7.2.8 断开UDP传输

8、AT指令应用示例_透传

8.1 TCP Client单连接透传

8.1.1 配置WIFI模式

8.1.2 连接路由器

8.1.3 查询 ESP8266 设备的 IP 地址

8.1.4 建立TCP服务器

8.1.5 ESP8266 设备作为 TCP client 连接到上述服务器

8.1.6 使能透传模式

8.1.7 ESP8266设备向服务器发送数据

8.1.8 退出发送数据

8.1.9 退出透传模式

8.1.10 断开TCP连接

8.2 UDP透传

8.2.1 配置 WiFi 模式

8.2.2 连接路由器

8.2.3 查询 ESP8266 设备的 IP 地址

8.2.4 建立UDP服务器

8.2.5 ESP8266与PC对应端⼝建⽴固定对端的UDP传输

 8.2.6 使能透传模式

8.1.7 ESP8266设备向服务器发送数据

8.1.8 退出发送数据

8.1.9 退出透传模式

8.1.10 断开UDP连接

9、多连接TCP Server

9.1 配置WiFi模式

9.2 使能多连接

9.3 建⽴ TCP server

9.4 连接路由器

9.5 在PC端使⽤⽹络调试⼯具,建⽴⼀个TCP client,连接ESP8266的TCP server(上面设置9090)

9.6 发送数据

9.7 断开TCP连接


1、简介

1.1 种类

WIFI模块在PC上做为客户端、服务器,在STM32上做服务器的通讯。在物联网应用开发有重要作用,种类居多,如下图

红色方框的esp8266-01s型号的无限wifi模块就是本章学习的主要对象。

1.2 特点

  • 小巧的尺寸:ESP-01S模块具有紧凑的设计,适用于空间有限的应用。
  • WiFi功能:它支持802.11b/g/n标准,允许设备连接到无线网络。
  • 高度集成:ESP-01S集成了WiFi功能和处理器,减少了外部组件的需求。
  • AT指令支持:通过串口通信,可以使用AT指令进行配置和控制。
  • 低功耗:ESP-01S模块具有低功耗特性,适用于长时间运行的应用。
  • 容易使用:ESP-01S模块易于配置和应用,有许多开发资源和示例代码可用。

1.3 管脚功能

Pin脚编号Pin脚名称备注
1GND接地
2IO2GPIO2/UART1 TXD
3IO0GPI00:下载模式:外部拉低:运行模式:悬空或者外部拉高
4RXDUARTO RXD/GPIO3
5TXDUARTO TXD/GPI01
6EN芯片使能端,高电平有效
7RST复位
8VCC3.3V供电(VDD);外部供电电源输出电流建议在500mA 以上

1.4 接线方式

1.5 工作模式

ESP8266-01s模块共支持3种工作模式:STA、AP、STA+AP

1、STA模式

         在此模式下,模块可连接其他设备提供的无线网络,例如通过 WIFI 连接至路由器,从而可以访问互联网,进而实现手机或电脑通过互联网实现对设备的远程控制。   

        简单来说,此模式下,该模块相当于一个用户,需要链接外部的WIFI(或自己的热点),通过链接的WIFI进行与其他设备的通信;

2、AP 

        AP 模式为默认的模式,在此模式下,模块将作为热点供其他设备连接, 从而让手机或电脑直接与模块进行通讯,实现局域网的无线控制。

        简单来说,此模式下,该模块相当于提供一个热点,创建一个小范围的局域网,凡是连接上的设备就能与其进行通信;

3、STA+AP

        该模式为 STA 模式与 AP 模式共存的一种模式,模块既能连接至其他 设备提供的无线网络,又能作为热点,供其他设备连接,以实现广域网与局域网的无缝切换, 方便操作使用。

2、基础AT指令介绍

2.1 AT指令类型

注意:
不是每条 AT 指令都具备上述 4 种类型的命令。
[ ] 括号内为缺省值,不必填写或者可能不显示。
使⽤双引号表示字符串数据 ”string” ,例如: AT+CWSAP="ESP756290","21030826",1,4
默认波特率为 115200
AT 指令必须⼤写,并且以回⻋换⾏符结尾( CR LF )。

2.2 基础指令及其描述

使用示例:

AT指令启动调试

AT+RST重启调试

AT+RESTORE恢复出厂设置调试

2.3 使用AT指令需要注意的事

输入AT指令时,所有字母需要为大写形式,否则会报错(返回error),但有个例外:加号前面的可以是小写,但加号后面的必须为大写,这可能是esp8266模块中程序自己做了处理,即AT无论是大小写都能识别出来。

在等待发送AT指令时,需要回车加换行,即\r\n,否则在串口部分他会以不换行的格式不断发送你输入的AT指令,但这在esp8266模块看来,它未识别到\r\n,所以不会对输入的AT指令进行处理,只有当识别到\r\n时,才会进行处理,所以需要勾选上串口助手的发送新行选项。

3、AT指令分类和提示信息

3.1 选择是否保存到Flash的区别

AT指令主要分类在简介中有写到,但有些指令有无Flash区别很大,在这里做一下解析。

如上图所示,设置当前wifi模式可以选择是否存到Flash,则有不同的AT指令,针对上图做出调试:

1.先进行测试

2.再进行查询

3.最后进行修改并查询

 

可见此时wifi模式成功修改成Station模式,但此时调用复位AT指令,再次进行查询,其模式还会是修改过后的模式么,如下:

可见修改后的模式并没有存储到Flash中,复位后会发生改变,若想要保存到Flash中,调用上面第二个图片中的AT指令即可,这里就不作演示。

3.2 提示信息

3.3 其他会保存到Flash的AT指令

4、基础WI-FI功能指令

5、TCP&IP功能AT指令概述

红框的是经常需要用到的,详细概述如下:

6、AT指令应用示例_单连接 TCP Client

6.1 配置 WiFi 模式

AT+CWMODE=3 // softAP+station mode
注:此AT指令通过试验会保存到Flash
响应 :
OK

6.2 连接路由器 

AT+CWJAP="SSID","password" // SSID and password of router SSID是路由器名称 password是路由器密码
响应 :
OK

6.3 查询 ESP8266 设备的 IP 地址

AT+CIFSR
响应 :
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"ee:fa:bc:96:20:8c"
+CIFSR:STAIP,"192.168.1.120"
+CIFSR:STAMAC,"ec:fa:bc:96:20:8c"
OK

 可见成功查询到esp8266模块连接wifi的IP

6.4 建立TCP服务器

PC ESP8266 设备连接同⼀路由器,在 PC 端使⽤⽹络调试⼯具,建⽴⼀个TCP服务器。
打开网络调试助手,修改端口号为TCPServer,当本地IP出现时,修改端口号为8080,点击侦听即可。

 

此时显示侦听中,可见等待设备连接到该TCP服务器。同时创建的服务器IP为192.168.1.103,端口为8080.

6.5 ESP8266设备作为TCP client连接到上述服务器

AT+CIPSTART="TCP","192.168.1.103 ",8080 //protocol, server IP and port
响应 :
OK

实现本地发送数据至远端。

6.6 ESP8266 设备向服务器发送数据

AT+CIPSEND=4 // set date length which will be sent, such as 4 bytes
>test // enter the data, no CR
响应 :
Recv 4 bytes
SEND OK

可见实现了远端像本地发送数据。

注意:
发送数据时,如果输⼊的字节数超过了设置⻓度( n ):
- 系统将提示 busy ,并发送数据的前 n 个字节,发送完成后响应 SEND OK
- 超出⻓度的部分数据被认为是⽆效数据,不被接受。

 可见超过AT指令设置的字节时,本地只能接收到在设置字节范围内的数据,其余数据发送失败。

6.7 ESP8266设备接收数据提示信息

提示信息如下:

+IPD,n:xxxxxxxxxx // received n bytes, data=xxxxxxxxxxx

上图IPD比输入数据长度多2是因为网络调试助手中勾选了换行,所以每次发送时串口助手会换行,同时\r\n算两个字符长度,下图不添加换行后,IPD与输入字符长度一样。

7、AT指令应用示例_UDP传输

UDP传输分为固定远端和远端可变,同时他们的前三步与上部分单连接TCP Client相同,所以这里将步骤列出来,不做详细操作演示。

7.1 固定远端的 UDP 通信

7.1.1 配置 WiFi 模式
AT+CWMODE=3 // softAP+station mode
注:此AT指令通过试验会保存到Flash
响应 :
OK
7.1.2 连接路由器
AT+CWJAP="SSID","password" // SSID and password of router SSID是路由器名称 password是路由器密码
响应 :
OK
7.1.3 查询 ESP8266 设备的 IP 地址
AT+CIFSR
响应 :
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"ee:fa:bc:96:20:8c"
+CIFSR:STAIP,"192.168.1.120"
+CIFSR:STAMAC,"ec:fa:bc:96:20:8c"
OK
7.1.4 建立UDP服务器
PC ESP8266 设备连接同⼀路由器,在 PC 端使⽤⽹络调试⼯具,建⽴⼀个UDP服务器。
打开网络调试助手,修改端口号为UDP,当本地IP出现时,修改端口号为8080,同时远程IP写入ESP8266模块的IP,修改端口号9090,点击侦听即可。
7.1.5 使能多连接
AT+CIPMUX=1
响应 :
OK

 

7.1.6 创建UDP传输
例如,分配连接号为 4 ,指令如下:
AT+CIPSTART=4,"UDP","192.168.1.103",8080,9090,0
响应 :
4,CONNNECT
OK
说明:
示例指令中的参数说明如下:
• "192.168.1.103", 8080 UDP 传输的远端 IP 和端⼝,即前⽂步骤 4 PC 建⽴的 UDP 端⼝;(这里的远端IP是相对于esp8266的远端,即网络调试助手中的本地IP
•9090   ESP8266 本地的 UDP 端⼝,⽤户可⾃⾏设置,如不设置则为随机值;
0 表示当前 UDP 传输建⽴后, UDP 远端不会被其他设备更改;即使有其他设备通过 UDP 协议发数据到
ESP8266 UDP 端⼝ 1112 ESP8266 的第 4 UDP 传输的远端也不会被替换,使⽤指令
“AT+CIPSEND=4, X” 发送数据,仍然是当前固定的 PC 端收到。

可见创建完UDP传输后,网络调试助手成功连接上远端esp8266模块。

7.1.7 发送数据
AT+CIPSEND=4,7 // Send 7 bytes to transmission NO.4
>UDPtest
// enter the data, no CR
响应 :
Recv 7 bytes
SEND OK

注意:
发送数据时,如果输⼊的字节数超过了设置⻓度( n ):
- 系统将提示 busy ,并发送数据的前 n 个字节,发送完成后响应 SEND OK
- 超出⻓度的部分数据被认为是⽆效数据,不被接受。

7.1.8 断开UDP传输
AT+CIPCLOSE=4(4为一开始分配的连接号)
响应 :
4,CLOSED
OK

可见断开连接后,远端发送数据到esp8266时,并不能接收数据。 

7.2 远端可变的 UDP 通信

7.2.1 配置 WiFi 模式
AT+CWMODE=3 // softAP+station mode
注:此AT指令通过试验会保存到Flash
响应 :
OK
7.2.2 连接路由器
AT+CWJAP="SSID","password" // SSID and password of router SSID是路由器名称 password是路由器密码
响应 :
OK
7.2.3 查询 ESP8266 设备的 IP 地址
AT+CIFSR
响应 :
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"ee:fa:bc:96:20:8c"
+CIFSR:STAIP,"192.168.1.120"
+CIFSR:STAMAC,"ec:fa:bc:96:20:8c"
OK
 7.2.4 建立UDP服务器
PC ESP8266 设备连接同⼀路由器,在 PC 端使⽤⽹络调试⼯具,建⽴⼀个UDP服务器。
打开网络调试助手,修改端口号为UDP,当本地IP出现时,修改端口号为8080,同时远程IP写入ESP8266模块的IP,修改端口号9090,点击侦听即可。
7.2.5 使能单连接
AT+CIPMUX=0
响应 :
OK

7.2.5 创建UDP传输
当使⽤ AT+CIPSTART 指令创建 UDP 通信,将最后⼀个参数设置为 2 时, UDP 通信的远端可改变。
AT+CIPSTART="UDP","192.168.1.103",8080,9090,2
响应 :
4,CONNNECT
OK
示例指令中的参数说明如下:
• "192.168.1.103"", 8080 UDP 传输的远端 IP 和端⼝,即前⽂ PC 建⽴的 UDP 端⼝;
• 9090   ESP8266 本地的 UDP 端⼝,⽤户可⾃⾏设置,如不设置则为随机值;
2 表示当前 UDP 传输建⽴后, UDP 传输远端仍然会更改; UDP 传输远端会⾃动更改为最近⼀个与 ESP8266 UDP 通信的远端。

 

 注意:这里设置的是单连接模式,所以在使用此通信方式时,需调用AT+CIPMUX?指令查询是否为0(单连接模式),同时单连接不需要加网络连接ID,与前面的固定远端UDP传输有所不同。

7.2.6 发送数据
AT+CIPSEND=7 // Send 7 bytes
>UDPtest
// enter the data, no CR
响应 :
Recv 7 bytes
SEND OK
注意:
发送数据时,如果输⼊的字节数超过了设置⻓度( n ):
- 系统将提示 busy ,并发送数据的前 n 个字节,发送完成后响应 SEND OK
- 超出⻓度的部分数据被认为是⽆效数据,不被接受。

这里为单连接模式,所以AT指令后面直接加上数据长度即可。

7.2.7 发送数据到其他指定远端
例如,发数据到192.168.1.103, 端⼝ 8081
AT+CIPSEND=7,"192.168.1.103",8081 // Send 7 bytes
>UDPtest
// enter the data, no CR
响应 :
Recv 7 bytes
SEND OK

 最左边的新开的其他远端UDP,通过修改端口号为8081,实现串口助手中发送指定长度的数据到端口号8081的远端。

7.2.8 断开UDP传输
AT+CIPCLOSE
响应 :
CLOSED
OK

 上面设置的是单连接模式,所以这里直接执行下图红框内AT指令即可。

8、AT指令应用示例_透传

8.1 TCP Client单连接透传

8.1.1 配置WIFI模式
AT+CWMODE=3 // softAP+station mode
响应 :
OK
8.1.2 连接路由器
AT+CWJAP="SSID","password" // SSID and password of router
响应 :
OK
8.1.3 查询 ESP8266 设备的 IP 地址

AT+CIFSR
响应 :
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"ee:fa:bc:96:20:8c"
+CIFSR:STAIP,"192.168.1.120"
+CIFSR:STAMAC,"ec:fa:bc:96:20:8c"
OK
8.1.4 建立TCP服务器
PC ESP8266 设备连接同⼀路由器,在 PC 端使⽤⽹络调试⼯具,建⽴⼀个TCP服务器。 打开网络调试助手,修改端口号为TCPServer,当本地IP出现时,修改端口号为8080,点击侦听即可。
8.1.5 ESP8266 设备作为 TCP client 连接到上述服务器
AT+CIPSTART="TCP","192.168.3.116",8080 //protocol, server IP and port
响应 :
OK

8.1.6 使能透传模式
AT+CIPMODE=1
响应 :
OK

8.1.7 ESP8266设备向服务器发送数据
AT+CIPSEND
> //From now on, data received from UART will be transmitted to server automatically.
注意:
发送数据时,如果输⼊的字节数超过了设置⻓度( n ):
- 系统将提示 busy ,并发送数据的前 n 个字节,发送完成后响应 SEND OK
- 超出⻓度的部分数据被认为是⽆效数据,不被接受。
进⼊透传模式发送数据,每包最⼤ 2048 节,或者每包数据以 20 ms 间隔区分。

8.1.8 退出发送数据

在透传发送数据过程中,若识别到单独的⼀包数据 “+++” ,则退出透传发送
- 如果使⽤键盘打字输⼊ “+++” ,可能耗时太⻓,不被认为是连续的三个 “+” ,建议使
⽤串⼝⼯具⼀次性发送 “+++” ,并请注意不要携带空格或换⾏符等不可⻅字符。
- 之后,请⾄少间隔 1 秒,再发下⼀条 AT 指令。
注意:
“+++“ 退出透传发送数据,回到正常 AT 指令模式。此时, TCP 连接仍然是保持的,可以再发 AT+CIPSEND
指令,重新开始透传。

注意:在输入"+++"数据时,需要取消换行,否则串口助手识别到多出来的\r\n,无论输入什么都会继续发送数据,如下:

解决方法是取消换行,单独发送"+++",过后要发送新指令,重新勾选上换行即可,如下:

8.1.9 退出透传模式
AT+CIPMODE=0
响应 :
OK

可见退出透传模式后,无法再向服务器发送数据,AT指令发送失败,可见该AT指令只在透传模式下生效。

8.1.10 断开TCP连接

AT+CIPCLOSE
响应 :
CLOSED
OK

8.2 UDP透传

8.2.1 配置 WiFi 模式
AT+CWMODE=3 // softAP+station mode
注:此AT指令通过试验会保存到Flash
响应 :
OK
8.2.2 连接路由器
AT+CWJAP="SSID","password" // SSID and password of router SSID是路由器名称 password是路由器密码
响应 :
OK
8.2.3 查询 ESP8266 设备的 IP 地址
AT+CIFSR
响应 :
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"ee:fa:bc:96:20:8c"
+CIFSR:STAIP,"192.168.1.120"
+CIFSR:STAMAC,"ec:fa:bc:96:20:8c"
OK
8.2.4 建立UDP服务器
PC ESP8266 设备连接同⼀路由器,在 PC 端使⽤⽹络调试⼯具,建⽴⼀个UDP服务器。
打开网络调试助手,修改端口号为UDP,当本地IP出现时,修改端口号为8080,同时远程IP写入ESP8266模块的IP,修改端口号9090,点击侦听即可。
8.2.5 ESP8266PC对应端⼝建⽴固定对端的UDP传输

AT+CIPSTART="UDP","192.168.1.103",8080,9090,2

响应 :
OK

 8.2.6 使能透传模式
AT+CIPMODE=1
响应 :
OK

8.1.7 ESP8266设备向服务器发送数据
AT+CIPSEND
> //From now on, data received from UART will be transmitted to server automatically.
注意:
发送数据时,如果输⼊的字节数超过了设置⻓度( n ):
- 系统将提示 busy ,并发送数据的前 n 个字节,发送完成后响应 SEND OK
- 超出⻓度的部分数据被认为是⽆效数据,不被接受。
进⼊透传模式发送数据,每包最⼤ 2048 节,或者每包数据以 20 ms 间隔区分。

8.1.8 退出发送数据

在透传发送数据过程中,若识别到单独的⼀包数据 “+++” ,则退出透传发送
- 如果使⽤键盘打字输⼊ “+++” ,可能耗时太⻓,不被认为是连续的三个 “+” ,建议使
⽤串⼝⼯具⼀次性发送 “+++” ,并请注意不要携带空格或换⾏符等不可⻅字符。
- 之后,请⾄少间隔 1 秒,再发下⼀条 AT 指令。
注意:
“+++“ 退出透传发送数据,回到正常 AT 指令模式。此时, UDP 连接仍然是保持的,可以再发 AT+CIPSEND
指令,重新开始透传。

注意:在输入"+++"数据时,需要取消换行,否则串口助手识别到多出来的\r\n,无论输入什么都会继续发送数据,如下:

解决方法是取消换行,单独发送"+++",过后要发送新指令,重新勾选上换行即可,如下:

8.1.9 退出透传模式
AT+CIPMODE=0
响应 :
OK

可见退出透传模式后,无法再向服务器发送数据,AT指令发送失败,可见该AT指令只在透传模式下生效。

8.1.10 断开UDP连接
AT+CIPCLOSE
响应 :
CLOSED
OK

9、多连接TCP Server

ESP8266 AT 仅⽀持建⽴⼀个 TCP 服务器,且必须使能多连接,即允许连接多个TCP client,虽然这里是TCP Server,但是是多个TCP client,所以网络调试助手端口号选择T CP client。

9.1 配置WiFi模式

AT+CWMODE=3 // softAP+station mode
响应 :
OK

9.2 使能多连接

AT+CIPMUX=1
响应 :
OK

9.3 建⽴ TCP server

AT+CIPSERVER=1 // default port = 333
响应 :
OK

9090端口号是esp8266模块通过我们设定的端口号。

9.4 连接路由器

AT+CWJAP="SSID","password" // SSID and password of router SSID是路由器名称 password是路由器密码
响应 :
OK

9.5 PC端使⽤⽹络调试⼯具,建⽴⼀个TCP client,连接ESP8266TCP server(上面设置9090)

注意:
ESP8266 作为 TCP server 有超时机制,如果连接建⽴后,⼀段时间内⽆数据来往, ESP8266 TCP server 会 将 TCP client 踢掉。因此,请在 PC TCP client 连上 ESP8266 TCP server 后建⽴⼀个 2s 的循环数据发送, ⽤于保持连接

若超过2s为发送数据,则会自动断开。 

9.6 发送数据

// ID number of connection is defaulted to be 0.
AT+CIPSEND=0, 4 // send 4 bytes to connection NO.0
>test // enter the data, no CR
响应 :
Recv 4 bytes
SEND OK
注意:
发送数据时,如果输⼊的字节数超过了设置⻓度( n ):
- 系统将提示 busy ,并发送数据的前 n 个字节,发送完成后响应 SEND OK
- 超出⻓度的部分数据被认为是⽆效数据,不被接受。
进⼊透传模式发送数据,每包最⼤ 2048 节,或者每包数据以 20 ms 间隔区分。

这里AT指令中网络连接号为0是默认为0,若有多个TCP Client连接则会增加序号,例如多增加一个TCP Clinet第二个序号为1,如下:

序号0为8080端口号,序号1为8081端口号。

9.7 断开TCP连接

AT+CIPCLOSE=5(关闭所有序号的TCP连接)
响应 :
CLOSED
OK

可以输入对应序号关闭TCP连接,如下:

也可以输入5关闭所有TCP连接,如下:

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

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

相关文章

界面组件DevExpress Blazor UI v23.2 - 支持.NET 8、全新的项目模版

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生Blazor UI组件(包括Pivot Grid、调度程序、图表、数据编辑器和报表等)。 DevExpress Blazor控件目前已经升级…

RISC-V CVA6 在 Linux 下相关环境下载与安装

RISC-V CVA6 在 Linux 下相关环境下载与安装 所需环境与源码下载 CVA6 源码下载 首先,我们可以直接从 GitHub 一次性拉取所有源码: git clone --recursive https://github.com/openhwgroup/cva6.git如果这里遇到网络问题,拉取失败&#x…

阿里云企业邮箱API的使用方法?调用限制?

阿里云企业邮箱API性能如何优化?配置邮箱API的优势? 阿里云企业邮箱以其稳定、高效和安全的特点,受到了众多企业的青睐。而阿里云企业邮箱API的开放,更是为企业提供了更加灵活、便捷的管理和操作方式。下面,我AokSend…

Linux的学习之路:22、线程(2)

摘要 本章继续讲一下线程的东西 目录 摘要 一、抢票 二、加锁保护 三、死锁 1、死锁四个必要条件 2、避免死锁 四、同步 1、常见的线程安全的情况 2、常见不可重入的情况 3、常见可重入的情况 4、可重入与线程安全联系 5、可重入与线程安全区别 一、抢票 这里回…

启动 UE4编辑器报 加载 Plugin 失败

启动 UE4编辑器报 加载 Plugin 失败,报如下错误: Plugin ‘SteamVR’ failer to load because module ‘SteamVR’ could not be found. Please ensure the plugin is properly installed, otherwise consider disabling the plugin for this project. …

新时代凌迟:考研

我不喜欢上班,但我很欣赏老板的品味,因为咱们公司竟然还在订阅报纸,而且只有一份,《中国青年报》。 这份报纸我最喜欢看的是“冰点周刊”专栏,因为这个栏目能让读者相信:报纸远远可以超越一天的生命。 昨天…

前端框架编译器之模板编译

编译原理概述 编译原理:是计算机科学的一个分支,研究如何将 高级程序语言 转换为 计算机可执行的目标代码 的技术和理论。 高级程序语言:Python、Java、JavaScript、TypeScript、C、C、Go 等。计算机可执行的目标代码:机器码、汇…

JavaEE初阶——多线程(六)——线程池

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享多线程的第六篇文章,关于线程池 如果有不足的或者错误的请您指出! 目录 3.线程池3.1标准库的线程池3.2 标准库自己提供的几个工厂类3.3自己实现一个线程池完成大体框架接下来完…

OpenHarmony实战开发-使用SmartPerf-Host分析应用性能

简介 SmartPerf-Host是一款深入挖掘数据、细粒度展示数据的性能功耗调优工具,可采集CPU调度、频点、进程线程时间片、堆内存、帧率等数据,采集的数据通过泳道图清晰地呈现给开发者,同时通过GUI以可视化的方式进行分析。该工具当前为开发者提…

LayuiMini使用时候初始化模板修改(下载源码)

忘记加了 下载 地址 : layui-mini: layuimini,后台admin前端模板,基于 layui 编写的最简洁、易用的后台框架模板。只需提供一个接口就直接初始化整个框架,无需复杂操作。 LayuiMini使用时候初始化模板官网给的是: layu…

Fluent.Ribbon创建Office的RibbonWindow菜单

链接: Fluent.Ribbon文档 优势: 1. 可以创建类似Office办公软件的复杂窗口; 2. 可以应用自定义主题风格界面

航拍图像拼接 | 使用C++实现的无人机航拍图像拼接

项目应用场景 面向无人机航拍图像拼接场景,项目使用 C 实现,使用 harris 角点查找特征点 非极大值抑制,由于航拍图像没有严重的尺度旋转变化,使用了 berief 描述子,然后使用 RANSAC 求 H,最后进行图像拼接…

Tomcat架构设计精髓分析-Connector高内聚低耦合设计

优秀的模块化设计通常都会采用高内聚、低耦合 高内聚是指相关度比较高的功能要尽可能集中,不要分散。低耦合是指两个相关的模块要尽可能减少依赖的部分和降低依赖的程序,不要让两个模块产中强依赖。 Tomca连接器需要实现的功能: 监听网络端口 接受网络…

知识图谱嵌入领域的重要研究:编辑基于语言模型的知识图谱嵌入

今天,向大家介绍一篇在知识图谱嵌入领域具有重要意义的研究论文——Editing Language Model-based Knowledge Graph Embeddings。这项工作由浙江大学和腾讯公司的研究人员联合完成,为我们在动态更新知识图谱嵌入方面提供了新的视角和方法。 研究背景 在…

中电金信:向“新”而行——探索融合架构的项目管理在保险行业的应用

近年来,险企在政策推动、市场牵引、自身发展、新技术应用日趋成熟等内外部因素的驱动下,积极投身到数字化转型的浪潮中。在拜访各类保险客户和合作项目的过程中,我们发现不少险企在数字化转型中或多或少都面临着战略如何落地、技术如何承接和…

详解Qt中实现树状结构图

在Qt中,实现树状结构图通常采用QTreeWidget或QTreeView组件。这两个组件都允许我们创建具有层次结构的列表,但它们之间存在一些差异。QTreeWidget提供了更简单的API,适用于轻量级、快速开发的需求;而QTreeView则更为灵活和可定制&…

【jQuery】看一眼就会用的jquery库之续章!

jQuery&#xff08;js框架&#xff09; 17、操作节点 创建节点&#xff1a; 创建节点只需要将元素放在jQuery的工厂函数中//创建一个button按钮let $btn$("<input typebutton>");//创建一个列表项let $li$("<li>选项</li>");添加节点…

知识分享之cookie

http协议中的cookie&#xff0c;什么是cookie如何获取cookie 一、什么是Cookie Cookie&#xff08;曲奇&#xff0c;小甜饼的译名&#xff09;在互联网技术领域中&#xff0c;是指一种小型文本文件&#xff0c;它由网站服务器发送给用户的浏览器&#xff0c;并被浏览器存储在用…

鸿蒙官网学习3

鸿蒙官网学习3 每日小提示项目的模块类型跨设备预览调试阶段应用的替换方式有两种 打开老的demo工程报错UIAbility 每日小提示 项目的模块类型 moduleType分为三种&#xff0c;只有1&#xff0c;2的模块支持直接调试和运行 entryfeaturehar 跨设备预览 需要手动在config.j…

unity的特性AttriBute详解

unity的特性AttriBute曾经令我大为头疼。因为不动使用的法则&#xff0c;但是教程都是直接就写&#xff0c;卡住就不能继续学下去。令我每一次看到&#xff0c;直接不敢看了。 今天使用文心一言搜索一番&#xff0c;发现&#xff0c;恐惧都是自己想象的&#xff0c;实际上这个…