查看: 3293|回复: 6

[已解决] 通过udp通信通过WiFi将两个WiFi shield实现通信,收发一个字.....

[复制链接]
  • TA的每日心情
    无聊
    2016-12-21 15:41
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2014-10-25 10:00 | 显示全部楼层 |阅读模式
    将两块arduino安上wifi shield,一块作为发送端,发送一个字符‘A’,通过WiFi发送,另一块作为接收端收到这个字符。求发送和接受这个‘A’的核心程序,谢谢大家,急用。
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2014-10-25 10:09 | 显示全部楼层
    不如先看例程学习,如果你懂点网络通信原理,你会知道,例程就是你要的程序
    如果你觉得以上内容帮到了你,你可以打赏支持作者
  • TA的每日心情
    无聊
    2016-12-21 15:41
  • 签到天数: 6 天

    [LV.2]偶尔看看I

     楼主| 发表于 2014-10-25 10:14 | 显示全部楼层
    我改的两个程序,就是通信没成功。你瞅瞅。
    这是发送端‘’
    #include <SPI.h>
    #include <WiFi.h>
    #include <WiFiUdp.h>

    IPAddress localip(172,27,35,13);
    int status = WL_IDLE_STATUS;
    char ssid[] = "360WiFi-9618"; //  your network SSID (name)
    char pass[] = "201331210010";    // your network password (use for WPA, or use as key for WEP)
    int keyIndex = 0;            // your network key Index number (needed only for WEP)
    // buffers for receiving and sending data
    //char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
    //char  ReplyBuffer[] = "acknowledged";       // a string to send back
    int iPin0 = A0;
    int iPin1 = A1;
    int iPin2 = A2;
    int iPin3 = A3;
    int ledPin = 13;   
    //WiFiServer server(80);
    // An EthernetUDP instance to let us send and receive packets over UDP

    unsigned int localPort = 8888;      // local port to listen on

    char packetBuffer[255]; //buffer to hold incoming packet
    char  ReplyBuffer[] = "11";       // a string to send back
    IPAddress remoteip(172,27,35,15);
    WiFiUDP Udp;

    void setup() {
      //Initialize serial and wait for port to open:
      Serial.begin(9600);
      pinMode(ledPin, OUTPUT);
      digitalWrite(ledPin, LOW);
      if (WiFi.status() == WL_NO_SHIELD) {
        Serial.println("WiFi shield not present");
        // don't continue
        while(true);
      }
        while ( status != WL_CONNECTED) {
        Serial.print("Attempting to connect to SSID: ");
        Serial.println(ssid);
        // Connect to WPA/WPA2 network. Change this line if using open or WEP network:   
        status = WiFi.begin(ssid,pass);
      
        // wait 10 seconds for connection:
        delay(10000);
      }
      Serial.println("Connected to wifi. My address:");
      //printWifiStatus();
      IPAddress myAddress = WiFi.localIP();
      Serial.println(myAddress);
      Serial.println("\nStarting connection to server...");
      // if you get a connection, report back via serial:
       /*status = WiFi.begin(ssid, pass);
       if ( status != WL_CONNECTED) {
        Serial.println("Couldn't get a wifi connection");
         while(true);
       }
      else {
         server.begin();
         Serial.print("Connected to wifi. My address:");
         IPAddress myAddress = WiFi.localIP();
         Serial.println(myAddress);
      }
    // printWifiStatus();*/
      Udp.begin(localPort);  
    }

    void loop() {
       if(analogRead(iPin1)>=1024&&analogRead(iPin0)>=700&&analogRead(iPin2)>=700&&analogRead(iPin3)>=700)
      {
      digitalWrite(ledPin, HIGH);
      while(1){
        int packetSize = Udp.parsePacket();
        IPAddress remote = Udp.remoteIP();
       Udp.beginPacket(remoteip,localPort);
         ReplyBuffer[0]='a';
         Udp.write(ReplyBuffer[0]);
         Udp.endPacket();
         Serial.println("had send");
      }
      }
    else {
      Serial.println("no send");
      digitalWrite(ledPin, LOW);              
    }
    }
    这是接收端
    #include <SPI.h>
    #include <WiFi.h>
    #include <WiFiUdp.h>

    WiFiServer server(80);
    int status = WL_IDLE_STATUS;
    char ssid[] = "360WiFi-9618"; //  your network SSID (name)
    char pass[] = "201331210010";  
    //char ssid[] = "TeleTouch"; //  your network SSID (name)
    //char pass[] = "asdf1234";    // your network password (use for WPA, or use as key for WEP)
    int keyIndex = 0;            // your network key Index number (needed only for WEP)

    unsigned int localPort = 8888;      // local port to listen on
    int ledPin = 13;
    char packetBuffer[255]; //buffer to hold incoming packet
    char  ReplyBuffer[] = "11";       // a string to send back
    //IPAddress localip(192,168,60,13);
    IPAddress remoteip(172,27,35,13);
    WiFiUDP Udp;

    void setup() {
      //Initialize serial and wait for port to open:
      Serial.begin(9600);
      pinMode(ledPin, OUTPUT);
        status = WiFi.begin(ssid, pass);
       if ( status != WL_CONNECTED) {
        Serial.println("Couldn't get a wifi connection");
         while(true);
       }
      else {
         server.begin();
         Serial.print("Connected to wifi. My address:");
         IPAddress myAddress = WiFi.localIP();
         Serial.println(myAddress);

      }
      //printWifiStatus();
      // if you get a connection, report back via serial:
      Udp.begin(localPort);  
    }

    void loop() {
      //Udp.beginPacket(remoteip,localPort);
      //Udp.write(ReplyBuffer);
      //Udp.endPacket();
    //  Serial.write("had send");
      //delay(1000);
        Serial.println("myAddress111");
      // if there's data available, read a packet
      int packetSize = Udp.parsePacket();
      Serial.println("myAddress222");
      //Udp.beginPacket(Udp.remoteIP(),localPort);
      if(packetSize)
      {
        Serial.println("myAddress333");
        Udp.read(packetBuffer,255);
         Serial.println("received");
         digitalWrite(ledPin, HIGH);
      }
        Serial.print("Received packet of size ");
        Serial.println(packetSize);
        Serial.print("From ");
        IPAddress remoteIp = Udp.remoteIP();
        Serial.print(remoteIp);
        Serial.print(", port ");
        Serial.println(Udp.remotePort());
    }
  • TA的每日心情
    无聊
    2016-12-21 15:41
  • 签到天数: 6 天

    [LV.2]偶尔看看I

     楼主| 发表于 2014-10-27 11:55 | 显示全部楼层
    有没有人帮忙试一试啊,看看能不能通信啊
  • TA的每日心情
    奋斗
    2014-11-28 16:53
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2014-10-30 01:09 | 显示全部楼层
    用wifi shield的人本来就少,你居然还用两片,想试程序都爱莫能助额
  • TA的每日心情
    无聊
    2016-12-21 15:41
  • 签到天数: 6 天

    [LV.2]偶尔看看I

     楼主| 发表于 2014-10-30 09:10 | 显示全部楼层
    啊,没事,已经通了。ip的问题。没找对
  • TA的每日心情
    郁闷
    2019-7-22 09:48
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2019-7-22 16:08 | 显示全部楼层
    星空星辰 发表于 2014-10-30 09:10
    啊,没事,已经通了。ip的问题。没找对

    楼主不知道还能不能看到,将发送端和接收端的IP改的不一样就可以了吗?
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    Arduino lcd屏幕亮了但是不显示字符
    Arduino lcd屏幕亮了但是
    Arduino的lcd屏亮了但是上面没有字符显示,串进去的滑动变阻器也旋过了,但是还是没有
    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    【Arduino】108种传感器模块系列实验(98)---L298N电机驱动板
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    两个ESP8266通过云端实现远程数据交互
    两个ESP8266通过云端实现
    原理简述:利用发布订阅模式。一个ESP8266作为消息发布者,另一个ESP8266作为消息订阅
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表