我有带HC-05蓝牙模块的ESP8266。
我需要将ESP8266的大数据发送到我的Android应用(无线)。
首先将HC-05和ESP连接在一起,并在ESP8266中编写代码(如下所示)。
在这里,我从ESP8266向Android应用发送了一些小数据(例如“用于蓝牙的S2终端”)。
如何从ESP8266发送结构数据(包含多个信息)? 请给我一些例子
谢谢。
#include "BluetoothSerial.h" //Header File for Serial Bluetooth, will be added by default into Arduino
BluetoothSerial ESP_BT; //Object for Bluetooth
int incoming;
int LED_BUILTIN = 2;
void setup() {
Serial.begin(9600); //Start Serial monitor in 9600
ESP_BT.begin("ESP32_LED_Control"); //Name of your Bluetooth Signal
Serial.println("Bluetooth Device is Ready to Pair");
pinMode (LED_BUILTIN, OUTPUT);//Specify that LED pin is output
}
void loop() {
if (ESP_BT.available()) //Check if we receive anything from Bluetooth
{
incoming = ESP_BT.read(); //Read what we recevive
Serial.print("Received:"); Serial.println(incoming);
if (incoming == 49)
{
digitalWrite(LED_BUILTIN, HIGH);
ESP_BT.println("LED turned ON");
}
if (incoming == 48)
{
digitalWrite(LED_BUILTIN, LOW);
ESP_BT.println("LED turned OFF");
}
}
delay(20);
}
答案 0 :(得分:0)
您可以将数据转换为char(字节)数组,然后使用与发送字符串“用于蓝牙的S2终端”相同的命令进行发送。
所以目前您正在做Serial.write(“ S2蓝牙终端”);
您可以使用(打包的)结构发送多条信息。压缩意味着编译器不会插入任何多余的字节以进行对齐。
typedef struct {
int data_num_a;
int data_num_b;
char[32] data_str_c;
char[32] data_str_d;
} __attribute__((__packed__))data_msg_t;
因此,这是使用此方法发送数据的方式:
data_msg_t my_message;
my_message.data_num_a = 1234;
my_message.data_num_b = 5678;
memcpy(my_message.data_str_c, "String of up to 32 characters", 32);
memcpy(my_message.data_str_d, "other string", 32);
Serial.write((char*)&my_message, sizeof(my_message));