首先,我通过 SPI 协议获取数据,然后将这些数据发送到 android。但问题是向 android 发送数据需要一些时间(毫秒),然后通过 SPI 获取的数据在数组索引中不匹配。
/*********************************************************************************/
#include <ESP32SPISlave.h>
#include <WiFi.h>
ESP32SPISlave slave;
#define StatusLED 27
const char* ssid = "YOUR_ID";
const char* password = "YOUR_PASSWORD";
WiFiServer server(80);
IPAddress local_IP(192,168,3,14);
IPAddress gateway(192,168,3,5);
IPAddress subnet(255,255,255,0);
static constexpr uint32_t BUFFER_SIZE {10};
uint8_t spi_slave_tx_buf[BUFFER_SIZE];
uint8_t spi_slave_rx_buf[BUFFER_SIZE];
uint8_t spi_slave_rx_Localbuf[BUFFER_SIZE];
uint32_t Client_buf[4];
bool WIFI_Flag;
byte count = 0;
void setup() {
Serial.begin(115200);
delay(2000);
// LED init
pinMode(StatusLED, OUTPUT);
// HSPI = CS: 15, CLK: 14, MOSI: 13, MISO: 12 -> default
// VSPI = CS: 5, CLK: 18, MOSI: 23, MISO: 19
slave.setDataMode(SPI_MODE0);
slave.begin();
// clear buffers
memset(spi_slave_tx_buf, 0, BUFFER_SIZE);
memset(spi_slave_rx_buf, 0, BUFFER_SIZE);
// We start by connecting to a WiFi network
Serial.print("Setting AP (Access Point)…");
Serial.println(WiFi.softAPConfig(local_IP,gateway,subnet)?"Ready" : "Failed!");
//*server = start_webserver();
Serial.print("Starting Access Point)…");
Serial.println( WiFi.softAP(ssid, password)?"Ready" : "Failed!");
Serial.print("AP IP address: ");
Serial.println(WiFi.softAPIP());
server.begin();
}
void loop() {
// Switch OFF LED
// Switch ON LED
digitalWrite(StatusLED, HIGH); // turn the LED on (HIGH is the voltage level)
if (slave.remained() == 0) {
slave.queue(spi_slave_rx_buf, spi_slave_tx_buf, BUFFER_SIZE);
}
// if transaction has completed from master,
// available() returns size of results of transaction,
// and buffer is automatically updated
if (slave.available()) {
// Switch ON LED
digitalWrite(StatusLED, LOW); // turn the LED off (LOW is the voltage level)
if(count != 0)
{
switch(count)
{
case 1: {Client_buf[0] = spi_slave_rx_buf[0]; break;}
case 2: {Client_buf[0] |= spi_slave_rx_buf[0] << 8; break;}
case 3: {Client_buf[1] = spi_slave_rx_buf[0]; break;}
case 4: {Client_buf[1] |= spi_slave_rx_buf[0] << 8; break;}
case 5: {Client_buf[2] = spi_slave_rx_buf[0]; break;}
case 6: {Client_buf[2] |= spi_slave_rx_buf[0]<<8; break;}
case 7: {Client_buf[3] = spi_slave_rx_buf[0]; break;}
case 8: {Client_buf[3] |= spi_slave_rx_buf[0]<<8; WIFI_Flag = 1; break;}
}
}
count++;
slave.pop();
}
if(WIFI_Flag)
{
WiFiClient client = server.available();
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("");
client.print(Client_buf[0]);
client.print(",");
client.print(Client_buf[1]);
client.print(",");
client.print(Client_buf[2]);
client.print(",");
client.print(Client_buf[3]);
WIFI_Flag = 0;
count = 0;
}
}
/*********************************************************************************/
我试图修复数组索引中的数据不匹配,但我无法解决这个问题。那么,你能帮我解决这个问题吗