如何使用 ESP-01S 模块

news2024/11/25 16:48:27

如何使用 ESP-01S 模块

原始PDF文档
参考:

  1. 将 ESP-01 用作 WiFi shield的更好方法 (e-tinkers.com)

  2. How do I use ESP8266 ESP-01S WiFi Module with ESP-01S Adapter - Using Arduino / Programming Questions - Arduino Forum

  3. ESP-01S WiFi 模块 – 配置布线 - 技术探索 (techexplorations.com)

它是如何工作的?

ESP8266 可以通过本地 Wi-Fi 网络或互联网(端口后)进行控制转发)。ESP-01 模块具有 GPIO 引脚,可通过互联网编程打开/关闭 LED 或继电器。该模块可通过串行引脚(RX、TX)使用 Arduino/USB 转 TTL 转换器进行编程。

在这里插入图片描述

将硬件连接到 ESP8266

我们可以使用 USB 到 TTL 转换器或使用 Arduino 对 ESP8266 进行编程。您可以遵循以下三种方法将代码上传到 ESP8266 — 选择最适合您的方法。请参阅每个图表的下图,并相应地设置硬件。
在这里插入图片描述

引脚排列成两行,每行有 4 个。有些型号在PCB上有pi n描述,这使得它变得简单。在顶行,您可以从左到右找到以下引脚:

  1. 接地(电源接地)
  2. GPIO2(数字 I/O 可编程)
  3. GPIO0 (数字 I/O 可编程,也用于引导模式)
  4. RX – UART 接收通道

在底部(第二行),您可以找到:

  1. TX – UART 传输通道
  2. CH_PD(使能/断电,必须直接或通过电阻上拉至3.3V)
  3. REST – 复位,必须拉至 3.3v)
  4. 可变电源-3.3V电源

电源和电流消耗

所有 esp8266 arduino 兼容模块必须由来自任何类型的直流电流供电,可以提供稳定的 3.3V 和至少 250mA.此外,逻辑信号的额定电压为3.3v,RX通道应由3.3V除数降压保护。将此模块与 Arduino 或其他提供 5v 的板一起使用时应小心,因为该模块通常不附带过功率保护,很容易损坏。

以下是乐鑫声明的功耗:

在这里插入图片描述

如果您打算在由电池或太阳能供电的项目中使用 ESP-01,它是必须了解有关 ESP8266 arduino 睡眠模式的所有信息。当前版本提供 3 种不同的睡眠模式,可以通过编程方式触发。ESP8266WiFi 库提供了调用睡眠模式的特定功能,这些函数可以采用设置参数,在唤醒后更改回调作业,例如在射频模块断电或打开的情况下醒来。

最重要的模式是DEEP_SLEEP,因为睡眠期间的功耗非常低。深度睡眠模式在以特定间隔进行数据记录并在测量之间空闲的项目中非常常见。

为了在使用 esp8266 arduino 兼容模块时利用此模式,ESP-01标准,您需要做一些解决方法并将 REST 引脚与 GPIO16 引脚连接(在默认的 6 个六针中不可用)。

这是一个示例

在这里插入图片描述

完成此连接后,您可以使用以下命令触发深度睡眠模式:

与 ESP-01 对话 (AT / LUA / Arduino)

ESP8266-01 为您提供了多种通过 RX/TX 引脚或空中 (OTA) 与其通信的方法。区别不仅在于硬件,还在于开箱即用的固件类型。无论默认安装什么固件,您都应该能够按照数据表中的固件刷新说明刷新首选固件。该模块可以使用LUA代码,Arduino代码或直接通过AT命令进行编程,这使我们在项目中嵌入此设备时具有更大的自由度。另外,很少有python固件模式,但我还没有机会测试它们。我个人选择与Arduino合作是因为过去的经验和可用库的音调。开箱即用,该模块已准备好通过 AT 命令进行通信,无需任何其他额外的设置或配置。有许多软件应用程序可用于通过AT进行通信,并具有现成的工具和功能的音调,这将使一切变得更容易。我使用了ESPlorer,我完全推荐它,你可以在这里找到它。启动后,为了能够使用 AT 命令,模块应在串行监视器上显示“就绪”。

几个基本的 AT 命令示例:

AT – 响应正常

AT+CWLAP – 列出附近可用的 WiFi 网络

AT+GMR – 检查固件版本

AT+CWJAP=“ ”,“” – 使用凭据加入 WiFi 网络

AT+CIFSR – 获取当前分配的 IP 地址

为了能够与 ESP8266 arduino 兼容模块通信,您需要选择一种将其与计算机连接的方式。您可以通过标准串行与模块通信

