完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
pahomqtt +wiz+W5500 发布数据较大,rtt就重启了
在下面这个函数发送一次失败后,数据就重启了。 int wiz_sendto(int socket, const void *data, size_t size, int flags, const struct sockaddr *to, socklen_t tolen) { struct wiz_socket *sock = RT_NULL; uint8_t socket_state = 0; int32_t send_len = 0; int32_t send_pos=0; /* check WIZnet initialize status */ WIZ_INIT_STATUS_CHECK; if (data == RT_NULL || size == 0) { LOG_E("WIZnet sendto input data or size error!"); return -1; } sock = wiz_get_socket(socket); if (sock == RT_NULL) { return -1; } socket_state = getSn_SR(socket); switch (sock->type) { case Sn_MR_TCP: { if (socket_state == SOCK_CLOSED) { return 0; } else if (socket_state != SOCK_ESTABLISHED) { LOG_E("WIZnet send failed, get socket(%d) register state(%d) error.", socket, socket_state); return -1; } //ball 20200916 修改 如果超过sock单次发送最大数量2048则再接着发送 do{ send_len = wizchip_send(socket, (uint8_t *)data+send_pos, size-send_pos); send_pos+=send_len; if (send_len < 0) { LOG_E("WIZnet socket(%d) send data failed(%d).", socket, send_len); return -1; } else if(send_pos!=size) { rt_kprintf("n ball send_len=%d size=%d send_pos=%dn",send_len,size,send_pos); } else { send_len=send_pos; break; } } while(1); break; } case Sn_MR_UDP: case Sn_MR_IPRAW: { ip_addr_t remote_addr; uint16_t remote_port = 0; uint8_t ipstr[4] = {0}; if (socket_state != SOCK_UDP && socket_state != SOCK_IPRAW) { LOG_E("WIZnet sendto failed, get socket(%d) register state(%d) error.", socket, socket_state); return -1; } if (to) { socketaddr_to_ipaddr_port(to, &remote_addr, &remote_port); ipaddr_to_ipstr(to, ipstr); } else if (sock->remote_addr) { socketaddr_to_ipaddr_port(sock->remote_addr, &remote_addr, &remote_port); ipaddr_to_ipstr(sock->remote_addr, ipstr); } if ((send_len = wizchip_sendto(socket, (uint8_t *)data, size, ipstr, remote_port)) < 0) { LOG_E("WIZnet socket(%d) send data failed(%d).", socket, send_len); return -1; } break; } default: LOG_E("WIZnet socket (%d) type %d is not support.", socket, sock->type); return -1; } return send_len; } |
|
相关推荐
1个回答
|
|
rtt 重启是什么意思?日志信息是什么?
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1264 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
4980 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1680 浏览 0 评论
2584 浏览 0 评论
1913 浏览 0 评论
76244 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-5 09:54 , Processed in 0.617878 second(s), Total 69, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号