完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
环境:
SDK版本:esp-iot-solution-master 使用例程:usb_cdc_4g_module 4G模块:Air780E 现象: 一、在PC上调试4G模块,通过AT指令连接TCP服务器、发送数据正常。其发送数据需要三步: 步骤1:发送AT指令:AT+CIPSEND //返回大于号“>” 步骤2:发送数据:xxx 步骤3:启动发送:0x1a 二、esp32开发板调试4G模块,运行usb_cdc_4g_module例程, wifi上网功能正常。 向指定的TCP服务器发送数据,修改如下: 1、正常连网后,使用_ppp_network_stop(dte)函数,将模式由PPP切换到命令行模式 2、连接TCP服务器:可正常返回OK,tcp服务器端也显示“已连接” esp_modem_dce_generic_command(s_dce, "AT+CIPSTART="TCP","112.125.89.8",42539r", MODEM_COMMAND_TIMEOUT_DEFAULT,my_handle_CIPSTART, NULL); 3、发送AT+CIPSEND指令:可正常返回大于号“>” esp_modem_dce_generic_command(s_dce, "AT+CIPSENDr", MODEM_COMMAND_TIMEOUT_DEFAULT, my_handle_CIPSEND, NULL); 问题: 上面的AT命令都可正常发送、响应,但纯数据部分如何发送?如发送“123456”,先后尝试过两种方法都不成功 int8_t end = 0x1a; 方法1:把数据当AT指令发,显然不行,会提示超时 esp_modem_dce_generic_command(s_dce, "123456", MODEM_COMMAND_TIMEOUT_DEFAULT, NULL, NULL); esp_modem_dce_generic_command(s_dce, (const char *)(&end), MODEM_COMMAND_TIMEOUT_DEFAULT, NULL, NULL); 打印日志: [0;31mE (33175) esp-modem-dte: esp_modem_dte_send_cmd(266): process command timeout [0m [0;33mW (33175) esp_modem_dce: esp_modem_dce_generic_command(22): Command:123456 response timeout [0m 方法2:使用发送数据函数,没有任何提示。tcp服务器端接收不到数据 s_dce->dte->send_data(s_dce->dte, "123456", 6); s_dce->dte->send_data(s_dce->dte, (const char *)(&end), 1); |
|
相关推荐
1个回答
|
|
根据您的描述,您已经可以在PC上通过AT指令向TCP服务器发送数据,并且在ESP32开发板上使用usb_cdc_4g_module例程实现了WiFi上网功能。现在您希望在ESP32开发板上实现向指定TCP服务器发送数据。以下是实现这一功能的步骤:
1. 确保您的ESP32开发板已经连接到4G模块,并正确配置了相关参数。 2. 在您的代码中,首先确保已经包含了必要的头文件和初始化了4G模块。例如: ```c #include "esp_log.h" #include "driver/uart.h" #include "usb_cdc_4g_module.h" #define EXAMPLE_UART_NUM (UART_NUM_2) #define EXAMPLE_TASK_PRIORITY (5) #define EXAMPLE_TASK_STACK_SIZE (2048) #define EXAMPLE_RECV_BUFF_SIZE (1024) static const char *TAG = "example"; ``` 3. 初始化4G模块: ```c void app_main(void) { // 初始化4G模块 usb_cdc_4g_module_init(EXAMPLE_UART_NUM, EXAMPLE_TASK_PRIORITY, EXAMPLE_TASK_STACK_SIZE, EXAMPLE_RECV_BUFF_SIZE); } ``` 4. 连接到TCP服务器: ```c // 连接TCP服务器 char *server_ip = "服务器IP"; int server_port = 服务器端口号; if (usb_cdc_4g_module_connect_tcp(server_ip, server_port) == ESP_OK) { ESP_LOGI(TAG, "Connected to TCP server successfully."); } else { ESP_LOGE(TAG, "Failed to connect to TCP server."); } ``` 5. 发送数据到TCP服务器: ```c // 准备要发送的数据 char *data_to_send = "要发送的数据"; // 发送数据 if (usb_cdc_4g_module_send_data(data_to_send, strlen(data_to_send)) == ESP_OK) { ESP_LOGI(TAG, "Data sent successfully."); } else { ESP_LOGE(TAG, "Failed to send data."); } ``` 6. 断开与TCP服务器的连接: ```c // 断开连接 if (usb_cdc_4g_module_close_tcp() == ESP_OK) { ESP_LOGI(TAG, "Disconnected from TCP server successfully."); } else { ESP_LOGE(TAG, "Failed to disconnect from TCP server."); } ``` 7. 在您的代码中调用这些函数,实现向指定TCP服务器发送数据的功能。 请注意,这里的代码示例仅供参考,您可能需要根据您的实际需求和环境进行调整。希望这些步骤能帮助您实现在ESP32开发板上使用usb_cdc_4g_module向TCP服务器发送数据的功能。 |
|
|
|
只有小组成员才能发言,加入小组>>
1123 浏览 1 评论
574浏览 6评论
477浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
461浏览 5评论
462浏览 4评论
435浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 12:01 , Processed in 0.824901 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号