通过使用Arduino板作为代理/网桥进行通信RS232

Arduino Uno 与之前的所有主板的不同之处在于它不使用 FTDI USB 转串行驱动程序芯片。相反,它具有编程为USB到串行转换器的Atmega16U2(Atmega8U2至版本R2)。为了使用Arduino作为桥接器,首先您需要在其上加载一个空程序。完成此操作后,您需要建立以下连接才能工作:

在这里插入图片描述

注意图中接地引脚

UNOESP-01S
RXRX
TXTX
3.3V3.3V
GNDGND
RSTRST
CH_PD OR EN3.3V

之后,您应该能够通过选择Arduino的COM端口,设置适当的波特率,在串行监视器中查看数据并发送AT命令,默认值应为115200,并进行其他设置以读取“NL和CR,

当每个项目核心都需要可扩展时,每个嵌入式 DIY 或商业项目中的无线固件 (FOTA) 解决方案即使不是必需的功能,也是非常理想的功能。因此,通过Wi-Fi连接而不是串行从远程计算机上传代码的可能性在每个项目中都是一个很高的优势。首先,您需要FOTA需求先决条件。第一个固件上传需要通过串行完成,如果在程序中正确实现了 OTA 例程,则可以通过无线方式完成后续上传。

由于该模块需要无线暴露,因此存在被黑客入侵并加载恶意代码的机会。您可以通过设置自定义端口和密码来提高安全性。检查ArduinoOTA库中的功能,这些功能可以帮助您提高安全性。由于此过程的复杂性,我们将在以后的文章中介绍完整的故事,但现在请注意此选项存在并且效果很好。

将 esp8266 arduino 模块连接到计算机的另一种方法是使用 TTL 或 FTDI USB 转串行专用模块。市场上有很多,而且很便宜,但不要搞错,这里的质量确实很重要。如果最终使用便宜的,您可能会在使用它时遇到问题,因为连接和驱动程序兼容性的差异。

最常用的TTL / FTDI转换器芯片是CH340G,CP2102和FT232RL。我个人使用了前两个,加载程序时没有问题。需要完成以下连接:

ESP-01STTL/FTDI
RXTX
TXRX
VCC3.3V
GNDGND
RST3.3V/Float
CH_PD OR EN3.3V

我强烈建议您不要使用 TTL 3.3v 电源,因为它们中的大多数都无法提供足够的功率来处理 esp8266 arduino 兼容设备。此模块上使用的嵌入式稳压器不是最满意的选择,如果它不支持 ESP 窥视,您可能会遇到麻烦。如果您选择使用外部电源,请不要忘记设置公共接地以获得工作电路。

您可以找到 TX 额定值为 3.3v 的 TTL 模块,如果没有,您可以降低 TX 通道以保护您的 ESP-01 模块。您可以在下面看到 ESP-01 和 ESP-01 之间的接线方案

CP2102 包括一个接地的复位按钮,以及用于启动开关的 GPIO0。

在这里插入图片描述

下面是使用电阻的简单3.3v除数草图:

在这里插入图片描述

为了设置您的 Arduino IDE 以与您的 esp8266 arduino 兼容模块一起使用,您需要执行以下步骤:

  1. 将 ESP8266-01 模组连接到电脑

  2. 打开您的Arduino IDE。

  3. 转到文件 -> 首选项

  4. 将此链接添加到其他董事会经理

  5. 转到工具 - >板经理

  6. 找到 ESP8266 开发板套装并激活

  7. 从工具->板中选择通用 ESP8266 开发板

  8. 选择您的编程器COM端口

  9. 你准备好了!

在这里插入图片描述

现在,为了能够将程序下载到您的 ESP-01 模块,您首先需要将设备处于正确的引导模式(从UART下载代码)。ESP8266-01 具有以下开机模式:

MTDO / GPIO15GPIO0GPIO2ModeDescription
LLHUARTDownload code from UART
LHHFlashBoot from SPI Flash
HXXSDIOBoot from SD-card

在从UART下载代码中重置模块后,如果您使用的是正确的波特率,您应该会在串行监视器中看到一条包含“引导模式:[1,6]”的消息。错误的波特率设置将显示垃圾文本/字符或根本不显示任何内容。之后,您应该能够将草图上传到 ESP8266。上传完成后,模块应自行重置。不要忘记拉高GPI0,否则模块将再次进入下载模式,您将无法看到它工作。该模块可以随时通过将 REST 引脚拉至低电平来重新启动。每次重置后,它将遵循引导顺序和程序加载。

