Как отправлять и получать длинные данные HC-05 - PullRequest
1 голос
/ 06 октября 2019

У меня ESP8266 с модулем Bluetooth HC-05.

Мне нужно было отправить большие данные из ESP8266 в мое приложение для Android (беспроводное соединение).

Во-первых, HC-05 и ESP соединены вместеи напишите код в ESP8266 (как показано ниже).

Здесь я отправляю небольшие данные из ESP8266 в приложение для Android (например, «Терминал S2 для Bluetooth»).

Как я могу отправитьструктура данных (содержит несколько информации) из 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);
}

1 Ответ

0 голосов
/ 15 октября 2019

Вы можете преобразовать данные в массив char (byte), а затем отправить их с помощью той же команды, которую используете для отправки строки «Терминал S2 для Bluetooth».

Так что в настоящее время вы делаете что-то вродеSerial.write («терминал S2 для Bluetooth»);

Вы можете отправлять несколько частей информации, используя (упакованную) структуру. Упакованный означает, что компилятор не вставляет дополнительные байты для выравнивания.

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));
...