اطلاعیه

Collapse
No announcement yet.

خوندن و استخراج رشته String در AVR

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    خوندن و استخراج رشته String در AVR

    با سلام
    من میخوام یه سری Data از طریق پورت USART از SIM908 با میکروی ATMega8L بخونم
    این Data مربوط به GPS ماژول است که باید بعد از ارسال هر دستور چک کنم ببینم اگر ماژول OK رو برام فرستاد ادامه بده
    و این که الان Data رو روی Hyper Terminal راحت دریافت میکنم
    مشکلم با برنامه نویسی میکروست که چطور مثلا یه رشته مثل زیر بگیره و فقط OK رو جدا کنه و بگه اگه OK بود برو مرحله بعد
    Enter SIM908 V.1.02 AT OK Enter
    الان میخوام این OK رو از وسط Data استخراج کنم و بر اساس اون شرط تعریف کنم
    با کدویژن و به C مینویسم
    از دوستان اگر کس بلده ممنون میشم راهنماییم کنن
    درایور شبکه و nRF24L01
    کاتالوگ محصولات
    کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
    شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
    فروش اسيلوسکوپ GWinstek GOS-630FC

    #2
    پاسخ : خوندن و استخراج رشته String در AVR

    سلام

    می تونی از فانکشن strstr استفاده کنی، یه سر به help کدویژن بزن

    ولی توصیه می کنم اگه می خوای با SIM908 کار کنی دنبال AT command parser باش تا کارتو راحت کنه، البته احتمالا با ATMega8 رم کم بیاری
    مشکلی نیست که آسان نشود مرد میخواهد که هراسان نشود

    دیدگاه


      #3
      پاسخ : خوندن و استخراج رشته String در AVR

      سلام آقا بسطام


      آقا کاری که به نظرم میتونی انجام بدی اینکه از دستور getchar() استفاده کنی. یعنی از وقتی که درخواست اطلاعات به sim908 دادی در یک حلقه از دستور getchar() استفاده کنی. مثلا:
      کد:
      printf("AT+CGPSINF=0\r\n");
      for (i=0; i<100; i++)
      {ch=getchar()
      buf[i]= ch;
      if ch=='o'
      {
      ch=getchar();
      if ch=='k' 
      {
      break;
      }
      
      }
      }
      البته کد بالا رو امتحان نکردم ولی چیزی که به نظرم میرسه اینه.

      موفق باشی

      دیدگاه


        #4
        پاسخ : خوندن و استخراج رشته String در AVR

        نوشته اصلی توسط mohammadh1387
        سلام آقا بسطام


        آقا کاری که به نظرم میتونی انجام بدی اینکه از دستور getchar() استفاده کنی. یعنی از وقتی که درخواست اطلاعات به sim908 دادی در یک حلقه از دستور getchar() استفاده کنی. مثلا:
        کد:
        printf("AT+CGPSINF=0\r\n");
        for (i=0; i<100; i++)
        {ch=getchar()
        buf[i]= ch;
        if ch=='o'
        {
        ch=getchar();
        if ch=='k' 
        {
        break;
        }
        
        }
        }
        البته کد بالا رو امتحان نکردم ولی چیزی که به نظرم میرسه اینه.

        موفق باشی
        مرسی آره این شد
        ممنون

        کد:
          printf("AT\r\n");
          //delay_ms (2000);
          for (i=0; i<60; i++)
          {
            ch=getchar();
            Buffer[i]= ch;
            if ( ch=='O' )
            {
              ch=getchar();
              i++;
              Buffer [i] = ch;
              delay_ms(500);
              if ( ch=='K' ) 
              {
                break;
              }
              break;
            }
          }
        درایور شبکه و nRF24L01
        کاتالوگ محصولات
        کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
        شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
        فروش اسيلوسکوپ GWinstek GOS-630FC

        دیدگاه

        لطفا صبر کنید...
        X