一旦在 Arduino IDE 中安装并激活了 ESP8266 板,您就可以在其中包含
所有 ESP WiFi 库和示例。最常用的库是 ESP8266WiFi 提供了许多实现示例,如 WiFiClient、WiFiServer、WiFiAccessPoint 等。你可以在互联网上找到很多项目示例,比如我就在 arduino.com 上找到了很多好点子, 我就在 arduino.cc projecthub 上找到了很多好点子。下面是一个简单的 Arduino 闪烁示例,您可以
您可以用它来测试带有内置 LED 的 esp 模块:

Arduino 闪烁示例

/*
ESP8266 Arduino Blink by Simon Peter
Blink the blue LED on the ESP-01 module
This example code is in the public domain
The blue LED on the ESP-01 module is connected to GPIO1
(which is also the TXD pin; so we cannot use Serial.print() at the same time)
Note that this sketch uses LED_BUILTIN to find the pin with the internal LED
ESP8266 Arduino 闪烁 作者:Simon Peter
闪烁 ESP-01 模块上的蓝色 LED 灯
本示例代码属于公共领域
ESP-01 模块上的蓝色 LED 连接到 GPIO1
(同时也是 TXD 引脚,因此我们不能同时使用 Serial.print())。
请注意,此草图使用 LED_BUILTIN 来查找内部 LED 的引脚
*/
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);  // Initialize the LED_BUILTIN pin as an output
}
// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, LOW);  // Turn the LED on (Note that LOW is the voltage level
  // but actually the LED is on; this is because
  // it is acive low on the ESP-01)
  delay(1000);                      // Wait for a second
  digitalWrite(LED_BUILTIN, HIGH);  // Turn the LED off by making the voltage HIGH
  delay(2000);                      // Wait for two seconds (to demonstrate the active low LED)
}

通过 WiFi 将数据发送到 data.spakfun.com 物联网平台

当然,之后您可以通过加载 ESP8266 Arduino WiFi 客户端示例程序来尝试更复杂的示例,该程序通过 WiFi 将数据发送到 data.spakfun.com 物联网平台:

/*
* This sketch sends data via HTTP GET requests to data.sparkfun.com service.
*
* You need to get streamId and privateKey at data.sparkfun.com and paste them
* below. Or just customize this script to talk to other HTTP servers.
* ESP8266 Arduino example
* 该草图通过 HTTP GET 请求向 data.sparkfun.com 服务发送数据。
*
* 您需要从 data.sparkfun.com 获取 streamId 和 privateKey,并将它们粘贴到下面。
* 粘贴到下面。或者自定义此脚本,以便与其他 HTTP 服务器通信。
* ESP8266 Arduino 示例
*/
#include <ESP8266WiFi.h>
const char* ssid = "your-ssid";
const char* password = "your-password";
const char* host = "data.sparkfun.com";
const char* streamId = "....................";
const char* privateKey = "....................";
void setup() {
  Serial.begin(115200);
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}
int value = 0;
void loop() {
  delay(5000);
  ++value;
  Serial.print("connecting to ");
  Serial.println(host);
  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }
  // We now create a URI for the request
  String url = "/input/";
  url += streamId;
  url += "?private_key=";
  url += privateKey;
  url += "&value=";
  url += value;
  Serial.print("Requesting URL: ");
  Serial.println(url);
  // This will send the request to the server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
  unsigned long timeout = millis();
  while (client.available() == 0) {
    if (millis() - timeout > 5000) {
      Serial.println(">>> Client Timeout !");
      client.stop();
      return;
    }
  }
  // Read all the lines of the reply from server and print them to Serial
  while (client.available()) {
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  Serial.println();
  Serial.println("closing connection");
}

ESP8266 Arduino Wifi 服务器示例程序

或者如果你需要在网络中做一个服务器,可以试试 ESP8266 Arduino Wifi 服务器示例程序:

/*
* This sketch demonstrates how to set up a simple HTTP-like server.
* The server will set a GPIO pin depending on the request
* http://server_ip/gpio/0 will set the GPIO2 low,
* http://server_ip/gpio/1 will set the GPIO2 high
* server_ip is the IP address of the ESP8266 Arduino module, will be
* printed to Serial when the module is connected.
*/
#include <ESP8266WiFi.h>
const char* ssid = "your-ssid";
const char* password = "your-password";
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);
void setup() {
  Serial.begin(115200);
  delay(10);
  // prepare GPIO2
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  // Start the server
  server.begin();
  Serial.println("Server started");
  // Print the IP address
  Serial.println(WiFi.localIP());
}
void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  // Wait until the client sends some data
  Serial.println("new client");
  while (!client.available()) {
    delay(1);
  }
  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();
  // Match the request
  int val;
  if (req.indexOf("/gpio/0") != -1)
    val = 0;
  else if (req.indexOf("/gpio/1") != -1)
    val = 1;
  else {
    Serial.println("invalid request");
    client.stop();
    return;
  }
  // Set GPIO2 according to the request
  digitalWrite(2, val);
  client.flush();
  // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE
             HTML
             >\r\n<html>\r\nGPIO is now ";
             s += (val) ? "high" : "low";
  s += "</html>\n";
  // Send the response to the client
  client.print(s);
  delay(1);
  erial.println("Client disonnected");
  // The client will actually be disconnected
  // when the function returns and 'client' object is detroyed
}

