完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我现在用默认的RT-THREAD系统,用STM32+ENC28J60的方式连到PC,在PC中输入PING命令可以PING通了,但是下一步要做UDP传输AD采集的数据到PC上,该怎么做好?谢谢
|
|
相关推荐
4个回答
|
|
|
我用Lwip api得函数来操作,没用BSD SOCKET,而且我用例子程序,开了个线程,也发不出去,PC收不到,例程如下:
int udp() { struct netconn *conn; struct netbuf *buf; struct ip_addr addr; char *data; char text[] = "A static text"; int i; /* 创建一个新的连接*/ conn = netconn_new(NETCONN_UDP); /* 设置远程主机的IP地址*/ addr.addr = htonl(0x0a000001); /* 连接远程主机*/ netconn_connect(conn, &addr, 7000); /* 创建一新的netbuf */ buf = netbuf_new(); data = netbuf_alloc(buf, 10); /*创建一些立即数*/ for(i = 0; i < 10; i++) data = i; /* 发送立即数*/ netconn_send(conn, buf); netbuf_ref(buf, text, sizeof(text)); /* 发送text */ netconn_send(conn, buf); /*分配connection 和 netbuf */ netconn_delete(conn); netconn_delete(buf); } 你们调试UDP的时候,是怎么调试的,用什么程序? |
|
|
|
|
|
我又用SOCKET写了一个函数,如下:
static void vLWIPSendTask( void *pvParameters ) { int socket1; char buf[10]; int i; struct sockaddr_in server_addr; for(i = 0; i < 10; i++) buf = i; socket1 = socket(AF_INET,SOCK_STREAM,0); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(11100); server_addr.sin_len = sizeof(server_addr); server_addr.sin_addr.s_addr = inet_addr("10.10.0.1"); if(sendto(socket1,buf,sizeof(buf),0,(struct sockaddr*)&server_addr,sizeof(server_addr)) == -1) { rt_kprintf("UDP socket ERROR!n"); } closesocket(socket1); } 串口接收到的是rt_kprintf("UDP socket ERROR!n");sendto函数出错了,是不是你们移植的时候出了问题,还是其他原因呢? |
|
|
|
|
|
|
|
|
|
|
|
可以了,原来是PC端IP的错误,0x0a000001是指:10.0.0.1,我设为10.10.0.1了,当然就收不到了,谢谢了
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
999 浏览 0 评论
2781 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9368 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2895 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2300 浏览 1 评论
浏览过的版块 |
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 09:29 , Processed in 0.982213 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3058