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

موضوع: اتصال با esp8266 با tcp server

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

    Question اتصال با esp8266 با tcp server

    درود دوستان
    بنده با سورس زیر و کانیفگ اولیه به esp8266 متصل میشم همی پیز خوب کار میکنه ولی من یک مشکلی دارم اونم اینه وقتی متن رو از تلفن به آردیونو میفرستم به این صورت نمایش میده
    برای مثال متن "arduino.ir" رو ارسال کنم این متن در سریال نمایش داده میشه


    IPD,0,10:arduino.ir+


    اضافه شدن +IPD,0,10: که عدد اول شماره کلاینت و عدد دوم طول رشته هست من رو دچار مشکل کرده

    اگر بخوام خود رشته ارسالی شده رو استخراج کنم از سریال چطور عمل کنم؟

    سورس بنده


    کد PHP:


    #include <SoftwareSerial.h>
    SoftwareSerial esp8266(2,3);// 2 ->RX   3->TX

    void setup() {
      
    esp8266.begin(115200   );
      
    Serial.begin(9600);
    }

    void loop() {
      if (
    esp8266.available() > 0)
      {
        
    char c esp8266.read();
        
    Serial.write(c);
      }
      
      if (
    Serial.available() > 0)
      {
        
    delay(1000);
        
    String command "";
        while (
    Serial.available())
        {
          
    command += (char)Serial.read();
        }
        
        
    esp8266.println(command);
        
      }



  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,933
    با این کد میتونی او ن قسمت رو جدا کنی
    کافیه به عنوان یک تابع بنویسیش و صداش بزنی

    کد:
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
    
    
      String code = "IPD,0,10:arduino.ir+" ;
      int firstClosingBracket = code.indexOf(':');
       Serial.println("The First index of ; in the string " + code + " is " + firstClosingBracket);
    
    
      int secondOpeningBracket = firstClosingBracket + 1;
      int secondClosingBracket = code.indexOf('+', secondOpeningBracket);
       Serial.println("The Second  index of  the second ; in the string " + code + " is " + secondClosingBracket);
    
    
      String number = code.substring(9, 19);
      Serial.println(number);
    
    
    }
    
    
    void loop() {
      // put your main code here, to run repeatedly:
    
    
    }
    لایک کردن

  3. #3
    Junior Member
    تاریخ عضویت
    Feb 2016
    نوشته ها
    16
    ممنونم از پاسخگوییت
    الان من مشکلم اینجاست که تابع
    کد:
    if (esp8266.available() > 0) 
      { 
        char c = esp8266.read(); 
        Serial.write(c); 
      }
    داره کاراکتر هارو تک تک میخونه تا تموم شه

    چطور مشخص کنم که حالا تموم شده و تابع رو فراخوانی کنم

    کمی loop آردیونو براگ گنگ هست

    و سوال دیگرم اینه که چطور متغیر رشته ای رو به تابع خودم پاس بدم

  4. #4
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,933
    نقل قول نوشته اصلی توسط H.shafiee نمایش پست ها
    ممنونم از پاسخگوییت
    الان من مشکلم اینجاست که تابع
    کد:
    if (esp8266.available() > 0) 
      { 
        char c = esp8266.read(); 
        Serial.write(c); 
      }
    داره کاراکتر هارو تک تک میخونه تا تموم شه

    چطور مشخص کنم که حالا تموم شده و تابع رو فراخوانی کنم

    کمی loop آردیونو براگ گنگ هست

    و سوال دیگرم اینه که چطور متغیر رشته ای رو به تابع خودم پاس بدم
    این که شما میدونی آخرین چیزی که esp ارسال می کنه چیه خیلی خوبه .
    طیق چیزی که برای من فرستادی (IPD,0,10:arduino.ir+) آخرش داره با r تموم مشه . بنابراین شما یه if می نویسی که وقتی esp8266.read ات مساوی شد با r شد کارش تمومه و بره تابع رو صدا بزنه .

    اما در مورد سوال دومت . توی کدی که من نوشتم arduino.ir توی متغیر number ریخته شده.
    هر جا با این کامند کار داشتی میتونی number رو صدا بزنی.

    اگر هم قصد داری با موبایلت عدد بفرستی می تونی بعد این String رو به int تبدیل کنی.
    https://www.arduino.cc/en/Reference/StringToInt

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

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

SEO by vBSEO