创建了托管 Web 服务器的 ESP8266 Arduino WiFi 接入点示例:

/* Create a WiFi access point and provide a web server on it.
ESP8266 Arduino example
创建一个 WiFi 接入点,并在其上提供网络服务器。
ESP8266 Arduino 示例
*/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
/* Set these to your desired credentials. */
const char *ssid = "ESPap";
const char *password = "thereisnospoon";
ESP8266WebServer server(80);
/* Just a little test message. Go to http://192.168.4.1 in a web browser
* connected to this access point to see it.
*/
void handleRoot() {
  server.send(200, "text/html", "<h1>You are connected</h1>");
}
void setup() {
  delay(1000);
  Serial.begin(115200);
  Serial.println();
  Serial.print("Configuring access point...");
  /* You can remove the password parameter if you want the AP to be open. */
  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  server.on("/", handleRoot);
  server.begin();
  Serial.println("HTTP server started");
}
void loop() {
  server.handleClient();
}

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

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

相关文章

自动化测试是什么?自动化测试学什么?自动化测试面试题及答案?--看完后吊打面试官

一、前言 最近有童鞋和我抱怨&#xff0c;说网上很难搜到那些全面又合适的自动化测试面试题&#xff0c;这里根据我个人的经验以及收集整理的&#xff1a; 你没看错&#xff0c;不慌&#xff0c;慢慢来。 先从什么是自动化测试开始说起哈&#xff01; 二、什么是自动化测试&…

点淘的MCN机构申请详细入驻指南!

消费趋势的变化&#xff0c;来自消费人群的变化。 后疫情时代&#xff0c;经济复苏的反弹力度不足&#xff0c;人们开始怀疑我们正从前几年的消费升级&#xff0c;跌入消费降级的时代&#xff0c;但这并不能准确概括消费市场的变化。 仔细翻看各大奢侈品集团的财报&#xff0…

Android高通8.1 Selinux问题

1、最近客户提了一个需求&#xff0c;说要在user版本上面切分辨率&#xff0c;默认屏幕分辨率是2.5 k 执行adb shell指令之后变成 4k 然后adb shell wm size可以查看 2、一开始我能想到就是在文件节点添加权限&#xff0c;这里不管是mtk还是qcom&#xff08;高通平台&#xff…

MySQL中用什么数据类型存IP地址

提到IP地址(IPv4)&#xff0c;我们脑子里肯定立马浮现类似于192.168.0.1、127.0.0.1这种常见的IP地址&#xff0c;然后结合这个问题“MySQL中用什么数据类型存IP地址&#xff1f;”&#xff0c;于是乎脱口而出用char字符串类型存储。 然后再仔细想想发现&#xff0c;这个IP地址…

揭秘程序员和技师的7大共同点,最后一点绷不住了

大家好&#xff0c;这里是程序员晚枫&#xff0c;周末朋友出去放松回来&#xff0c;给我分析了一下程序员和技师的7个相同点&#xff0c;尤其是最后一点让我彻底绷不住了&#xff01; 我也分享给大家。 1、都有工号。98号技师&#xff0c;380号技师大家都很熟悉了&#xff0c…

阿里云服务器手动搭建FTP教程(Windows操作系统)

阿里云百科介绍使用阿里云服务器搭建FTP教程&#xff0c;云服务器为Windows操作系统&#xff0c;当需要远程连接Windows实例进行文件传输时&#xff0c;可以通过搭建FTP站点实现。本文将介绍如何在Windows实例中搭建FTP站点。 目录 准备工作 步骤一&#xff1a;添加IIS以及F…

ssm亚盛汽车配件销售业绩管理统源码和论文PPT

ssm亚盛汽车配件销售业绩管理统源码和论文PPT007 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 研究的意义 汽车配件销售类企业近年来得到长足发展,在市场份额不断扩大同时…

震惊!有人使用C语言实现三子棋游戏~

