当前位置: 首页 > news >正文

24小时学会网站建设正能量erp软件下载免费

24小时学会网站建设,正能量erp软件下载免费,福州网站建站建设,友情链接怎么购买STM32 LWIP UDP通信 前言设置 IP 地址UDP函数配置实验结果单播发送#xff0c;一对一发送广播发送#xff0c;一对多发送 可能遇到的问题总结 前言 之前没有接触过网络的通信#xff0c;工作需要 UDP 接收和发送通信#xff0c;在网上没有找到一对一、一对多的相关例程一对一发送广播发送一对多发送 可能遇到的问题总结 前言 之前没有接触过网络的通信工作需要 UDP 接收和发送通信在网上没有找到一对一、一对多的相关例程于是在技术总监对我的指导用正点原子板子给的例程是从官方的程序修改的实现了Lwip UDP通信一对一、一对多的发送程序可以随便指定发送ip地址、发送端口号以及发送十六进制或是 ASCII码都可以本人测试STM32F1系列和F4系列都没问题十分的方便。 设置 IP 地址 假设设置STM32单片机IP为:192.168.1.130 lwipx-ip[0]192; lwipx-ip[1]168;lwipx-ip[2]1;lwipx-ip[3]130;假设设置我的电脑的IP为:192.168.1.36 UDP函数配置 STM32单片机上电不需要每次手动按键调节设置远端IP地址ip地址、端口号 // udp_demo_set_remoteip();//先选择IPLCD_Clear(WHITE); //清屏POINT_COLORRED; //红色字体LCD_ShowString(30,30,200,16,16,WARSHIP STM32F103);LCD_ShowString(30,50,200,16,16,UDP Test);LCD_ShowString(30,70,200,16,16,ATOMALIENTEK); LCD_ShowString(30,90,200,16,16,KEY0:Send data); LCD_ShowString(30,110,200,16,16,KEY_UP:Quit); LCD_ShowString(30,130,200,16,16,KEY1:Connect);tbufmymalloc(SRAMIN,200); //申请内存if(tbufNULL)return ; //内存申请失败了,直接退出sprintf((char*)tbuf,Local IP:%d.%d.%d.%d,lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);//服务器IPLCD_ShowString(30,150,210,16,16,tbuf);sprintf((char*)tbuf,Local Port:%d,UDP_DEMO_PORT);//服务器端口号LCD_ShowString(30,170,210,16,16,tbuf); // sprintf((char*)tbuf,Remote IP:%d.%d.%d.%d,lwipdev.remoteip[0],lwipdev.remoteip[1],lwipdev.remoteip[2],lwipdev.remoteip[3]);//远端IP // LCD_ShowString(30,170,210,16,16,tbuf); // sprintf((char*)tbuf,Remote Port:%d,UDP_DEMO_PORT);//客户端端口号 // LCD_ShowString(30,190,210,16,16,tbuf);POINT_COLORBLUE;LCD_ShowString(30,210,210,16,16,STATUS:Disconnected); UDP客户端连接不需要指定IP地址和端口号的服务器 udppcbudp_new();if(udppcb)//创建成功{ IP4_ADDR(rmtipaddr,lwipdev.remoteip[0],lwipdev.remoteip[1],lwipdev.remoteip[2],lwipdev.remoteip[3]);errudp_bind(udppcb,IP_ADDR_ANY,UDP_DEMO_PORT);//绑定本地IP地址与端口号if(errERR_OK) //绑定完成{udp_recv(udppcb,udp_demo_recv,NULL);//注册接收回调函数 LCD_ShowString(30,210,210,16,16,STATUS:Connected );//标记连接上了(UDP是非可靠连接,这里仅仅表示本地UDP已经准备好)udp_demo_flag | 15; //标记已经连接上POINT_COLORRED;LCD_ShowString(30,230,lcddev.width-30,lcddev.height-190,16,Receive Data:);//提示消息 POINT_COLORBLUE;//蓝色字体}else res1; }else res1;UDP回调函数 void udp_demo_recv(void *arg,struct udp_pcb *upcb,struct pbuf *p,struct ip_addr *addr,u16_t port) {u32 data_len 0;struct pbuf *q;if(p!NULL) //接收到不为空的数据时{memset(udp_demo_recvbuf,0,UDP_DEMO_RX_BUFSIZE); //数据接收缓冲区清零for(qp;q!NULL;qq-next) //遍历完整个pbuf链表{//判断要拷贝到UDP_DEMO_RX_BUFSIZE中的数据是否大于UDP_DEMO_RX_BUFSIZE的剩余空间如果大于//的话就只拷贝UDP_DEMO_RX_BUFSIZE中剩余长度的数据否则的话就拷贝所有的数据if(q-len (UDP_DEMO_RX_BUFSIZE-data_len)) memcpy(udp_demo_recvbufdata_len,q-payload,(UDP_DEMO_RX_BUFSIZE-data_len));//拷贝数据else memcpy(udp_demo_recvbufdata_len,q-payload,q-len);data_len q-len; if(data_len UDP_DEMO_RX_BUFSIZE) break; //超出TCP客户端接收数组,跳出 }upcb-remote_ip*addr; //记录远程主机的IP地址upcb-remote_portport; //记录远程主机的端口号lwipdev.remoteip[0]upcb-remote_ip.addr0xff; //IADDR4lwipdev.remoteip[1](upcb-remote_ip.addr8)0xff; //IADDR3lwipdev.remoteip[2](upcb-remote_ip.addr16)0xff;//IADDR2lwipdev.remoteip[3](upcb-remote_ip.addr24)0xff;//IADDR1 udp_demo_flag|16; //标记接收到数据了pbuf_free(p);//释放内存}else{udp_disconnect(upcb); LCD_Clear(WHITE); //清屏POINT_COLOR RED;LCD_ShowString(30,30,200,16,16,WARSHIP STM32F103);LCD_ShowString(30,50,200,16,16,UDP Test);LCD_ShowString(30,70,200,16,16,ATOMALIENTEK);POINT_COLORBLUE;LCD_ShowString(30,90,200,16,16,Connect break); LCD_ShowString(30,110,200,16,16,KEY1:Connect);udp_demo_flag ~(15); //标记连接断开} }实验结果 单播发送一对一发送 if(key KEY0_PRES)//KEY0按下了,发送数据{u8 remote_add[4] {192,168,1,36}; //发送对端的ip地址u8 send_str_data[] hello word!; //要发送的信息Unicast_Send(remote_add,send_str_data,0,8089);//单播发送}我按键按下KEY0_PRES按了三次发送单播发送的端口号为8089用 Wireshark 抓包 也可以用网络调试助手查看是否收到STM32发来的数据刚刚前面说过我设置自己的电脑ip192.168.1.36电脑本机端口号设置和STM32单片机发送数据端口号一致才能收到数据 广播发送一对多发送 if(key KEY2_PRES)//KEY2按下了,发送数据{u8 send_data[8] {0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8}; //要发送的信息Broadcast_Send(send_data,8,8080);//广播发送}我按键按下KEY2_PRES按了两次发送广播发送的端口号为8080用 Wireshark 抓包 也可以用网络调试助手查看是否收到STM32发来的数据电脑本机端口号端口号设置和STM32单片机发送数据端口号一致才能收到数据因为我刚刚设置STM32广播发送的端口号是8080所以本地端口号8089是不会收到数据的重新打开一个网络调试助手(端口号设置为8080)此时就可以正常收到数据了 接收是正常的我就不演示了没有 TFT显示屏 可以使用串口来查看单片机是否收到别的单片机发来的数据 if(udp_demo_flag16)//是否收到数据?{LCD_Fill(30,250,lcddev.width-1,lcddev.height-1,WHITE);//清上一次数据LCD_ShowString(30,250,lcddev.width-30,lcddev.height-230,16,udp_demo_recvbuf);//显示接收到的数据 printf(接收到数据%s\r\n,udp_demo_recvbuf);udp_demo_flag~(16);//标记数据已经被处理了.} 可能遇到的问题 移植不成功不会将F1例程移植到F4板子上之类的问题移植不会修改程序没有设置自己的电脑ip地址程序、STM32单片机、网线都没有问题但电脑没有收到包此时检查电脑的防火墙端口号不一致也收不到包的 (这一点很重要)端口号要一致才能收发数据其它等等问题 总结 本人也花了大量时间去研究如需要源码支付30元提供技术服务加企鹅号970484728加企鹅时备注STM32 UDP不需要源码的也不强求记录下自己的学习过程我只是刚入门的新手知道有许多会的大佬不喜勿喷欢迎各位小伙伴一起前来讨论。
http://www.yingshimen.cn/news/21093/

