久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

      <i id='XZUha'><tr id='XZUha'><dt id='XZUha'><q id='XZUha'><span id='XZUha'><b id='XZUha'><form id='XZUha'><ins id='XZUha'></ins><ul id='XZUha'></ul><sub id='XZUha'></sub></form><legend id='XZUha'></legend><bdo id='XZUha'><pre id='XZUha'><center id='XZUha'></center></pre></bdo></b><th id='XZUha'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='XZUha'><tfoot id='XZUha'></tfoot><dl id='XZUha'><fieldset id='XZUha'></fieldset></dl></div>

        <legend id='XZUha'><style id='XZUha'><dir id='XZUha'><q id='XZUha'></q></dir></style></legend>
      1. <small id='XZUha'></small><noframes id='XZUha'>

        <tfoot id='XZUha'></tfoot>
          <bdo id='XZUha'></bdo><ul id='XZUha'></ul>

      2. Arduino UNO, CC3000: while(client.connected)

        Arduino UNO, CC3000: while(client.connected)(Arduino UNO, CC3000: while(client.connected))

          <tfoot id='8pJzF'></tfoot>
            <bdo id='8pJzF'></bdo><ul id='8pJzF'></ul>
          • <i id='8pJzF'><tr id='8pJzF'><dt id='8pJzF'><q id='8pJzF'><span id='8pJzF'><b id='8pJzF'><form id='8pJzF'><ins id='8pJzF'></ins><ul id='8pJzF'></ul><sub id='8pJzF'></sub></form><legend id='8pJzF'></legend><bdo id='8pJzF'><pre id='8pJzF'><center id='8pJzF'></center></pre></bdo></b><th id='8pJzF'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='8pJzF'><tfoot id='8pJzF'></tfoot><dl id='8pJzF'><fieldset id='8pJzF'></fieldset></dl></div>
              1. <legend id='8pJzF'><style id='8pJzF'><dir id='8pJzF'><q id='8pJzF'></q></dir></style></legend>

                  <tbody id='8pJzF'></tbody>

                <small id='8pJzF'></small><noframes id='8pJzF'>

                • 本文介紹了Arduino UNO, CC3000: while(client.connected)的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  我正在使用連接到遠程 Web 服務的 Arduino UNO 和 CC3000 擴展板.雖然我在循環腳本時遇到了問題.正如您在下面的代碼中看到的,腳本應該每 5 秒以 occupied 的狀態 ping 網絡服務.盡管在使用 while(client.connected) 時,有些東西會使 Arduino 永遠停止/掛起.即使 while(client.connected) {} 只是空的.

                  I'm playing around with an Arduino UNO and a CC3000 shield connecting to a remote web service. Though I'm having a problem looping the script. As you can see in the code below, the script should ping the web service with the state of occupied every 5 seconds. Though when using while(client.connected) something makes the Arduino stop/hang forever. Even if the while(client.connected) {} is just empty.

                  如果我不包含 while(client.connected){},則不會 ping 網絡服務,這就是我發現自己處于兩難境地的原因.請參閱下面的 Arduino Sketch 文件和下面的串行日志.

                  If I don't include the while(client.connected){} the web service is not pinged, which is why I find myself in quite a dilemma. Please see Arduino Sketch file below and serial log below that.

                  #include <Adafruit_CC3000.h>
                  #include <ccspi.h>
                  #include <SPI.h>
                  #include <string.h>
                  #include "utility/debug.h"
                  
                  // These are the interrupt and control pins
                  #define ADAFRUIT_CC3000_IRQ   3  // MUST be an interrupt pin!
                  // These can be any two pins
                  #define ADAFRUIT_CC3000_VBAT  5
                  #define ADAFRUIT_CC3000_CS    10
                  // Use hardware SPI for the remaining pins
                  // On an UNO, SCK = 13, MISO = 12, and MOSI = 11
                  Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS, ADAFRUIT_CC3000_IRQ, ADAFRUIT_CC3000_VBAT,
                  SPI_CLOCK_DIV2); // you can change this clock speed but DI
                  
                  #define WLAN_SSID       "WIFI"        // cannot be longer than 32 characters!
                  #define WLAN_PASS       "WIFI_PW"
                  // Security can be WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or WLAN_SEC_WPA2
                  #define WLAN_SECURITY   WLAN_SEC_WPA2
                  
                    uint32_t ip;
                  
                    int ledPin = 8;   // choose the pin for the LED
                    int ledPinSecond = 7;  
                    int inputPin = 2;              // choose the input pin (for PIR sensor)
                    int pirState = LOW;             // we start, assuming no motion detected
                    int val = 0;   // variable for reading the pin status
                    String occupied;   
                  
                  /**************************************************************************/
                  /*!
                   @brief  Sets up the HW and the CC3000 module (called automatically
                   on startup)
                   */
                  /**************************************************************************/
                  void setup(void)
                  {
                    Serial.begin(115200);
                    Serial.println(F("Hello, CC3000!\n")); 
                  
                    displayDriverMode();
                    Serial.print("Free RAM: "); 
                    Serial.println(getFreeRam(), DEC);
                  
                    pinMode(ledPin, OUTPUT);    // declare LED as output
                    pinMode(ledPinSecond, OUTPUT);    
                    pinMode(inputPin, INPUT);     // declare sensor as input 
                  
                    /* Initialise the module */
                    Serial.println(F("\nInitialising the CC3000 ..."));
                    if (!cc3000.begin())
                    {
                      Serial.println(F("Unable to initialise the CC3000! Check your wiring?"));
                      while(1);
                    }
                  
                    /* Optional: Update the Mac Address to a known value */
                    /*
                    uint8_t macAddress[6] = { 0x08, 0x00, 0x28, 0x01, 0x79, 0xB7 };
                     if (!cc3000.setMacAddress(macAddress))
                     {
                     Serial.println(F("Failed trying to update the MAC address"));
                     while(1);
                     }
                     */
                  
                    uint16_t firmware = checkFirmwareVersion();
                    if ((firmware != 0x113) && (firmware != 0x118)) {
                      Serial.println(F("Wrong firmware version!"));
                      for(;;);
                    }
                  
                    displayMACAddress();
                  
                    /* Delete any old connection data on the module */
                    Serial.println(F("\nDeleting old connection profiles"));
                    if (!cc3000.deleteProfiles()) {
                      Serial.println(F("Failed!"));
                      while(1);
                    }
                  
                    /* Attempt to connect to an access point */
                    char *ssid = WLAN_SSID;             /* Max 32 chars */
                    Serial.print(F("\nAttempting to connect to ")); 
                    Serial.println(ssid);
                  
                    /* NOTE: Secure connections are not available in 'Tiny' mode! */
                    if (!cc3000.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) {
                      Serial.println(F("Failed!"));
                      while(1);
                    }
                  
                    Serial.println(F("Connected!"));
                  
                    /* Wait for DHCP to complete */
                    Serial.println(F("Request DHCP"));
                    while (!cc3000.checkDHCP())
                    {
                      delay(1000); // ToDo: Insert a DHCP timeout!
                    }  
                  
                    /* Display the IP address DNS, Gateway, etc. */
                    while (! displayConnectionDetails()) {
                      delay(1000);
                    }
                  
                  #ifndef CC3000_TINY_DRIVER    
                    /* Try looking up the webservice */
                    Serial.print(F("www.webservice.com -> "));
                    if (! cc3000.getHostByName("www.webservice.com", &ip)) {
                      Serial.println(F("Could not resolve!"));
                    } 
                    else {
                      cc3000.printIPdotsRev(ip);
                    }
                  
                    Serial.print(F("\n\rPinging ")); 
                    cc3000.printIPdotsRev(ip); 
                    Serial.print("...");  
                    uint8_t replies = cc3000.ping(ip, 5);
                    Serial.print(replies); 
                    Serial.println(F(" replies"));
                    if (replies)
                      Serial.println(F("Ping successful!"));
                  #endif
                  
                    /* You need to make sure to clean up after yourself or the CC3000 can freak out */
                    /* the next time you try to connect ... */
                  //  Serial.println(F("\n\nClosing the connection"));
                  //  cc3000.disconnect();
                  }
                  
                  void loop(void)
                  {
                   val = digitalRead(inputPin);  // read input value
                  
                    occupied = "Occupied";
                    Serial.print("Room state: ");
                    Serial.println(occupied);
                  
                   sendGET();
                   delay(5000);
                  }
                  
                  void sendGET() //client function to send/receive GET request data.
                  {
                      Serial.print(F("Initializing SendGET request\n"));
                       Adafruit_CC3000_Client client = cc3000.connectTCP(ip, 80);
                      char serverName[] = "www.webservice.com"; //webservice host 
                      if (client.connect(serverName, 80)) {
                      //starts client connection, checks for connection
                      Serial.print(F("Adding state to DB\n"));
                      client.println("GET /folder/sensor.php?occupied="+ occupied +" HTTP/1.1"); //download text
                      client.println("Host: webservice.com");
                      client.println("Connection: close");  //close 1.1 persistent connection  
                      client.println(); //end of get request
                      Serial.print(F("Ending connection to DB\n"));
                    } else {
                      Serial.println("Connection to server failed"); //error message if no client connect
                      Serial.println();
                    }
                  
                    Serial.print(F("Checking connection for bytes\n"));
                    while (client.connected()) {
                    while (client.available()) {
                    //Read answer
                    char c = client.read();
                      }
                    }
                  
                    Serial.print(F("Checked for bytes\n"));
                    Serial.print("disconnecting.");
                    Serial.print("==================");
                    client.close(); //stop client
                  
                    }
                  
                  /**************************************************************************/
                  /*!
                   @brief  Displays the driver mode (tiny of normal), and the buffer
                   size if tiny mode is not being used
                  
                   @note   The buffer size and driver mode are defined in cc3000_common.h
                   */
                  /**************************************************************************/
                  void displayDriverMode(void)
                  {
                  #ifdef CC3000_TINY_DRIVER
                    Serial.println(F("CC3000 is configure in 'Tiny' mode"));
                  #else
                    Serial.print(F("RX Buffer : "));
                    Serial.print(CC3000_RX_BUFFER_SIZE);
                    Serial.println(F(" bytes"));
                    Serial.print(F("TX Buffer : "));
                    Serial.print(CC3000_TX_BUFFER_SIZE);
                    Serial.println(F(" bytes"));
                  #endif
                  }
                  
                  /**************************************************************************/
                  /*!
                   @brief  Tries to read the CC3000's internal firmware patch ID
                   */
                  /**************************************************************************/
                  uint16_t checkFirmwareVersion(void)
                  {
                    uint8_t major, minor;
                    uint16_t version;
                  
                  #ifndef CC3000_TINY_DRIVER  
                    if(!cc3000.getFirmwareVersion(&major, &minor))
                    {
                      Serial.println(F("Unable to retrieve the firmware version!\r\n"));
                      version = 0;
                    }
                    else
                    {
                      Serial.print(F("Firmware V. : "));
                      Serial.print(major); 
                      Serial.print(F(".")); 
                      Serial.println(minor);
                      version = major; 
                      version <<= 8; 
                      version |= minor;
                    }
                  #endif
                    return version;
                  }
                  
                  /**************************************************************************/
                  /*!
                   @brief  Tries to read the 6-byte MAC address of the CC3000 module
                   */
                  /**************************************************************************/
                  void displayMACAddress(void)
                  {
                    uint8_t macAddress[6];
                  
                    if(!cc3000.getMacAddress(macAddress))
                    {
                      Serial.println(F("Unable to retrieve MAC Address!\r\n"));
                    }
                    else
                    {
                      Serial.print(F("MAC Address : "));
                      cc3000.printHex((byte*)&macAddress, 6);
                    }
                  }
                  
                  
                  /**************************************************************************/
                  /*!
                   @brief  Tries to read the IP address and other connection details
                   */
                  /**************************************************************************/
                  bool displayConnectionDetails(void)
                  {
                    uint32_t ipAddress, netmask, gateway, dhcpserv, dnsserv;
                  
                    if(!cc3000.getIPAddress(&ipAddress, &netmask, &gateway, &dhcpserv, &dnsserv))
                    {
                      Serial.println(F("Unable to retrieve the IP Address!\r\n"));
                      return false;
                    }
                    else
                    {
                      Serial.print(F("\nIP Addr: ")); 
                      cc3000.printIPdotsRev(ipAddress);
                      Serial.print(F("\nNetmask: ")); 
                      cc3000.printIPdotsRev(netmask);
                      Serial.print(F("\nGateway: ")); 
                      cc3000.printIPdotsRev(gateway);
                      Serial.print(F("\nDHCPsrv: ")); 
                      cc3000.printIPdotsRev(dhcpserv);
                      Serial.print(F("\nDNSserv: ")); 
                      cc3000.printIPdotsRev(dnsserv);
                      Serial.println();
                      return true;
                    }
                  }
                  

                  日志

                    Hello, CC3000!
                  
                      RX Buffer : 131 bytes
                      TX Buffer : 131 bytes
                      Free RAM: 1047
                  
                      Initialising the CC3000 ...
                      Firmware V. : 1.24
                      MAC Address : MAC_ADDRESS
                  
                      Deleting old connection profiles
                  
                      Attempting to connect to 64 Allen Street - East
                      Connected!
                      Request DHCP
                  
                      IP Addr: XXX.XXX.XX.X
                      Netmask: 255.255.255.0
                      Gateway: 192.168.0.1
                      DHCPsrv: 192.168.0.1
                      DNSserv: XXX.XX.X.X
                      www.webservice.com -> XX.XX.XXX.XXX
                  
                      Pinging XX.XX.XXX.XXX...5 replies
                      Ping successful!
                      Room state: Free
                      Initializing SendGET request
                      Adding state to DB
                      Ending connection to DB
                      Checking connection for bytes
                  

                  推薦答案

                  為什么不將用于已連接客戶端的代碼移動到您連接的 if 語句中.那么你就不需要輪詢 client.connected() 函數.

                  Why not move the code that is for a connected client into the if statement where you connect. Then you do not need to poll the client.connected() function.

                  這個邏輯好像有問題.如果客戶端已連接,它可能會保持連接狀態,直到循環下方的行:client.close(); 這將導致循環永遠不會結束.

                  It seems the logic is flawed. If a client is connected, it will probably remain connected until the line you have below the loop: client.close(); Which would cause the loop to never end.

                  或者,您也可以在循環中添加一些代碼以防止它永遠運行.

                  Alternatively you could also add some code inside the loop to prevent it from running for ever.

                  uint32_t theTime = millis();
                  
                  while(client.connected()){
                    if( ( millis() - theTime ) >1000 ) break;  //exit loop after one second.
                  }
                  

                  這篇關于Arduino UNO, CC3000: while(client.connected)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  How to use windowing functions efficiently to decide next N number of rows based on N number of previous values(如何有效地使用窗口函數根據 N 個先前值來決定接下來的 N 個行)
                  reuse the result of a select expression in the quot;GROUP BYquot; clause?(在“GROUP BY中重用選擇表達式的結果;條款?)
                  Does ignore option of Pyspark DataFrameWriter jdbc function ignore entire transaction or just offending rows?(Pyspark DataFrameWriter jdbc 函數的 ignore 選項是忽略整個事務還是只是有問題的行?) - IT屋-程序員軟件開發技
                  Error while using INSERT INTO table ON DUPLICATE KEY, using a for loop array(使用 INSERT INTO table ON DUPLICATE KEY 時出錯,使用 for 循環數組)
                  pyspark mysql jdbc load An error occurred while calling o23.load No suitable driver(pyspark mysql jdbc load 調用 o23.load 時發生錯誤 沒有合適的驅動程序)
                  How to integrate Apache Spark with MySQL for reading database tables as a spark dataframe?(如何將 Apache Spark 與 MySQL 集成以將數據庫表作為 Spark 數據幀讀取?)
                  <i id='77suR'><tr id='77suR'><dt id='77suR'><q id='77suR'><span id='77suR'><b id='77suR'><form id='77suR'><ins id='77suR'></ins><ul id='77suR'></ul><sub id='77suR'></sub></form><legend id='77suR'></legend><bdo id='77suR'><pre id='77suR'><center id='77suR'></center></pre></bdo></b><th id='77suR'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='77suR'><tfoot id='77suR'></tfoot><dl id='77suR'><fieldset id='77suR'></fieldset></dl></div>

                  1. <legend id='77suR'><style id='77suR'><dir id='77suR'><q id='77suR'></q></dir></style></legend>
                      <tbody id='77suR'></tbody>

                    • <bdo id='77suR'></bdo><ul id='77suR'></ul>

                      <small id='77suR'></small><noframes id='77suR'>

                          <tfoot id='77suR'></tfoot>

                            主站蜘蛛池模板: 激情在线视频 | 户外露出一区二区三区 | 欧美中文在线 | 一区中文字幕 | av在线播放一区二区 | 天天综合操 | 成人在线精品 | 亚洲精品一级 | 国产精品日韩欧美一区二区 | 成人性视频免费网站 | 日韩av大片免费看 | 亚洲精品视频一区二区三区 | 伦理一区二区 | 毛片高清 | 精品久久一区二区 | 琪琪午夜伦伦电影福利片 | 欧美性猛片aaaaaaa做受 | 91夜夜夜| 91久久精品国产91久久性色tv | 99re99| 精品国产乱码久久久久久蜜柚 | 国产在线精品一区 | 日韩视频―中文字幕 | 亚州成人 | 色天堂影院 | 福利久久| 亚洲视频免费在线观看 | 国内精品免费久久久久软件老师 | 最新国产精品视频 | 国产精品精品视频一区二区三区 | 久精品视频 | 99精品免费在线观看 | 欧美成人a | 国产精品久久久久久妇女 | 欧美久久一区二区三区 | 国产特级毛片 | 国产色网 | 色网站入口 | 国产精品呻吟久久av凹凸 | 亚洲一区二区三区免费在线观看 | 精品国产乱码久久久久久1区2区 |