اطلاعیه

Collapse
No announcement yet.

تفکیک رشته در کدویژن

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

    تفکیک رشته در کدویژن

    سلام
    من از طریق ارتباطUSARTدو میکرو رو بهم وصل کردم ویه رشته رو از طریق میکرو اولی به دومی ارسال کردم
    مثلا این رشته
    N,100102,1023
    حالا میخوام میکرو دوم رشته ای که دریافت کرده رو به این صورت تفکیک وهر تیکه رو یک نام جدید بده
    به این صورت
    vasiat=N time=100102 null=1023
    وارسال کنه برا نمایش روی LCD
    برا تفکیک رشته چه دستوراتی در کدویژن بکار ببرم
    باتشکر

    #2
    پاسخ : تفکیک رشته در کدویژن

    با سلام
    نگاهی به کاربرد دستور strtok در هدر string.h بندازید.
    http://www.cplusplus.com/reference/c...string/strtok/
    با کمک این دستور می تونید اجزای رشته رو با یک کاراکتر به خصوص که در اینجا شما می تونید از , استفاده کنید، جدا کنید.
    موفق باشید.

    دیدگاه


      #3
      پاسخ : تفکیک رشته در کدویژن

      ممنونم ولی با توجه به این مثال من برا برنامم امتحان کردم ولی چیزی رویlcdدریافت نکردم
      میشه اگه شما با کدویژن کار کردین یه مثال که خودتون جواب گرفتین مطرح کنین
      باتشکر منتزرمممم

      دیدگاه


        #4
        پاسخ : تفکیک رشته در کدویژن

        من با کدویژن کار نکردم.
        شما از LCD به تنهایی جواب گرفتید؟
        بهتره اول یه برنامه ساده برا تست LCD بنویسید. اگه این کارو کردید برنامهتونو بذارید اینجا من تست کنم.
        موفق باشید

        دیدگاه


          #5
          پاسخ : تفکیک رشته در کدویژن

          اره رشته روی lcdنشون داده میشه
          برنامه میکرو اول که کارش ارسال رشته به میکرو دوم هست

          char y1[]="111636.932,2447.0949,N,E",y2[]="efgh";
          int i;

          while (1)
          {

          if(PINB.0==0)
          {
          for(i=1;i<100;i++)
          {
          puts(y1);
          }
          }
          if(PINB.1==0)
          {
          for(i=1;i<100;i++)
          {
          puts(y2);
          }
          }


          برنامه میکرو دوم که کارش دریافت رشته از میکرو اول وارسال برا نمایش روی lcdهست


          while (1)
          {
          gets(x,30);
          if(x!=y)
          {
          sprintf(y,"%s",x);
          lcd_clear();
          lcd_puts(y);
          فقط مشکل کارم اینه که رشته y1رو تفکیک کنم ؟؟؟؟/
          حالا شما بفرماین ؟؟؟//

          دیدگاه


            #6
            پاسخ : تفکیک رشته در کدویژن

            با سلام
            خوب میتونید سه تا متغیر از نوع رشته توی گیرنده تعریف کنید بعد بیاید مثلا 5 کاراکتر اول رو بریزید توی متغیر اول ، 5 کاراکتر دوم رو بریزید توی رشته دوم و مثلا بقیه کاراکتر ها رو بریزید توی متغیر سوم مثلا برای نمونه :

            آقا هرکاری کردم ادیتور سایت درست متن رو درست نشون نداد یه عکس گزاشتم :

            دیدگاه


              #7
              پاسخ : تفکیک رشته در کدویژن

              مرسی
              حالا مثلا اگه بافر یک رو بخوام رویlcd نشون بدم با این دستورات 5 کارکتور اول از رشته ای که میکرو اول فرستاده به میکرو دوم رو نشون میده ؟؟؟؟؟؟؟؟/ :question:

              دیدگاه


                #8
                پاسخ : تفکیک رشته در کدویژن

                خوب من یک پیشنهاد دادم ، فکر میکنم که جواب بده ؛
                اگه میتونید تستش کنید ببینیم که در عمل هم جواب میده یاخیر !
                اگر جواب داد که فبها !
                اگر جواب نداد فبهی !

                دیدگاه


                  #9
                  پاسخ : تفکیک رشته در کدویژن

                  اوکی الان میرم برا تستش؟؟؟////

                  دیدگاه


                    #10
                    پاسخ : تفکیک رشته در کدویژن

                    مرسی اقا ولی......
                    ولی جوابی دریافت نکردم :cry2:
                    اگه پیشنهادی دیگه برا حل این مشکل داشتین
                    من منتظرم

                    دیدگاه


                      #11
                      پاسخ : تفکیک رشته در کدویژن

                      خوب آقا یه راه دیگه بیایید از همین روشی که تابع puts استفاده میکنه استفاده کنیم یعتی از تابع lcd_putchar() استفاده کنید به این ترتیب که مثلا با تعریف یک حلقه که مقدار ابتدا و انتهای رشته در اون مشخص میشه و داخلش متغیر متناظر با مقدار شمارنده حلقه رو با استفاده از تابع lcd_putchar() نمایش بدیم مثلا برای نمایش اونچه که در پست قبل اشاره کردم این جوری بنویسیم :


                      من این روش رو همین الان تست کردم و جواب داد

                      دیدگاه


                        #12
                        پاسخ : تفکیک رشته در کدویژن

                        مرسی خیلی زیاد
                        فقط تو محیط کدویژن تست میکنین؟؟؟
                        اخه دستور پاک کردن lcd_clear هست نه lcd_clrscr؟؟؟؟؟؟؟

                        دیدگاه


                          #13
                          پاسخ : تفکیک رشته در کدویژن

                          اوکی بود برنامه شما :wow: :applause:
                          مرسی از لطفتون
                          فقط یه سوال دیگه همین طور که در توضیحات بالا عرض کردم میخوام مثلا 7 کارکتر اول رو با یه نام مثلا(کارکتر اولtime=7) رو lcdنشون بذم بخاطر همین از دستور زیر استفاده کردم
                          sprintf(a[];"time=%s" ;x)
                          ولی با مشکل روبه رو شدم اخه 7کارکتر اول رو به ترتیب نشون نمیده مثلا کارکتر 3و6و8و2و7 رو نشون میده میدونین مشکل از کجاست؟؟؟؟؟"
                          :cry:با تشکر فراوان

                          دیدگاه


                            #14
                            پاسخ : تفکیک رشته در کدویژن

                            خوب اینجا دیگه فکر میکنم باید از همون روش اولی که خدمتتون عرض کردم استفاده کنیم (راستی من اون روش رو هم امشب تست کردم و بدون مشکلی جواب داد) مثلا بیایید به صورت زیر عمل کنید :


                            اینی بالایی رو من همین الان نوشتم و تستش کردم و جواب داد

                            دیدگاه


                              #15
                              پاسخ : تفکیک رشته در کدویژن

                              هرکاری میکنم نمیدونم مشکل چیه که رو خط سوم error میده؟؟؟؟؟؟؟؟///
                              شما هم محیط برنامه نویسیتون کدویژنه؟/
                              (راستی من از اعداد اعشاری استفاده کردم )
                              ممنونتونم

                              دیدگاه

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