相关文章:

  • 企业网站建设的文献wordpress同步文章插件
  • 网站规划建设心得与体会企业网站倾向于wordpress
  • 做网站是怎样赚钱好的网站 具备
  • 想学网站开发尤溪网站建设
  • 济南网站建设公司哪家好电影网站怎么做流量
  • 郑州企业网站建站如何推广网站
  • 网站运营这么做网站跟别的做的一样的
  • 男同志做爰网站wap asp网站模板下载
  • 厦门网站开发公司电话开建筑公司取名字如何取好旺
  • 广州怎么做网站保定百度首页优化
  • 《网站开发课程设计》设计报告响应式网页设计技术有哪些
  • 烟台网站开发多少钱企业微网站建设
  • qq恢复官方网站完成网站建设的心得体会
  • 中英文网站 程序seo入门
  • 网站聚合页面模板设计开发流程
  • 辽阳建设网站吕梁市城乡建设局网站
  • 网站建设职业规划网站高级感
  • 咸阳住房和城乡建设规划局网站河北建设工程信息网官方网站
  • 做网站 框架电商网站计划
  • 重庆市建设银行网站首页网站正能量晚上不用下载进入免费
  • 响应式网站 框架吉林省长春市建设局网站
  • 创新的邯郸网站建设关于申请建设网站的请示
  • 长春网站建设方案推广新闻门户网站制作
  • html免费的模板网站有哪些百度收录怎么查询
  • 做网站价格个人备案门户网站
  • 有哪些做平面设计好的网站有哪些内容工厂生产流程管理系统
  • 辽宁营商建设局网站修改wordpress分类顺序
  • 平湖建设局网站本地wordpress 手机浏览器
  • 婚恋网站 模板摄影网站的制作
  • 网站运营优化建议广告推广赚钱在哪接