Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
at_device
at_socket
at_device发送数据的问题
发布于 2024-06-04 10:37:40 浏览:439
订阅该版
[tocm] # 🔧硬件配置: STM32F407ZGT6 中移物联网 ML307A-DCLN 4G模块 # 🧾软件环境: RT-Thread Studio [2.2.6] rt-thread [4.0.3] at_device [latest] fal [v1.0.0] ota_downloader [latest] webclient [v2.2.0] # 🧷软件包配置: [软件包配置](https://club.rt-thread.org/ask/question/d290ec18cffcecbf.html "软件包配置")[与此链接中的配置相同] # 💡目前方案: - 在使用这个初始化时,可以进行数据收发,但是`ifconfig`和`ping`命令不正常。 ```c at_client_init(ML307_SAMPLE_CLIENT_NAME, ML307_SAMPLE_RECV_BUFF_LEN); // ML307A客户端初始化 ML307A_connect_tcp(); // 连接TCP服务端 at_set_urc_table(urc_table, sizeof(urc_table) / sizeof(urc_table[0])); // URC 数据列表初始化 ``` 打印日志如图 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240604/12d859a237f83dba8f3006cb625620af.png) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240604/eaa031c91e417a99f609e0fef4b097d2.png) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240604/3d7edd186699288974be58580c7896d1.png) - 在使用这个初始化时,`ifconfig`和`ping`命令正常,但无法进行数据收发。 ```c static int ml307_device_register(void) { struct at_device_ml307 *ml307 = &ml3070; at_device_register(&(ml307->device), ml307->device_name, ml307->client_name, AT_DEVICE_CLASS_ML307, (void *) ml307); } int ML307A_Init(void) { ml307_device_register(); // ML307A客户端初始化 ML307A_connect_tcp(); // 连接TCP服务端 at_set_urc_table(urc_table, sizeof(urc_table) / sizeof(urc_table[0])); // URC 数据列表初始化 // return RT_EOK; } ``` ```c int ML307A_connect_tcp(void) { at_response_t resp = RT_NULL; at_client_t client = RT_NULL; const char *line_buffer = RT_NULL; at_client_init("uart2", 512); client = at_client_get("uart2"); /* 创建响应结构体,设置最大支持响应数据长度为 512 字节,响应数据行数无限制,超时时间为5 秒 */ resp = at_create_resp(512, 0, rt_tick_from_millisecond(Response_Timeout)); if (!resp) { LOG_E("No memory for response structure!"); return -RT_ENOMEM; } // if (at_exec_cmd(resp, "AT+MIPCLOSE=0") != RT_EOK) //发送AT指令 if (at_obj_exec_cmd(client, resp, "AT+MIPCLOSE=0") != RT_EOK) //发送AT指令 { LOG_E("Error! TCP has been disconnected"); // TCP已经断开连接,无需重复操作 } else { LOG_D("TCP Disconnect"); // TCP断开连接 } if (at_obj_exec_cmd(client, resp, "AT+MIPCLOSE=1") != RT_EOK) //发送AT指令 { LOG_E("Error! UDP has been disconnected"); // UDP已经断开连接,无需重复操作 } else { LOG_D("UDP Disconnect"); // UDP断开连接 } rt_thread_delay(300); /* 发送 AT 命令并接收 AT Server 响应数据,数据及信息存放在 resp 结构体中并打印出来 */ // if (at_exec_cmd(resp, "AT+MIPOPEN=0,\"TCP\",\"%s\",%s,120,0",tcp_server,port) != RT_EOK) //发送AT指令 if (at_obj_exec_cmd(client, resp, "AT+MIPOPEN=0,\"TCP\",\"%s\",%s,120,0",tcp_server,port) != RT_EOK) //发送AT指令 { LOG_E("Error!"); } else { for (rt_size_t line_num = 1; line_num <= resp->line_counts; line_num++) //将回应的数据打印出来 { if ((line_buffer = at_resp_get_line(resp, line_num)) != RT_NULL) { LOG_D("line%d Response buf: %s",line_num, line_buffer); } else { LOG_E("Parse line buffer error!"); } } } /* 命令发送成功 */ LOG_D("AT Client send commands to AT Server success!"); /* 删除响应结构体 */ at_delete_resp(resp); return RT_EOK; } ``` 打印日志如图 这个地址8.135.10.183才是我发送数据的目标地址。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240604/45725da12b1a8ebcb55edabadd613261.png) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240604/ae630b86e4bc3a70cdb8efed2bb74324.png) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240604/6b4ad3564cb73f0f54ff145a0583cd13.png) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240604/6d9dfbd96d297197a3b3325131bfda1e.png) # 🔎其他程序: *发送数据程序* ```c static int ML307A_Send_Common(const Equipment_Val_t *cmd, const char *fmt, ...) { at_response_t resp = RT_NULL; at_client_t client = RT_NULL; const char *line_buffer = RT_NULL; va_list args; at_client_init("uart2", 512); client = at_client_get("uart2"); /* 创建响应结构体,设置最大支持响应数据长度为 512 字节,响应数据行数无限制,超时时间为5 秒 */ resp = at_create_resp(512, 0, rt_tick_from_millisecond(Response_Timeout)); if (!resp) { LOG_E("No memory for response structure!"); return -RT_ENOMEM; } /* 使用可变参数列表构造发送数据 */ va_start(args, fmt); char send_data[strlen(cmd->cmd_str) + sizeof("{\"DeviceID\":\"%s\",\"%s\":\"%s\"}") + 32]; // 确保send_data足够大,能容纳格式化后的字符串 vsprintf(send_data, fmt, args); va_end(args); /* 发送 AT 命令并接收 AT Server 响应数据,数据及信息存放在 resp 结构体中并打印出来 */ char send_buf[strlen(send_data)]; // 确保send_buf足够大,能容纳最终的AT命令字符串 sprintf(send_buf, "AT+MIPSEND=0,%u,\"%s\"", (uint16_t)strlen(send_data), send_data); // if (at_exec_cmd(resp, "%s", send_buf) != RT_EOK) //发送AT指令 if (at_obj_exec_cmd(client, resp, "%s", send_buf) != RT_EOK) //发送AT指令 { LOG_E("error!"); } else { for (rt_size_t line_num = 1; line_num <= resp->line_counts; line_num++) //将回应的数据打印出来 { if ((line_buffer = at_resp_get_line(resp, line_num)) != RT_NULL) { LOG_D("line%d Response buf: %s", line_num, line_buffer); } else { LOG_E("Parse line buffer error!"); } } } /* 命令发送成功 */ LOG_D("AT Client send commands to AT Server success!"); /* 删除响应结构体 */ at_delete_resp(resp); return RT_EOK; } ``` # ❓问题总结: 🤦♂️造成这种现象,是因为我的发送数据的函数不对吗?还是说网络连接的问题呢?我该如何修改程序,使其能够正常进行`ifconfig`和`ping`命令,并且能够进行收发数据呢?
查看更多
1
个回答
默认排序
按发布时间排序
Jack_____
2024-06-05
纸上得来终觉浅,绝知此事要躬行。
### 顶一下😮
撰写答案
登录
注册新账号
关注者
0
被浏览
439
关于作者
Jack_____
纸上得来终觉浅,绝知此事要躬行。
提问
13
回答
25
被采纳
5
关注TA
发私信
相关问题
1
【结贴】at_device软件包中对串口接收数据缺少判断导致数据接收异常
2
at client总是出现hardfault?
3
AT组件连接BC26并使用Webclient软件包解析数据错误。URC问题
4
sim800c 为什么最后不用释放rt_free(recv_buf);
5
at_device sim7600ce 为什么可以自动识别运营商的类型
6
调试bc26 ,断言错误failed at rt_thread_timeout
7
AT 组件无法正确解析数据
8
有没有大神成功基于AT_Device移植ATK-GM510到RT-thread
9
ntp服务器无法同步问题
10
柿饼M3用at_device来驱动EC200通讯时rt_free断言
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RT-Thread】【ci】【scons】将ci.attachconfig.yml和scons结合使用
2
Rt-thread中OTA下载后,bootloader不搬程序
3
ulog 日志 LOG_HEX 输出时间改为本地日期时间
4
在RT-Thread Studio中构建前执行python命令
5
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
8
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
9
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
RTT_逍遥
3
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
4
次点赞
Ghost_Girls
1
篇文章
7
次点赞
xiaorui
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部