Browse Source

esp32透传(PC通过UART下发JSON给客户端,客户端再通过蓝牙发送给服务端)

master
zwsd 3 years ago
parent
commit
d7a1273043
  1. 4
      main/ble_spp_client_demo.c
  2. 4
      main/ble_spp_client_demo.h
  3. 6
      main/key.c
  4. 2
      main/key.h
  5. 2
      main/main.c

4
main/ble_spp_client_demo.c

@ -693,14 +693,14 @@ void ble_init()
spp_uart_init(); spp_uart_init();
} }
void ble_gattc_write_char_cb(char* string)
void ble_gattc_write_char_cb(char *string, uint8_t string_length)
{ {
if ((is_connect == true) && (db != NULL) && ((db + SPP_IDX_SPP_DATA_RECV_VAL)->properties & (ESP_GATT_CHAR_PROP_BIT_WRITE_NR | ESP_GATT_CHAR_PROP_BIT_WRITE))) if ((is_connect == true) && (db != NULL) && ((db + SPP_IDX_SPP_DATA_RECV_VAL)->properties & (ESP_GATT_CHAR_PROP_BIT_WRITE_NR | ESP_GATT_CHAR_PROP_BIT_WRITE)))
{ {
esp_ble_gattc_write_char(spp_gattc_if, esp_ble_gattc_write_char(spp_gattc_if,
spp_conn_id, spp_conn_id,
(db + SPP_IDX_SPP_DATA_RECV_VAL)->attribute_handle, (db + SPP_IDX_SPP_DATA_RECV_VAL)->attribute_handle,
strlen(string),
string_length,
(uint8_t *)string, (uint8_t *)string,
ESP_GATT_WRITE_TYPE_RSP, ESP_GATT_WRITE_TYPE_RSP,
ESP_GATT_AUTH_REQ_NONE); ESP_GATT_AUTH_REQ_NONE);

4
main/ble_spp_client_demo.h

@ -22,7 +22,7 @@ enum
SPP_IDX_SPP_DATA_RECV_VAL, SPP_IDX_SPP_DATA_RECV_VAL,
// SPP_IDX_SPP_COMMAND_VAL,
// SPP_IDX_SPP_COMMAND_VAL,
#ifdef SUPPORT_HEARTBEAT #ifdef SUPPORT_HEARTBEAT
SPP_IDX_SPP_HEARTBEAT_VAL, SPP_IDX_SPP_HEARTBEAT_VAL,
@ -33,4 +33,4 @@ enum
}; };
void ble_init(); void ble_init();
void ble_gattc_write_char_cb();
void ble_gattc_write_char_cb(char *string, uint8_t string_length);

6
main/key.c

@ -22,21 +22,23 @@ void key_schedule()
if (gpio_get_level(KEY_REC) == 0) if (gpio_get_level(KEY_REC) == 0)
{ {
/* code */ /* code */
char *send_string = "{ \"order\": \"setPosition\", \"index\": 0, \"speedLevel\": 0, \"position\": 360, \"direction\": 1 }";
ESP_LOGI("Finny", "KEY_REC level 0"); ESP_LOGI("Finny", "KEY_REC level 0");
while (gpio_get_level(KEY_REC) == 0) while (gpio_get_level(KEY_REC) == 0)
{ {
} }
s_ble_gattc_write_char_cb("{ \"order\": \"setPosition\", \"index\": 0, \"speedLevel\": 0, \"position\": 180, \"direction\": 1 }");
s_ble_gattc_write_char_cb(send_string, strlen(send_string));
ESP_LOGI("Finny", "stop"); ESP_LOGI("Finny", "stop");
} }
if (gpio_get_level(KEY_MODE) == 0) if (gpio_get_level(KEY_MODE) == 0)
{ {
char *send_string = "{ \"order\": \"setPosition\", \"index\": 0, \"speedLevel\": 0, \"position\": 360, \"direction\": 1 }";
/* code */ /* code */
ESP_LOGI("Finny", "KEY_MODE level 0"); ESP_LOGI("Finny", "KEY_MODE level 0");
while (gpio_get_level(KEY_MODE) == 0) while (gpio_get_level(KEY_MODE) == 0)
{ {
} }
s_ble_gattc_write_char_cb("{ \"order\": \"setPosition\", \"index\": 0, \"speedLevel\": 0, \"position\": 360, \"direction\": 1 }");
s_ble_gattc_write_char_cb(send_string, strlen(send_string));
ESP_LOGI("Finny", "stop"); ESP_LOGI("Finny", "stop");
} }
} }

2
main/key.h

@ -7,7 +7,7 @@
#define KEY_MODE 39 #define KEY_MODE 39
#define GPIO_KEY_INPUT_PIN_SEL ((1ULL << KEY_REC) | (1ULL << KEY_MODE)) #define GPIO_KEY_INPUT_PIN_SEL ((1ULL << KEY_REC) | (1ULL << KEY_MODE))
typedef void (*key_ble_cb_t)(char* string);
typedef void (*key_ble_cb_t)(char *string, uint8_t string_length);
void key_init(); void key_init();
void key_schedule(); void key_schedule();

2
main/main.c

@ -45,7 +45,7 @@ void pc_uart_receive(uart_port_t uart_num)
if (length != 0) if (length != 0)
{ {
length = uart_read_bytes(uart_num, rx_data_buffer, length, 100); length = uart_read_bytes(uart_num, rx_data_buffer, length, 100);
uart_write_bytes(UART_NUM_2, rx_data_buffer, length);
ble_gattc_write_char_cb((char *)rx_data_buffer, length);
} }
} }

Loading…
Cancel
Save