Serial.readString()和Serial.readStringUntil的区别
时间: 2024-03-28 12:03:11 浏览: 24
Serial.readString()和Serial.readStringUntil()都是Arduino中的串口通信函数,但是它们的区别在于读取的数据结束标志不同。
Serial.readString()函数会一直读取串口缓冲区中的数据,直到遇到字符串结束符(默认为换行符'\n')为止,然后将读取到的字符串返回。
而Serial.readStringUntil()函数则是读取串口缓冲区中的数据,直到遇到指定的结束标志(可以自定义)为止,然后将读取到的字符串返回。
因此,如果你知道你所要读取的数据以什么字符为结束标志,可以使用Serial.readStringUntil()函数,如果不知道数据的结束标志,可以使用Serial.readString()函数。
相关问题
帮我写一个用esp8266和1306显示B站粉丝的代码
好的,以下是用 ESP8266 和 1306 显示 B 站粉丝数量的代码。
首先,您需要在 B 站开发者平台上创建一个应用程序,并获取到您的应用程序的 App Key 和 App Secret。然后,您需要使用这些凭据来获取 B 站粉丝数量的 API 接口。
您可以使用以下代码来获取 B 站粉丝数量:
```c
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* host = "api.bilibili.com";
const char* endpoint = "/x/relation/stat?vmid=your_vmid&jsonp=jsonp";
const int httpsPort = 443;
void setup() {
Serial.begin(9600);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
Wire.begin(4, 5);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.display();
}
void loop() {
WiFiClientSecure client;
Serial.print("Connecting to ");
Serial.println(host);
if (!client.connect(host, httpsPort)) {
Serial.println("Connection failed");
return;
}
String requestUrl = String("GET ") + endpoint + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"User-Agent: BuildFailureDetectorESP8266\r\n" +
"Connection: close\r\n\r\n";
Serial.print("Requesting URL: ");
Serial.println(endpoint);
client.print(requestUrl);
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
break;
}
}
String response = client.readString();
client.stop();
Serial.println("Response:");
Serial.println(response);
int start = response.indexOf("follower\":") + 10;
int end = response.indexOf(",", start);
String followerCountString = response.substring(start, end);
int followerCount = followerCountString.toInt();
Serial.print("B站粉丝数量: ");
Serial.println(followerCount);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("B站粉丝数量:");
display.setTextSize(2);
display.setCursor(0, 10);
display.println(followerCount);
display.display();
delay(60000);
}
```
请将代码中的 `your_SSID` 和 `your_PASSWORD` 替换为您的 WiFi SSID 和密码。将 `your_vmid` 替换为您的 B 站用户 ID。
该代码使用 HTTPS 安全连接到 B 站 API 并提取粉丝数量。然后,它将粉丝数量显示在 1306 OLED 显示屏上。该代码将每分钟更新一次粉丝数量。
希望这可以帮助到您!
两个esp32 利用arduino互相通讯
两个ESP32之间可以通过串口通讯或者WiFi通讯进行互相通讯,下面分别介绍这两种方式的实现方法:
1. 串口通讯方式:
(1)在每个ESP32上安装Arduino IDE,并将它们连接到电脑上。
(2)打开Arduino IDE,选择Tools -> Board,选择ESP32 Dev Module。
(3)选择Tools -> Port,选择每个ESP32所连接的串口。
(4)在第一个ESP32上上传以下代码:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello from ESP32 1!");
delay(1000);
}
(5)在第二个ESP32上上传以下代码:
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
Serial.println(Serial.readString());
}
}
(6)在第二个ESP32的串口监视器中,可以看到第一个ESP32发送的消息。
2. WiFi通讯方式:
(1)在每个ESP32上安装Arduino IDE,并将它们连接到电脑上。
(2)打开Arduino IDE,选择Tools -> Board,选择ESP32 Dev Module。
(3)选择Tools -> Port,选择每个ESP32所连接的串口。
(4)在第一个ESP32上上传以下代码:
#include <WiFi.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
WiFiServer server(80);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (client) {
Serial.println("New client connected");
while (client.connected()) {
if (client.available()) {
String request = client.readStringUntil('\r');
Serial.println(request);
client.println("Hello from ESP32 1!");
}
}
Serial.println("Client disconnected");
}
}
(5)在第二个ESP32上上传以下代码:
#include <WiFi.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void loop() {
Serial.println("Sending request to ESP32 1");
WiFiClient client;
if (client.connect("ESP32_1_IP", 80)) {
Serial.println("Connected to server");
client.println("GET / HTTP/1.1");
client.println("Host: ESP32_1_IP");
client.println("Connection: close");
client.println();
while (client.connected()) {
if (client.available()) {
String response = client.readStringUntil('\r');
Serial.println(response);
}
}
client.stop();
} else {
Serial.println("Connection failed");
}
delay(5000);
}
(6)将代码中的“your_SSID”和“your_PASSWORD”替换为你的WiFi SSID和密码。
(7)将代码中的“ESP32_1_IP”替换为第一个ESP32的IP地址,可以在第一个ESP32的串口监视器中查看。
(8)在第二个ESP32的串口监视器中,可以看到第一个ESP32发送的消息。