Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
EC20 API接口问题请教
发布于 2019-11-11 15:09:54 浏览:2427
订阅该版
[I/sal.skt] Socket Abstraction Layer initialize success. [I/at.clnt] AT client(V1.2.0) on device uart3 initialize success. [D/at.ec20] Start initializing the EC20 module msh />[D/at.ec20] Baudrate 115200 [D/at.ec20] [D/at.ec20] Quectel [D/at.ec20] EC20F [D/at.ec20] Revision: EC20CEFAGR06A10M4G [D/at.ec20] [D/at.ec20] Signal strength: 30 Channel bit error rate: 99 [D/at.ec20] GSM network is registered (0,1) [D/at.ec20] GPRS network is registered (0,1) [I/at.ec20] CHINA MOBILE [I/at.ec20] 10.183.61.4 [D/at.ec20] EC20 IEMI number: 867394043406528 [D/at.ec20] EC20 IP address: 10.183.61.4 [D/at.ec20] EC20 primary DNS server address: 211.136.17.107 [D/at.ec20] EC20 secondary DNS server address: 211.136.20.203 [I/at.ec20] AT network initialize success! 如上所示,使用RTT加AT组件已经配对成功,通信OK,但是有个尴尬的问题是不知道怎么发送数据到相应的服务器端口,API 没有找到。不知道是哪个。查看AT组件API也没有举例说明。有点懵逼,我现在就想问一下,发送到远端的服务器应该调用哪个,接收函数应该调用哪个?
查看更多
22
个回答
默认排序
按发布时间排序
ROG
2019-11-11
这家伙很懒,什么也没写!
AT版本使用的是V1.6
ROG
2019-11-11
这家伙很懒,什么也没写!
老大们,不会又是用的linux那一套东西吧。直接调用socket()函数就行。高速我,让我死心
aozima
2019-11-11
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
不太明白楼主的意思 socket接口不好吗? 对了,socket并不是linux的哈,全名是 BSD Socket
ROG
2019-11-11
这家伙很懒,什么也没写!
>不太明白楼主的意思 > >socket接口不好吗? --- 我知道啊。只是单片机上用scoket函数有点怪怪的。 我上面想表达的意思是:嗯~直接上代码吧,我在程序里面加入了AT组件,版本是1.6的,下端接入的是4G通信模块,使用串口。 我在main函数里面加入了如下内容。 int sock = socket(AF_AT, SOCK_STREAM, 0); struct sockaddr_in serv_addr; rt_memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); serv_addr.sin_port = htons(1234); connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); char str[] = "Hello World!"; write(sock, str, sizeof(str)); close(sock); 既然官方文档支持socket,不知这样操作可以不,我现在没有远程服务器,只能猜测,所以想问一下
ramboxin
2019-12-09
这家伙很懒,什么也没写!
你好,搞定了吗?我也是同样问题?
ramboxin
2019-12-09
这家伙很懒,什么也没写!
悬赏回复
ROG
2019-12-11
这家伙很懒,什么也没写!
>你好,搞定了吗?我也是同样问题? --- 使用linux的那套socket机制
ROG
2019-12-11
这家伙很懒,什么也没写!
>悬赏回复 --- ``` /* * Copyright (c) 2006-2019, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2019-07-09 MurphyZhao first version */ #include
#include
#include
#include
#include
#ifdef NB_TCP_DEMO #ifdef RT_USING_SAL #include
#include
#include "sal_tls.h" #include "sys/time.h" #else #include "lwip/sockets.h" #include "lwip/netdb.h" #include "lwip/sys.h" #include "lwip/inet.h" #endif /* RT_USING_SAL */ #define LOG_TAG "demo.tcp" #define LOG_LVL LOG_LVL_DBG #include
#define TCP_TEST_HOST "www.rt-thread.com" #define TCP_TEST_PORT (80u) #define TEST_BUFSZ (1024u) static const char *req_data = "GET /service/rt-thread.txt HTTP/1.1\r\n" "Host: www.rt-thread.com\r\n" "User-Agent: rtthread/4.0.1 rtt\r\n\r\n"; static char req_uri[128]; static int req_port; static void nb_tcp_demo(int argc, char** argv) { int ret; int sock = -1; struct hostent *host; struct sockaddr_in server_addr; int bytes_received; char *recv_data; char ip_addr_buf[64]; if ((argc != 1) && (argc != 3)) { LOG_E("In param error"); LOG_I("cmd: demo_tcp [
]"); LOG_I("eg: demo_tcp"); LOG_I(" demo_tcp 127.0.0.1 8080"); return; } rt_memset(req_uri, 0x0, sizeof(req_uri)); if (argc == 3) { rt_strncpy(req_uri, argv[1], rt_strlen(argv[1])); req_port = atoi(argv[2]); } else { rt_strncpy(req_uri, TCP_TEST_HOST, rt_strlen(TCP_TEST_HOST)); req_port = TCP_TEST_PORT; } LOG_I("TCP demo start"); LOG_I("Host:%s; Port:%d", req_uri, req_port); LOG_D("will gethostbyname..."); host = gethostbyname(req_uri); if (!host) { LOG_E("gethostbyname failed!"); return; } LOG_I("gethostbyname pass. ip addr: %s", inet_ntoa_r(*((struct in_addr *)host->h_addr_list[0]), ip_addr_buf, sizeof(ip_addr_buf))); recv_data = rt_calloc(1, TEST_BUFSZ); if (recv_data == RT_NULL) { LOG_E("calloc failed. No memory!"); return; } if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { LOG_E("Create socket failed!"); goto __exit; } server_addr.sin_family = AF_INET; server_addr.sin_port = htons(req_port); server_addr.sin_addr = *((struct in_addr *)host->h_addr); rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero)); if ((ret = connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr))) < 0) { LOG_E("Connect <%d> fail! ret:%d", sock, ret); goto __exit; } LOG_I("connect <%s> success", ip_addr_buf); ret = send(sock, req_data, strlen(req_data), 0); if (ret <= 0) { LOG_E("send error, will close the socket <%d>.", sock); goto __exit; } LOG_I("send success"); bytes_received = recv(sock, recv_data, TEST_BUFSZ - 1, 0); if (bytes_received <= 0) { LOG_E("receive error, will close the socket <%d>.", sock); goto __exit; } LOG_I("received data:\n"); for (int i = 0; i < bytes_received; i++) { rt_kprintf("%c", recv_data[i]); } rt_kprintf("\r\n"); __exit: if (recv_data) rt_free(recv_data); if (sock >= 0) { closesocket(sock); sock = -1; } LOG_I("TCP demo end"); } #ifdef FINSH_USING_MSH #include
MSH_CMD_EXPORT_ALIAS(nb_tcp_demo, demo_tcp, nbiot tcp test); #endif /* FINSH_USING_MSH */ #endif /* NB_TCP_DEMO */ ```
ROG
2019-12-11
这家伙很懒,什么也没写!
> --- ``` /* * Copyright (c) 2006-2019, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2019-07-09 MurphyZhao first version */ #include
#include
#include
#include
#include
#ifdef NB_UDP_DEMO #ifdef RT_USING_SAL #include
#include
#include "sal_tls.h" #include "sys/time.h" #else #include "lwip/sockets.h" #include "lwip/netdb.h" #include "lwip/sys.h" #include "lwip/inet.h" #endif /* RT_USING_SAL */ #define LOG_TAG "demo.udp" #define LOG_LVL LOG_LVL_DBG #include
#define TCP_TEST_HOST "114.116.144.151" #define TCP_TEST_PORT (2010u) #define TEST_BUFSZ (1024u) static const char *req_data = "This message is from NB-IOT UDP Client with RT-Thread.\n"; static char req_uri[128]; static int req_port; static void nb_udp_demo(int argc, char** argv) { int ret; int sock = -1; struct hostent *host; struct sockaddr_in server_addr; char *recv_data; int bytes_received; char ip_addr_buf[64]; LOG_I("UDP demo start"); if ((argc != 1) && (argc != 3)) { LOG_E("In param error"); LOG_I("cmd: demo_udp [
]"); LOG_I("eg: demo_udp"); LOG_I(" demo_udp 127.0.0.1 8080"); return; } rt_memset(req_uri, 0x0, sizeof(req_uri)); if (argc == 3) { rt_strncpy(req_uri, argv[1], rt_strlen(argv[1])); req_port = atoi(argv[2]); } else { rt_strncpy(req_uri, TCP_TEST_HOST, rt_strlen(TCP_TEST_HOST)); req_port = TCP_TEST_PORT; } LOG_I("Host:%s; Port:%d", req_uri, req_port); LOG_D("will gethostbyname..."); host = gethostbyname(req_uri); if (!host) { LOG_E("gethostbyname failed!"); return; } LOG_I("gethostbyname pass. ip addr: %s", inet_ntoa_r(*((struct in_addr *)host->h_addr_list[0]), ip_addr_buf, sizeof(ip_addr_buf))); recv_data = rt_calloc(1, TEST_BUFSZ); if (recv_data == RT_NULL) { LOG_E("calloc failed. No memory!"); return; } if ((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) { LOG_E("Create socket failed!"); goto __exit; } server_addr.sin_family = AF_INET; server_addr.sin_port = htons(req_port); server_addr.sin_addr = *((struct in_addr *)host->h_addr); rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero)); if ((ret = connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr))) < 0) { LOG_E("Connect <%d> fail! ret:%d", sock, ret); goto __exit; } LOG_I("connect <%s> success", ip_addr_buf); ret = send(sock, req_data, strlen(req_data), 0); if (ret <= 0) { LOG_E("send error, will close the socket <%d>.", sock); goto __exit; } LOG_I("send success"); bytes_received = recv(sock, recv_data, TEST_BUFSZ - 1, 0); if (bytes_received <= 0) { LOG_E("receive error, will close the socket <%d>.", sock); goto __exit; } LOG_I("received data:\n"); for (int i = 0; i < bytes_received; i++) { rt_kprintf("%c", recv_data[i]); } rt_kprintf("\r\n"); __exit: if (recv_data) rt_free(recv_data); if (sock >= 0) { closesocket(sock); sock = -1; } LOG_I("UDP demo end"); } #ifdef FINSH_USING_MSH #include
MSH_CMD_EXPORT_ALIAS(nb_udp_demo, demo_udp, nbiot udp test); #endif /* FINSH_USING_MSH */ #endif /* NB_UDP_DEMO */ ```
ROG
2019-12-11
这家伙很懒,什么也没写!
> --- 希望对你有帮助,这是rtt官方的人员编写的demo,你要感谢他
撰写答案
登录
注册新账号
关注者
0
被浏览
2.4k
关于作者
ROG
这家伙很懒,什么也没写!
提问
41
回答
121
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
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-thred的stm32h723对应bsp包CubeMX添加其他外设报错
2
RT-Thread中的time溢出问题,时间戳溢出,解决方法
3
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
4
SystemView线程名字不显示
5
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
8
个答案
2
次被采纳
三世执戟
7
个答案
1
次被采纳
KunYi
7
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
3
次点赞
YZRD
1
篇文章
2
次点赞
Days
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部