大家好&#xff0c;欢迎观看Mr.kanglong的CSDN博客&#xff0c;今天和大家讨论的是如何使用C语言来实现三子棋游戏。相信大家儿时或多或少玩过三子棋游戏&#xff0c;那么怎么用C语言实现这样一个游戏呢&#xff1f;且听亢龙娓娓道来~ 目录 三子棋介绍 游戏效果 实现代码 gam…

AIGC技术揭秘:探索火热背后的原因与案例

文章目录 什么是AIGC技术&#xff1f;为何AIGC技术如此火热&#xff1f;1. 提高效率与创造力的完美结合2. 拓展应用领域&#xff0c;创造商业价值3. 推动技术创新和发展 AIGC技术案例解析1. 艺术创作&#xff1a;生成独特的艺术作品2. 内容创作&#xff1a;实时生成各类内容3. …

电流的测量(反馈电流表)

另一方面&#xff0c;反馈电流表使用不同的方法来产生电流测量&#xff08;见图 3&#xff09;。他们使用有源跨阻放大器将电流转换为电压读数。电压输出是电流输入的倒数乘以反馈电阻器 R F的值。 V输出 -I输入* R F 图 3. 反馈电流表方法使用有源跨阻放大器将电流转换为…

uniapp 用 hbuilderx下载 uview

uView2.0重磅发布&#xff0c;利剑出鞘&#xff0c;一统江湖 - DCloud 插件市场 1.uniapp官网下载资源 2按下载 3.官网安装文档 要按 这个红色圈错了 然后看他的配置步骤 第四easycom 就可以 不用配了

【正点原子STM32连载】 第二章 APM32简介摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第二…

LNMP环境介绍和搭建

一.LNMP简介 1.含义 2.工作原理 二.部署LNMP环境 1.Nginx环境 &#xff08;1&#xff09;上传nginx包&#xff0c;下载编译安装工具并解包到指定目录&#xff08;tar 参数 tar包 - C 目录路径&#xff09; &#xff08;2&#xff09; 开始编译安装&#xff0c;每次编译后…

钕铁硼永磁材料基本概念

目录 一、何为磁性材料二、永磁材料的主要性能三、永磁材料的历史四、永磁材料的分类五、钕铁硼永磁材料5.1 产业链5.2 生产工艺 之前也写过其他行业的一些生产过程和工艺流程&#xff0c;大家有兴趣的可以翻翻以前的文章。 一、何为磁性材料 参加过九年义务教育的同学应该都知…

类的组合

目录 一、什么是组合 二、为什么用组合 三、如何用组合 python从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129328397?spm1001.2014.3001.5502 一、什么是组合 组合就是一个类的对象具备某一个属性&#xff0c;该属性的值是指向另外…

LeetCode[1122]数组的相对排序

难度&#xff1a;Easy 题目&#xff1a; 给你两个数组&#xff0c;arr1 和 arr2&#xff0c;arr2 中的元素各不相同&#xff0c;arr2 中的每个元素都出现在 arr1 中。 对 arr1 中的元素进行排序&#xff0c;使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现…

从Spring源码看Spring如何解决循环引用的问题

Spring如何解决循环引用的问题 关于循环引用&#xff0c;首先说一个结论&#xff1a; Spring能够解决的情况为&#xff1a;两个对象都是单实例、且通过set方法进行注入。 两个对象都是单实例&#xff0c;通过构造方法进行注入&#xff0c;Spring不能进行循环引用问题&#x…

【果树农药喷洒机器人】Part7:静态PWM变量喷药实验

文章目录 一、引言二、静态PWM变量喷药实验2.1搭建喷药实验平台2.2变量喷药控制实验 一、引言 为综合评估所设计的果树喷药机器人变量喷药效率和质量&#xff0c;验证系统的控制性能和实际作业的可行性&#xff0c;本章开展果树变量喷药实验。首先&#xff0c;通过静态的PWM变…

x11 gtk qt gnome kde 之间的区别和联系

Linux 下的图形库介绍 一、Linux 图形领域的基础设施 1.1 X Window X Window从逻辑上分为三层&#xff1a;X Server、X Client和X协议。 最底层的X Server&#xff08;X服务器&#xff09;主要处理输入/输出信息并维护相关资源&#xff0c;它接受来自键盘、鼠标的操作并将…

CTF之逆向之阿里巴巴

题目地址&#xff1a;http://www.shiyanbar.com/ctf/13 题目预览&#xff1a; 解题过程&#xff1a; 1、下载附件发现是exe文件 2、使用PEid和Detect It Easy查壳 和 开发语言&#xff0c;发现没有加壳&#xff0c;都是用C#开发的 3、C#和Java Python属于解释型语言&#xff…