نمایش نتایج: از 1 به 6 از 6
Like Tree1 لایک
  • 1 Post By magmagmary

موضوع: ارسال دیتا از وب سرور به سریال در esp

  1. #1
    Junior Member
    تاریخ عضویت
    May 2016
    نوشته ها
    4

    ارسال دیتا از وب سرور به سریال در esp

    با سلام

    یک برنامه روی esp نیاز داشتم و اینکه
    esp بصورت APتعریف بشه که بتونم با وای فای کامپیوترم به اون وصا بشوم و از esp آی پی بصورت DHCPبگیره.
    و هر موقع تو مروگر کامپیوترم به دنبال آی پی espهر چی نوشتم ،اون رو در پورت سریال espنشون بدهد.
    این دو تا برنامه رو دارم که یکی برا اتصال به روش apو دومی برا نمایش اطلاعات از وب سرور و پورت 80 به پورت سریال هست .ولی مشکل اینکه که برنامه دومی روی مود کلاینت هست و باید به یک شبکه دیگه متصل بشود.
    لطفا در این مورد کسی میتونه مشکل بنده رو حل کنه یا اینکه این دو تا برنامه رو برا من تلفیق کنه.ممنون


    /* Create a WiFi access point and provide a web server on it. */

    #include <ESP8266WiFi.h>
    #include <WiFiClient.h>
    #include <ESP8266WebServer.h>

    /* Set these to your desired credentials. */
    const char *ssid = "ESPap";
    const char *password = "123456789";

    ESP8266WebServer server(80);

    /* Just a little test message. Go to http://192.168.4.1 in a web browser
    * connected to this access point to see it.
    */
    void handleRoot() {
    server.send(200, "text/html", "<h1>You are connected</h1>");
    }

    void setup() {
    delay(1000);
    Serial.begin(115200);
    Serial.println();
    Serial.print("Configuring access point...");
    /* You can remove the password parameter if you want the AP to be open. */
    WiFi.softAP(ssid, password);

    IPAddress myIP = WiFi.softAPIP();
    Serial.print("AP IP address: ");
    Serial.println(myIP);
    server.on("/", handleRoot);
    server.begin();
    Serial.println("HTTP server started");
    }

    void loop() {
    server.handleClient();
    }



    #include <ESP8266WiFi.h>

    const char* ssid = "esp8";
    const char* password = "12345678";

    // Create an instance of the server
    // specify the port to listen on as an argument
    WiFiServer server(80);

    void setup() {
    Serial.begin(115200);
    delay(10);

    // prepare GPIO2
    pinMode(2, OUTPUT);
    digitalWrite(2, 0);

    // Connect to WiFi network
    Serial.println();
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);

    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    }
    Serial.println("");
    Serial.println("WiFi connected");

    // Start the server
    server.begin();
    Serial.println("Server started");

    // Print the IP address
    Serial.println(WiFi.localIP());
    }

    void loop() {
    // Check if a client has connected
    WiFiClient client = server.available();
    if (!client) {
    return;
    }

    // Wait until the client sends some data
    Serial.println("new client");
    while(!client.available()){
    delay(1);
    }

    // Read the first line of the request
    String req = client.readStringUntil('\r');
    Serial.println(req);
    client.flush();

    // Match the request
    int val;
    if (req.indexOf("/gpio/0") != -1)
    val = 0;
    else if (req.indexOf("/gpio/1") != -1)
    val = 1;
    else {
    Serial.println("invalid request");
    client.stop();
    return;
    }

    // Set GPIO2 according to the request
    digitalWrite(2, val);

    client.flush();

    // Prepare the response
    String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
    s += (val)?"high":"low";
    s += "</html>\n";

    // Send the response to the client
    client.print(s);
    delay(1);
    Serial.println("Client disonnected");

    // The client will actually be disconnected
    // when the function returns and 'client' object is detroyed
    }



  2. #2
    Junior Member
    تاریخ عضویت
    May 2016
    نوشته ها
    4
    تونستم با این برنامه مشکل رو حل کنم.



    حال یک مشکل دیگه دارم.

    در همین برنامه یک رشته با عنوان String req=""; میاد داخل میکرو من با نام

    GET /device=1124&code=10012&name=10012&value=1022 HTTP/1.1
    Host: 192.168.4.1
    Connection: close

    میخواهم فقط device=1124&code=10012&name=10012&value=1022 را در یک رشته دیگه ذخیره کنه.چطور میتونم بقیه رو حذف کنم.اگه ممکنه اون دستور هایی که بصورت شرط یا هر جور دیگه میتونم اطلااعات شرط اولی رو بگیره و بعد از حذف قسمت های ذکر شده بقیه رو در رشته ای دیگر ذخیره کند.
    فایل های پیوست شده فایل های پیوست شده
    • نوع فایل: txt 1.txt (1.1 کیلو بایت, 18 مشاهده)

  3. #3
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,995
    نقل قول نوشته اصلی توسط amin233 نمایش پست ها
    تونستم با این برنامه مشکل رو حل کنم.



    حال یک مشکل دیگه دارم.

    در همین برنامه یک رشته با عنوان String req=""; میاد داخل میکرو من با نام

    GET /device=1124&code=10012&name=10012&value=1022 HTTP/1.1
    Host: 192.168.4.1
    Connection: close

    میخواهم فقط device=1124&code=10012&name=10012&value=1022 را در یک رشته دیگه ذخیره کنه.چطور میتونم بقیه رو حذف کنم.اگه ممکنه اون دستور هایی که بصورت شرط یا هر جور دیگه میتونم اطلااعات شرط اولی رو بگیره و بعد از حذف قسمت های ذکر شده بقیه رو در رشته ای دیگر ذخیره کند.
    این کد میتونه بهتون کمک کنه :
    کد:
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
    
    
      String code = ("GET /device=1124&code=10012&name=10012&value=1022 HTTP/1.1Host: 192.168.4.1Connection: close") ;
      int firstClosingBracket = code.indexOf('d');
       Serial.println("The First index of ; in the string  is " + firstClosingBracket);
    
    
      int secondOpeningBracket = firstClosingBracket + 1;
      int secondClosingBracket = code.indexOf('H', secondOpeningBracket);
       Serial.println("The Second  index of  the second ; in the string is " + secondClosingBracket);
    
    
      String number = code.substring(5, 50);
      Serial.println(number);
    
    
    }
    
    
    void loop() {
      // put your main code here, to run repeatedly:
    
    
    }
    به عنوان یک تابع صداش بزنید.

  4. #4
    Senior Member
    تاریخ عضویت
    Dec 2013
    محل سکونت
    ایران - شیراز
    نوشته ها
    213
    void setup() {
    Serial.begin(9600);
    String code = ("GET /device=1124&code=10012&name=10012&value=1022 HTTP/1.1Host: 192.168.4.1Connection: close") ;
    code.replace("GET /", "");
    int index = code.indexOf("HTTP/1");
    String output = code.substring(1, index-1);
    Serial.println(output);
    }

    void loop() {
    // put your main code here, to run repeatedly:
    }


    با اجازه من یه کم کد رو تغییر دادم

  5. #5
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,995
    نقل قول نوشته اصلی توسط solxsado نمایش پست ها
    void setup() {
    Serial.begin(9600);
    String code = ("GET /device=1124&code=10012&name=10012&value=1022 HTTP/1.1Host: 192.168.4.1Connection: close") ;
    code.replace("GET /", "");
    int index = code.indexOf("HTTP/1");
    String output = code.substring(1, index-1);
    Serial.println(output);
    }

    void loop() {
    // put your main code here, to run repeatedly:
    }


    با اجازه من یه کم کد رو تغییر دادم
    مرسیییییی
    خیلی تریک خوبی بود به عقلم نمی رسید
    فقط باید یه از 0 شروع بشه نه 1 درسته ؟
    کد:
    void setup() {
    Serial.begin(9600);
    String code = ("GET /device=1124&code=10012&name=10012&value=1022 HTTP/1.1Host: 192.168.4.1Connection: close") ;
    code.replace("GET /", "");
    int index = code.indexOf("HTTP/1");
    String output = code.substring(0, index-1);
    Serial.println(output); 
    }
    
    
    void loop() {
    // put your main code here, to run repeatedly:
    }
    لایک کردن

  6. #6
    Senior Member
    تاریخ عضویت
    Dec 2013
    محل سکونت
    ایران - شیراز
    نوشته ها
    213
    اگه جواب میده خوب درسته

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO