نمایش نتایج: از 1 به 1 از 1
Like Tree3 لایک
  • 3 Post By mostafa5709

موضوع: دریافت sms

  1. #1
    Junior Member
    تاریخ عضویت
    Apr 2013
    نوشته ها
    5

    دریافت sms

    این پروزه منتظر می ماند تا یک پیام دریافت کند وسپس آن را از طریق مانیتور سریال چاپ می کند وسایل مورد نیاز یک Arduino متصل به GPS و سیم کارت می باشد .
    سخت افزار مورد نیاز :
    1- برد آردوینو
    2- آردوینو به همراه محفظه GSM/GPRS
    3- سیم کارت
    ================================================== =======
    طرز قرار گرفتن اجزا در مدار به صورت زیر است:
    ابتدا وارد کتابخانه GSM شوید

    کد:
     #include <GSM.h>
    سیم کارت می تواند یک شماره پین (pin number ) را که از وظایف خود سیم کارت است فعال کند می توان پین را برای سیم کارت تعریف کرد اگرسیم کارت پین ندارد آن را می توان خالی گذاشت . یعنی کد زیر
    کد:
    #define PINNUMBER ""

    مقدار دهی اولیه کلاس های که شما می خواهید استفاده کنید به هر دو کلاس GSM و GSM_SMS نیاز دارید .
    کد:
    GSM gsmAccess; 
    GSM_SMS sms;
    ایجاد یک آرایه کاراکتری که تعداد پیامی را که در حال ارسال است دخیره کند :
    کد:
    char remoteNumber[20];
    در راه اندازی یک اتصال دهنده سریال به کامپیوتر ایجاد کرده و بعد از آن ازسال یک پیام نشان دهنده شروع کار طرح می باشد .

    کد:
    void setup(){
      Serial.begin(9600); 
      Serial.println("SMS Messages Receiver");
    برای آنکه از وضعیت اتصال اطلاع پیدا کنیم باید یک متغیر محلی ایجاد کرد .این کار را از نگه داشتن طرح از زمان شروع تا زمانی که سیم کارت به شبکه متصل است انجام می دهیم.
    کد:
     
    boolean notConnected = true;
    با فراخوانی ()gsmAccess.begin به شبکه متصل می شویم . این کار باعث می شود پین سیم کارت را به عنوان آرگومان بگیرد. با قرار دادن آن داخل یک حلقه () while می توان وضعیت اتصال را به طور مداوم بررسی کرد .
    زمانی که مودم متصل باشد () gsmAccess به GSM_READY بازخواهد گشت . از این به عنوان یک پرچم استفاده خواهد شد تا متغیر را از حالت notConnected به true یا false تبدیل کند . بایک بار اتصال باقیمانده نصب ادامه پیدا خواهد کرد .
    کد:
    while(notConnected)
      {
        if(gsmAccess.begin(PINNUMBER)==GSM_READY)
          notConnected = false;
        else
        {
          Serial.println("Not connected");
          delay(1000);
        }
      }
    نصب با تعدادی اطلاعات بر روی صفحه نمایش سریال به پایان حواهد رسید.
    کد:
    Serial.println("GSM initialized.");
      Serial.println("Waiting for messages");
    }
    پیام های sms توسط مودم دریافت می شود. سیم کارت مقداری فضای حافظه برای ذخیره پیام دریافتی دارد. تعداد پیام sms سیم کارت بسته به نوع سیم کارت می تواند حداقل 10 و حداکثر 200 باشد . شما باید مقدار حافظه سیم کارت را بررسی کنید .
    در ()loop یک متغیر از نوع کاراکتری برای نگه داری موقت کارکترها برای هر پیام sms دریافتی ایجاد کرد. از () sms.available برای بررسی وجود هر پیامی در سیم کارت می توان استفاده کرد
    کد:
    void loop() 
    {
      char c;
      if (sms.available())
      {
    چنانچه اگر یک پیام sms وجود داشت تعداد فرستنده با فراخوانی (sms.remoteNumber(remoteNumber, 20 می توان دریافت کرد . آرگومان remoteNumber آرایه کاراکتری است که شما در ابتدا طرح مشخص کرده اید . آن نمی تواند بلندتر از 20 کاراکتر باشد . این تعداد را به صفحه نمایش سریال بفرستید .
    کد:
    Serial.println("Message received from:");
        sms.remoteNumber(remoteNumber, 20);
        Serial.println(remoteNumber);
    با فراخوانی ()sms.flush می توان پیام های sms را حذف نمود. با استفاده از () sms.peek می توان تعداد پیام های sms را که امکان حذف دارد شناسایی نمود .
    کد زیر نمی تواند پیام های sms را حذف کند اما از طریق یک حلقه for می توان آن را تصحیح کرد با تعداد مشخص را شناسایی یا حذف کرد
    کد:
      
    if(sms.peek()=='#')
        {
          Serial.println("Discarded SMS");
          sms.flush();
        }
    
    
           {
    برای خواندن یک پیام از ()sms.read استفاده می کنیم شما هر کاراکتری از این پیام را به متغیر تبدیل خواهید کرد و می توانید آنرا به همانطور که می خوانید چاپ کنید .
    کد:
    while(c=sms.read())
          Serial.print(c);
    که نشان می دهد که پیام کامل است و از حافظه با استفاده از ()sms.flush می توان خذف نمود .
    کد:
    Serial.println("\nEND OF MESSAGE");    
        sms.flush();
        Serial.println("MESSAGE DELETED");
      }
    و یک تاخیر مختصر را به آن اضافه می کنیم و حلقه را می بندیم .
    کد:
    delay(1000);
    }
    یکبار دیگر کدهای نوشته شده را بررسی کنید و صفحه نمایش سریال را باز کرده و با یک تلفن با سرویس های دیگر که قادر اند پیام کوتاه ارسال کنند یک پیام کوتاه به سیم کارت خود بفرستید باید یک پیام بر روی صفحه نمایش زمانی که آن می رسد ببینید.


    کد:
    /*
    SMS receiver
    
     This sketch, for the Arduino GSM shield, waits for SMS messages 
     and displays them through the Serial port. 
    
     Circuit:
     * GSM shield 
    
     created 25 Feb 2012
     by Javier Zorzano / TD
    
     This example is in the public domain.
    */
    
    // libraries
    #include <GSM.h>
    
    // PIN Number
    #define PINNUMBER ""
    
    // initialize the library instance
    GSM gsmAccess; // include a 'true' parameter for debug enabled
    GSM_SMS sms;
    
    char remoteNumber[20];  // Holds the emitting number
    
    void setup() 
    {
      // initialize serial communications
      Serial.begin(9600); 
    
      Serial.println("SMS Messages Receiver");
    
      // connection state
      boolean notConnected = true;
    
      // Start GSM shield
      // If your SIM has PIN, pass it as a parameter of begin() in quotes
      while(notConnected)
      {
        if(gsmAccess.begin(PINNUMBER)==GSM_READY)
          notConnected = false;
        else
        {
          Serial.println("Not connected");
          delay(1000);
        }
      }
    
      Serial.println("GSM initialized");
      Serial.println("Waiting for messages");
    }
    
    void loop() 
    {
      char c;
    
      // If there are any SMSs available()  
      if (sms.available())
      {
        Serial.println("Message received from:");
    
        // Get remote number
        sms.remoteNumber(remoteNumber, 20);
        Serial.println(remoteNumber);
    
        // This is just an example of message disposal    
        // Messages starting with # should be discarded
        if(sms.peek()=='#')
        {
          Serial.println("Discarded SMS");
          sms.flush();
        }
    
        // Read message bytes and print them
        while(c=sms.read())
          Serial.print(c);
    
        Serial.println("\nEND OF MESSAGE");
    
        // delete message from modem memory
        sms.flush();
        Serial.println("MESSAGE DELETED");
      }
    
      delay(1000);
    
    }
    منبع:
    Arduino - GSMExamplesReceiveSMS

    بهینه سازی شده توسط مدیر انجمن
    ویرایش توسط mostafa5709 : 04-15-2013 در ساعت 10:17 AM

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

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

SEO by vBSEO