اطلاعیه

Collapse
No announcement yet.

ارتباط ارایه و رشته در کد ویژن و lcd

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

    ارتباط ارایه و رشته در کد ویژن و lcd

    سلام
    کسی میدونه تعداد ارایه و رشته چه ارتباطی به هم دارند
    اخه وقتی من ارایه رو چه 1 و چه 32 یا ... در نظر میگیرم باز رشته ی من که حتی 5 یا 10 کاراکتریا ... هست در lcd کاراکتری 2*16 نمایش داده میشه ؟
    نمونه
    ...
    ..
    <#include <stdio.h
    <#include <alcd.h
    (void main(void
    }
    [char c[13;
    (while (1
    {
    :()lcd_clear
    :(" sprintf(c,"a=b=c=d=e=f=g=h=j;
    ( lcd_puts(c;
    ( delay_ms(500;
    جدیدترین ویرایش توسط عبد الله; ۰۷:۵۹ ۱۳۹۷/۰۵/۱۷.

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

    نوشته اصلی توسط عبد الله نمایش پست ها
    سلام
    کسی میدونه تعداد ارایه و رشته چه ارتباطی به هم دارند
    اخه وقتی من ارایه رو چه 1 و چه 32 یا ... در نظر میگیرم باز رشته ی من که حتی 5 یا 10 کاراکتریا ... هست در lcd کاراکتری 2*16 نمایش داده میشه ؟
    نمونه
    ...
    ..
    <#include <stdio.h
    <#include <alcd.h
    (void main(void
    }
    [char c[13;
    (while (1
    {
    :()lcd_clear
    :(" sprintf(c,"a=b=c=d=e=f=g=h=j;
    ( lcd_puts(c;
    ( delay_ms(500;
    سلام
    اول اینکه شما حداقل برای LCD 2*16 باید یک آرایه 17 عضوی در نظر بگیرید! اون رشته ای هم که داخل تابع sprintf نوشتید 17 تا کارکتره که توی یک خط LCD 2*16 جا نمیشه.

    دیدگاه


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

      از راهنماییتون ممنونم
      اما حتی اگر char c[1 یک ارایه ای هم باشه باز نشون میده مثلا
      ;lcd_clear(); a=2;
      sprintf(c,"abcdef%d",a);
      lcd_puts(c);
      delay_ms(500);
      همونطور که مشاهده میکنید sprintf هفت کاراکتر داره
      بنابراین چه ارتباطی بین تعداد ارایه c و تعداد کاراکترها وجود داره ؟؟

      دیدگاه


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

        نوشته اصلی توسط عبد الله نمایش پست ها
        از راهنماییتون ممنونم
        اما حتی اگر char c[1 یک ارایه ای هم باشه باز نشون میده مثلا
        ;lcd_clear(); a=2;
        sprintf(c,"abcdef%d",a);
        lcd_puts(c);
        delay_ms(500);
        همونطور که مشاهده میکنید sprintf هفت کاراکتر داره
        بنابراین چه ارتباطی بین تعداد ارایه c و تعداد کاراکترها وجود داره ؟؟
        ببینید هر خونه از آرایه char یک کاراکتر تو خودش ذخیره میکنه؛ پس برای lcd که هر خطش 16 کاراکتره باید یک آرایه با طول 16 داشت. اما طبق قانون رشته ها، هر رشته انتهاش به یک کاراکتر خالی به شکل '0\' ختم میشه. پس ما باید طول رو 17 در نظر بگیریم که برای اون کاراکتر خالی هم جا بمونه!

        دیدگاه


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

          بله درسته من هم نظرم همینه ، اما چرا با وجود اینکه c رو تک ارایه ای در نظر گرفتم به مشکلی نمیخوره ؟

          دیدگاه


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

            نوشته اصلی توسط عبد الله نمایش پست ها
            بله درسته من هم نظرم همینه ، اما چرا با وجود اینکه c رو تک ارایه ای در نظر گرفتم به مشکلی نمیخوره ؟
            خوب ببینید آرایه ارتباط نزدیکی به بحث آدرس و پوینتر داره. وقتی شما c رو تک عضوی معرفی میکنید، ولی باز هم برنامه کار میکنه، دلیلش اینه که مقادیر کاراکترها تو خونه های بعدی c ذخیره میشن و تابع sprintf بدون این که اطلاع داشته باشه آرایه چند عضویه میاد کارشو انجام میده.
            این کاری که شما کردید اگر چه به ظاهر شاید درست بیاد و کد عمل کنه، اما کافیه برنامه خیلی سنگین باشه و کل فضای SRAM میکرو پر باشه؛ در اون حالت اگر c رو به شکل غلط تعریف کرده باشید، کاراکترها در آدرس متغیرهای دیگه ریخنه میشن و احتمال بروز عملکردهای ناخواسته و اشکال در کارکرد برنامه وجود داره. پس هیچ وقت فکر اینم نکنید که همچین کاری انجام بدید و پیش خودتون بگید این که داره درست کار میکنه!!!

            دیدگاه


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

              ممنونم فهمیدم

              حالا بنظرتون اگه کلا اندازه ی ارایه رو مشخص نکنیم چی ؟ []char c
              چون به نظرم برای توسعه دادن برنامه و... راحتتر باشه > ایا مشکلی نداره؟

              دیدگاه


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

                نوشته اصلی توسط عبد الله نمایش پست ها
                ممنونم فهمیدم

                حالا بنظرتون اگه کلا اندازه ی ارایه رو مشخص نکنیم چی ؟ []char c
                چون به نظرم برای توسعه دادن برنامه و... راحتتر باشه > ایا مشکلی نداره؟
                این حالت کلا کامپایل نمیشه! اگر قراره اینطوری تعریف کنید حتما باید یه مقدار اولیه مثلا به شکل زیر بهش بدید:

                char c[] = "ABCD";

                تو این حالت به طور خودکار میاد و اندازه آرایه رو مشخص میکنه که همون (اندازه تعداد کاراکترها + کاراکتر خالی '0\' انتهای رشته) که برای این مثال میشه 5=1+4.

                دیدگاه


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

                  حرفم روپس میگیرم . چرا که با تعداد کاراکتر کم جواب میده ولی برای کارکتر بیشتر به مشکل میخوره وردیف دو رو پر نمیکنه
                  در ضمن برا کامپایل error نداد.

                  دیدگاه


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

                    نوشته اصلی توسط عبد الله نمایش پست ها
                    حرفم روپس میگیرم . چرا که با تعداد کاراکتر کم جواب میده ولی برای کارکتر بیشتر به مشکل میخوره وردیف دو رو پر نمیکنه
                    در ضمن برا کامپایل error نداد.
                    من منظور شما رو نمیفهمم. یکم واضحتر بگید

                    دیدگاه


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

                      نوشته اصلی توسط hossein.m98 نمایش پست ها
                      من منظور شما رو نمیفهمم. یکم واضحتر بگید
                      منظورم اینه که[] char c ; ترفند مناسبی نیست بنابراین بهتره .تعداد ارایه ها با توجه به نیازمون ، اندازه ی معلومی داشته باشه . چون تو کدویژن امتحان کردم

                      دیدگاه


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

                        نوشته اصلی توسط عبد الله نمایش پست ها
                        منظورم اینه که[] char c ; ترفند مناسبی نیست بنابراین بهتره .تعداد ارایه ها با توجه به نیازمون ، اندازه ی معلومی داشته باشه . چون تو کدویژن امتحان کردم
                        آره بهترین راه همینه که تعداد اعضای آرایه از قبل مشخص بشه

                        دیدگاه


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

                          نوشته اصلی توسط hossein.m98 نمایش پست ها
                          آره بهترین راه همینه که تعداد اعضای آرایه از قبل مشخص بشه
                          از راهنمایی هاتون ممنونم

                          دیدگاه

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