嵌入式技术论坛
登录
直播中
青sky
9年用户
1323经验值
擅长:模拟技术
私信
关注
[问答]
通过TCP连上服务器但EC20发不出数据怎么办
开启该帖子的消息推送
TCP通信
服务器
AT指令
通过TCP连上服务器了,能收到数据,但是发不出数据,发送AT+QISEND指令总是ERROR
回帖
(6)
杨秀英
2022-8-29 11:43:44
你的测试代码是怎么写的?贴上来看一下
你的测试代码是怎么写的?贴上来看一下
举报
青sky
2022-8-29 11:45:36
举报
杨秀英
2022-8-29 11:46:33
就是说 connectID 为 1,但是送的时候 connectID 却是 0,这个地方看起来有问题,应该保持一致的
就是说 connectID 为 1,但是送的时候 connectID 却是 0,这个地方看起来有问题,应该保持一致的
举报
杨秀英
2022-8-29 11:46:40
另外你是用的 AT 组件进行测试的吗?如果是 AT 组件的话就不用像你现在编写的测试函数来实现收发了,只用使用 socket 进行编程就行了。
另外你是用的 AT 组件进行测试的吗?如果是 AT 组件的话就不用像你现在编写的测试函数来实现收发了,只用使用 socket 进行编程就行了。
举报
杨秀英
2022-8-29 11:46:48
AT 组件直接使用 socket 编程就行
AT 组件直接使用 socket 编程就行
举报
杨秀英
2022-8-29 11:46:58
类似下面的示例,也可以找一些 socket 编程的资料,类似于 Socket网络编程之TCP编程 这种的
#include
#include "rtdevice.h"
#include "board.h"
#include
#include
void ec20_tcp_test_thread_entry(void *parameter)
{
struct sockaddr_in server_addr;
int sockfd = -1, ret;
char send_data[] = "hello rtthreadrn";
char recv_data[1024];
#define SERVER_HOST "127.0.0.1"
#define SERVER_PORT 8080
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
LOG_E("Socket create failed.n");
return;
}
/* 初始化预连接的服务端地址 */
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
server_addr.sin_addr.s_addr = inet_addr(SERVER_HOST);
rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
/* 连接到服务端 */
if (connect(sockfd, (struct sockaddr *) &server_addr, sizeof(struct sockaddr)) < 0)
{
LOG_E("socket connect failed!n");
closesocket(sockfd);
return;
}
else
{
LOG_I("socket connect success!n");
}
/* 发送数据到 socket 连接 */
ret = send(sockfd, send_data, strlen(send_data), 0);
if (ret <= 0)
{
LOG_E("send error,close the socket.n");
return;
}
while (1)
{
ret = recv(sockfd, recv_data, sizeof(recv_data), 0);
if (ret <= 0)
{
LOG_E("recv error.n");
}
else
{
rt_kprintf("recv data: %s", recv_data);
}
rt_thread_mdelay(100);
}
/* 关闭连接 */
closesocket(sockfd);
return;
}
/**
*
@Brief
启动 EC20 TCP 测试线程
*
@param
无
*
@Return
无
*/
int ec20_tcp_test(void)
{
/* 创建EC200X模组数据接收处理线程 */
rt_thread_t thread = rt_thread_create("ec20_tcp_test_thread", ec20_tcp_test_thread_entry, RT_NULL, 4096, 10, 20);
if (thread != RT_NULL)
{
rt_thread_startup(thread); // 创建成功则启动线程
}
else
{
LOG_E("create ex20 tcp test thread failed");
return (-RT_ERROR);
}
return RT_EOK;
}
MSH_CMD_EXPORT(ec20_tcp_test, ec20 tcp test);
类似下面的示例,也可以找一些 socket 编程的资料,类似于 Socket网络编程之TCP编程 这种的
#include
#include "rtdevice.h"
#include "board.h"
#include
#include
void ec20_tcp_test_thread_entry(void *parameter)
{
struct sockaddr_in server_addr;
int sockfd = -1, ret;
char send_data[] = "hello rtthreadrn";
char recv_data[1024];
#define SERVER_HOST "127.0.0.1"
#define SERVER_PORT 8080
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
LOG_E("Socket create failed.n");
return;
}
/* 初始化预连接的服务端地址 */
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
server_addr.sin_addr.s_addr = inet_addr(SERVER_HOST);
rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
/* 连接到服务端 */
if (connect(sockfd, (struct sockaddr *) &server_addr, sizeof(struct sockaddr)) < 0)
{
LOG_E("socket connect failed!n");
closesocket(sockfd);
return;
}
else
{
LOG_I("socket connect success!n");
}
/* 发送数据到 socket 连接 */
ret = send(sockfd, send_data, strlen(send_data), 0);
if (ret <= 0)
{
LOG_E("send error,close the socket.n");
return;
}
while (1)
{
ret = recv(sockfd, recv_data, sizeof(recv_data), 0);
if (ret <= 0)
{
LOG_E("recv error.n");
}
else
{
rt_kprintf("recv data: %s", recv_data);
}
rt_thread_mdelay(100);
}
/* 关闭连接 */
closesocket(sockfd);
return;
}
/**
*
@Brief
启动 EC20 TCP 测试线程
*
@param
无
*
@Return
无
*/
int ec20_tcp_test(void)
{
/* 创建EC200X模组数据接收处理线程 */
rt_thread_t thread = rt_thread_create("ec20_tcp_test_thread", ec20_tcp_test_thread_entry, RT_NULL, 4096, 10, 20);
if (thread != RT_NULL)
{
rt_thread_startup(thread); // 创建成功则启动线程
}
else
{
LOG_E("create ex20 tcp test thread failed");
return (-RT_ERROR);
}
return RT_EOK;
}
MSH_CMD_EXPORT(ec20_tcp_test, ec20 tcp test);
举报
更多回帖
rotate(-90deg);
回复
相关问答
TCP通信
服务器
AT指令
请问
EC20
怎么接收和发送
数据
到
服务器
?
2019-06-14
2910
EC20
API接口问题请教
2023-05-17
2578
EC20
使用AT socket进行通信时
服务器
主动断开连接怎么处理这种情况?
2023-02-14
1318
请问GPRS模块与安卓手机都
连上
了
服务器
,怎么互相
数据
?
2019-01-17
2533
请问
EC20
模块之间通用吗?
2019-04-15
2723
如何用AT组件+
EC20
模块的方式进行socket通信呢?
2023-02-01
1678
为什么
EC20
模块用串口调试指令接收不到
EC20
反馈信号呢
2022-08-11
2215
为什么NRF24L01模块作为发送机时却
发不出
数据
呢
2021-12-17
1740
NRF24l01双机通信用XCOM
发不出
去信息,一直都在循环显示asc码的解决办法?
2020-07-15
2231
为什么有时候可以DHCP成功和
连上
TCP
服务器
发
东西,但有时候不行?
2019-09-18
2356
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分