اطلاعیه

Collapse
No announcement yet.

کوچ کردن از کدویژن به AtmelStudio

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

    پاسخ : کوچ کردن از کدویژن به AtmelStudio

    سلام جناب مرتضوی
    شما که استارت این تاپیک را زدید . لطف کنید و هر چی توابع و کتابخانه برای اتمل استدیو هست و کار برد داره را قرار بدین
    ممنون . :nerd: :nerd: :nerd: :nerd: :nerd:

    دیدگاه


      پاسخ : کوچ کردن از کدویژن به AtmelStudio

      با عرض سلام خدمت همه ی دوستان عزیز

      از اینکه نتونستم به نحو احسنت به فعالیت در این تاپیک و انجمن ادامه بدهم عذر میخوام. والبته خوشحالم تاپیک هایی که خیلی وقت پیش ایجاد شده هنوز با کمک دوستان پیش میروند و استقبال میشوند. امیدوارم مطالب نقطه ی موثری برای دوستان بازدید کننده باشند.


      در رابطه با پست قبلی من به درستی متوجه منظور شما نشدم.
      کتابخانه ها و توابع زیادی سازگار با کامپایلر avr-gcc ( کامپایلر در نظر گرفته شده برای این IDE ) وجود دارد و نوشته شده است . که با توجه به اپلیکیشن ها و کاربرد های مختلف مورد استفاده قرار میگیرند.
      البته اگر کاربرد خاصی مد نظرتون هست بفرمایید تا من یا هر کدام از دوستان راهنمایی کنند.
      راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
      کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
      نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
      http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
      انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

      دیدگاه


        پاسخ : کوچ کردن از کدویژن به AtmelStudio

        ببخشید که دیر جواب میدم اقا سید . هر کاری میکردم اکانتم فعال نمیشد که جواب بدم
        من یک سری توابع برای راه اندازی کانتر میکرو یا کتابخونش و هم چنین برای ال سی دی 240 ×128 گرافیکی برای راه اندازیش و توابعی در مورد تاچ این ال سی دی و ساعت با تاریخ شمسی میخواستم .
        از توابع جناب نوربخش استفاده کردم ولی نتونستم روتینی پیدا کنم که بشه مقدار یه متغییر را روی ال سی دی نشون بدم
        فکر کنم توابع و کتابخونه ها که ذکر کردم زیاد شد . :redface:
        نمونه برنامه با فایل تست در پروتوس را قرار دادم . تابع TEST11 تو برنامه را چک کنید ببینید که چطوری میتونم مقدار متغییر C را که تو حلقه for هست روی ال سی دی نشون بدم . از چه روتینی استفاده کنم ممنون........

        و یه سوال دیگه چطوری عکس ها را تو این ال سی دی قرار دهم / منظورم با چه نرم افزاری این کار را بکنم

        http://p30up.ir/images/8vl35foyx5r3iucin7zg.rar

        دیدگاه


          پاسخ : کوچ کردن از کدویژن به AtmelStudio

          جناب مرتضوی اگه جوابم را ندادین گوچ میکنم به همون جایی که بودم به زادگاه اصلیم کدویژن ها . :mrgreen:

          دیدگاه


            پاسخ : کوچ کردن از کدویژن به AtmelStudio

            من یه pdf دارم که در رابطه با تبدیل تاریخ هاست اگه به کارتون میاد بزارم
            .The best question deserves a better answer
            =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
            «پناه»می برم «به خدا»
            از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
            محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

            دیدگاه


              پاسخ : کوچ کردن از کدویژن به AtmelStudio

              نوشته اصلی توسط •.´™ مَسِِــــح`.•
              من یه pdf دارم که در رابطه با تبدیل تاریخ هاست اگه به کارتون میاد بزارم
              ممنون میشم . اگه برا اتمل باشه . واقعیتش از کدویژن دیگه بیزار شدم .

              دیدگاه


                پاسخ : کوچ کردن از کدویژن به AtmelStudio

                چیزه خاصی ندراه به راحتی برای کامپایلر مورد نظر شما قابل تغیره
                کد:
                http://s6.picofile.com/file/8178445768/Tabdil_C.pdf.html
                .The best question deserves a better answer
                =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
                «پناه»می برم «به خدا»
                از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
                محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

                دیدگاه


                  پاسخ : کوچ کردن از کدویژن به AtmelStudio

                  نوشته اصلی توسط •.´™ مَسِِــــح`.•
                  چیزه خاصی ندراه به راحتی برای کامپایلر مورد نظر شما قابل تغیره
                  کد:
                  http://s6.picofile.com/file/8178445768/Tabdil_C.pdf.html
                  چشمام قرمز شد تا تونستم کد ها تون را ببینم . : اگه هم میشد اینا بصورت کتابخونه بود خیلی بهتر بود تا به برنامه اینکلود میکردم و فقط با نوشتن چند تا روتینش برنامه اجرا میشد فکر کنم بهتر بود
                  در هر صورت متشکرم . لطف کردین :nerd:

                  دیدگاه


                    پاسخ : کوچ کردن از کدویژن به AtmelStudio

                    pdf قابلیت بزرگنمایی داره :mrgreen: :mrgreen:
                    .The best question deserves a better answer
                    =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
                    «پناه»می برم «به خدا»
                    از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
                    محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

                    دیدگاه


                      پاسخ : کوچ کردن از کدویژن به AtmelStudio

                      نوشته اصلی توسط سمیراا
                      ببخشید که دیر جواب میدم اقا سید . هر کاری میکردم اکانتم فعال نمیشد که جواب بدم
                      من یک سری توابع برای راه اندازی کانتر میکرو یا کتابخونش و هم چنین برای ال سی دی 240 ×128 گرافیکی برای راه اندازیش و توابعی در مورد تاچ این ال سی دی و ساعت با تاریخ شمسی میخواستم .
                      از توابع جناب نوربخش استفاده کردم ولی نتونستم روتینی پیدا کنم که بشه مقدار یه متغییر را روی ال سی دی نشون بدم
                      فکر کنم توابع و کتابخونه ها که ذکر کردم زیاد شد . :redface:
                      نمونه برنامه با فایل تست در پروتوس را قرار دادم . تابع TEST11 تو برنامه را چک کنید ببینید که چطوری میتونم مقدار متغییر C را که تو حلقه for هست روی ال سی دی نشون بدم . از چه روتینی استفاده کنم ممنون........

                      و یه سوال دیگه چطوری عکس ها را تو این ال سی دی قرار دهم / منظورم با چه نرم افزاری این کار را بکنم

                      http://p30up.ir/images/8vl35foyx5r3iucin7zg.rar
                      در صورتی که ال سی دی خاصی مد نظرتون هست بایستی یک مشخصاتی ازش بدید . در رابطه با ال سی دی ها کتابخانه ها و راه اندازهای نرم افزاری فراوانی وجود دارد .
                      در رابطه با برنامه تون :
                      وقتی شما میتوانید یک رشته را روی ال سی دی نمایش دهید ، پس به راحتی میتوانید یک دیتا آبجکت از نوع عددی هم نمایش دهید. به چه طریق ؟ باید عدد مورد نظرتون را به رشته تبدیل کنید . ( با کمک یک بافر موقتی) ( در ادامه توضیح میدم...)

                      من متاسفانه الان نمیتونم برنامه تون را کامپایل کنم . ولی در رابطه با اون قسمتی که مشکل داشتید ( حلقه for تابع test11 ) :
                      من تیکه کد را قرار میدهم و با هم اون رو بررسی میکنیم:
                      کد:
                      void test11(void)
                      {
                      //T6963_ClearGraphic();
                      	
                      LcdFontXScale(10);
                      LcdFontYScale(10);
                      LcdFont(AF12x16);
                      
                      
                      
                      //SetLine(0,1);
                       for (c = 0;c < 1000;c++);
                       {
                      	 
                       
                      
                      _delay_ms(500);
                       }
                       
                       
                      }
                      1- اولین نکته اینکه من نمیدونم این مشکل سهوا بودا یا اصلا قصد چیزه دیگه ای بوده که شما بعد از بستن پرانتز for یک ; گذاشتید . با اینکار اصلا بلوک دستورات for اجرا نمیشود.

                      2- دومین نکته : در رابطه با دیتا آبجکت c (یا همون متغییر c ) شما c را به عنوان یک دیتا آبجکت از نوع char تعریف کردید . چون شما فقط میخواید یک شمارنده داشته باشید زیاد نوعش مهم نیست چه char چه unsigned char چه int چه unsigned int چه .... . ولی باید به یک نکته توجه کنید که در تمام کامپایلرهای c دیتا آبجکت های از نوع char در همه جا یک بایتی هستند . یعنی شما میتوانید از 0 تا 255 داخلش قرار بدهید . ولی شما شرط پایانی را کوچکتر از 1000 گذاشتید . همونطور که گفتم امکان کامپایل برنامه را ندارم تا ببینم عکس العمل کامپایلر با این کد چیه ولی اگر کامپایل بشه ، به احتمال زیاد برنامه در همینجا حلقه بینهایت میخوره . چون با رسیدن مقدار c به 255 ، با اضافه شدن یک واحد به آن مقدارش 0 میشه و هیچوقت به شرط پایان نمیرسه پس یک حلقه بینهایت ایجاد میشه.

                      خوب ما فرض میکنیم شما متغییر c را از نوع unsigned int میگیرید تا گنجایش لازم را داشته باشه.

                      با اعمال تغییرات با توجه به موارد 1 و 2 کد به شکل زیر در می آید:
                      کد:
                      unsigned int c; 
                      
                      .
                      .
                      .
                      
                      
                      void test11(void)
                      {
                      //T6963_ClearGraphic();
                      	
                      LcdFontXScale(10);
                      LcdFontYScale(10);
                      LcdFont(AF12x16);
                      
                      
                      
                      //SetLine(0,1);
                       for (c = 0;c < 1000;c++)
                       {
                      	 
                       
                      
                      _delay_ms(500);
                       }
                       
                       
                      }

                      3- حالا با توجه به توضیحاتی که دادم برای اینکه مقادیر c را روی صفحه نمایش چاپ کنید باید اونو تبدیل به رشته کنید و سپس با توابعی که در اختیارتون هست روی صفحه نمایش چاپ کنید.
                      برای اینکار از یک کتابخانه معروف و استاندارد c استفاده میکنیم : stdlib.h
                      در این کتابخانه از تابع itoa استفاده میکنیم.(itoa مخفف integer to ASCII هست )
                      این تابع یک بافر (آرایه ای از بایت ها)میگیره به همراه عددی که میخواید تبدیل به رشته کنید و اونو میرزه داخل بافر (برای اینکه حداکثر مقدار c ، 999 میشود پس 3+1 بایت برای بافر کافیه ( 1 بایت برای اینکه همیشه آخر رشته کاراکتر با کد اسکی 0 قرار میگیرد))
                      برنامه به این شکل در می آید:
                      کد:
                      include <stdlib.h>
                      
                      .
                      .
                      .
                      
                      unsigned int c; 
                      
                      .
                      .
                      .
                      
                      
                      void test11(void)
                      {
                      //T6963_ClearGraphic();
                      	
                      LcdFontXScale(10);
                      LcdFontYScale(10);
                      LcdFont(AF12x16);
                      
                      
                      
                      //SetLine(0,1);
                       for (c = 0;c < 1000;c++)
                       {
                      	char temp_buffer[4];
                      	itoa(c,temp_buffer,10);
                      	
                      	//print temp_buffer on LCD
                      	T6963_PutString(temp_buffer);	 
                       
                      
                      _delay_ms(500);
                       }
                       
                       
                      }
                      راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                      کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                      نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                      http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                      انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                      دیدگاه


                        پاسخ : کوچ کردن از کدویژن به AtmelStudio

                        نوشته اصلی توسط سمیراا
                        جناب مرتضوی اگه جوابم را ندادین گوچ میکنم به همون جایی که بودم به زادگاه اصلیم کدویژن ها . :mrgreen:
                        من چند جا گفتم اینکه مطلقا یک چیز رو بزاریم کنار کار جالبی نیست . من خودم هم از کدویژن هم از اتمل استادیو استفاده میکنم . هر کدوم مزایای مخصوص به خودشو داره .
                        اینا همه تکنولوژی محسوب میشه ، اصلا مهم نیست با چی کار میکنید ، بلد بودن کار با این چیزا ( محیط های برنامه نویسی یا زبان های برنامه نویسی یا ماشین ها ( میکروکنترلر ها با پردازنده های مختلف) ) اصلا فن خاص و کار مهمی محسوب نمیشه . اینا همه تکنولوژی هستند . مهم مفاهیمه ، همون چیزایی که تو دانشگاه ها یا با مطالعه مفاهیم از منابع مختلف که برای انجام پروژه در بستر کار انجام میدید، بدست میاد. مهم اینکه که مفاهیم را به خوبی درک کرده باشید و بعد از اون بتونید فکرتون را چطور پیاده سازی کنید که اگر مفاهیم را خوب بدونید ، کار خیلی راحتیه(دیگه میدونید از بالا تا پایین باید چه اتفاقای بفته که فکر شما داخل یک سیستم اجرایی شه)
                        راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                        کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                        نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                        http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                        انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                        دیدگاه


                          پاسخ : کوچ کردن از کدویژن به AtmelStudio

                          ال سی دی 240 ×128 گرافیکی با چیپ ست T6963 :rolleyes:

                          اضافه شده در تاریخ :
                          نوشته اصلی توسط RubeuS

                          1- اولین نکته اینکه من نمیدونم این مشکل سهوا بودا یا اصلا قصد چیزه دیگه ای بوده که شما بعد از بستن پرانتز for یک ; گذاشتید . با اینکار اصلا بلوک دستورات for اجرا نمیشود.
                          عرض کنم که البته چون خیلی برنامه نوشتم و فولدر زیادی ساختم که برنامه هام توشون سیو بودن که فقط میخواستم بتونم یه عدد از مقدار متغییر سی را روی ال سی دی بیارم که نتونستم . بخاطر همین زیاد برام مهم نبوده که از چه نوع متغییری و مقدار ان چند باشه استفاده کردم و هم چنین فولدر اصلی برنامه را که تصحیح کرده بودم براتون
                          اپ نکرده بودم از این بابت معذرت میخوام تو زحمت افتادین :redface: .

                          اضافه شده در تاریخ :
                          کد های جدید را هم تست زدم و کامپایل کردم . ولی جز ایجاد چند تا نقطه روی ال سی دی اونم به اندازه فقط یه پیکسل چیزی نشون نداد .
                          و یک سوال در مورد این روتین یه کم تو ضیح بدین مخصوصا عدد 10 را از کجا اوردین
                          (itoa(c,temp_buffer,10
                          ممنونم :nerd: :nerd: :nerd:

                          اضافه شده در تاریخ :
                          نوشته اصلی توسط سمیراا
                          جناب مرتضوی اگه جوابم را ندادین گوچ میکنم به همون جایی که بودم به زادگاه اصلیم کدویژن ها . :mrgreen:
                          بله هر چیزی جای خودش و معایب و مزایای خودش را داره . جدی نبود :redface:

                          دیدگاه


                            پاسخ : کوچ کردن از کدویژن به AtmelStudio

                            در رابطه با کتابخانه برای کار با این ال سی دی ( T6963 ) یه مدت وقت لازمه تا روش کار کنم ، ولی چون من این دیوایس رو ندارم ، خودم نمیتونم تست کنم، یک کتابخانه ساده مینویسم و شما تست کنید ،اگر جواب گرفتید یواش یواش ارتقاش میشه داد . الان به دلیل تعطیلات یکم وقتم آزاده میتونم روش کار کنم ،


                            در رابطه با تابع itoa من توضیحاتی که برای این تابع نوشته شده قرار میدهم:
                            کد:
                            /**
                              \brief Convert an integer to a string.
                            
                              The function itoa() converts the integer value from \c val into an
                              ASCII representation that will be stored under \c s. The caller
                              is responsible for providing sufficient storage in \c s.
                            
                              \note The minimal size of the buffer \c s depends on the choice of
                              radix. For example, if the radix is 2 (binary), you need to supply a buffer
                              with a minimal length of 8 * sizeof (int) + 1 characters, i.e. one
                              character for each bit plus one for the string terminator. Using a larger
                              radix will require a smaller minimal buffer size.
                            
                              \warning If the buffer is too small, you risk a buffer overflow.
                            
                              Conversion is done using the \c radix as base, which may be a
                              number between 2 (binary conversion) and up to 36. If \c radix
                              is greater than 10, the next digit after \c '9' will be the letter
                              \c 'a'.
                              
                              If radix is 10 and val is negative, a minus sign will be prepended.
                            
                              The itoa() function returns the pointer passed as \c s.
                            */
                            extern char *itoa(int __val, char *__s, int __radix);
                            همین طور که نوشته این تابع یک عدد میگیرد(پارامتر اول) و یک بافر هم میگرد (پارامتر دوم ) و عدد را تبدیل به رشته میکنه و داخل بافر میریزد.
                            و اما پارامتر سوم:
                            با مقدار دهی به این پارامتر بهش میفهمونید که مبنای عدد چنده . اینجا چون منظور شما چاپ عدد در مبنای دهدهی بود من مقدارش را 10 گذاشتم . پس بش گفتم مبنای عدد 10 باشه(ارقام از 0 تا 9 ) .
                            راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                            کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                            نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                            http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                            انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                            دیدگاه


                              پاسخ : کوچ کردن از کدویژن به AtmelStudio

                              دوستان دیگه هم اگر نیاز به درایور و لایبرری برای آی سی ، ماژول یا دیوایس خاصی در این محیط دارند تا قبل چهارم پنجم عید بگن تا اگر شد به عنوان عیدی سال نو قرار داده بشه :biggrin:
                              راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                              کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                              نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                              http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                              انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                              دیدگاه


                                پاسخ : کوچ کردن از کدویژن به AtmelStudio

                                نوشته اصلی توسط RubeuS
                                در رابطه با کتابخانه برای کار با این ال سی دی ( T6963 ) یه مدت وقت لازمه تا روش کار کنم ، ولی چون من این دیوایس رو ندارم ، خودم نمیتونم تست کنم، یک کتابخانه ساده مینویسم و شما تست کنید ،اگر جواب گرفتید یواش یواش ارتقاش میشه داد . الان به دلیل تعطیلات یکم وقتم آزاده میتونم روش کار کنم ،


                                در رابطه با تابع itoa من توضیحاتی که برای این تابع نوشته شده قرار میدهم:
                                کد:
                                /**
                                  \brief Convert an integer to a string.
                                
                                  The function itoa() converts the integer value from \c val into an
                                  ASCII representation that will be stored under \c s. The caller
                                  is responsible for providing sufficient storage in \c s.
                                
                                  \note The minimal size of the buffer \c s depends on the choice of
                                  radix. For example, if the radix is 2 (binary), you need to supply a buffer
                                  with a minimal length of 8 * sizeof (int) + 1 characters, i.e. one
                                  character for each bit plus one for the string terminator. Using a larger
                                  radix will require a smaller minimal buffer size.
                                
                                  \warning If the buffer is too small, you risk a buffer overflow.
                                
                                  Conversion is done using the \c radix as base, which may be a
                                  number between 2 (binary conversion) and up to 36. If \c radix
                                  is greater than 10, the next digit after \c '9' will be the letter
                                  \c 'a'.
                                  
                                  If radix is 10 and val is negative, a minus sign will be prepended.
                                
                                  The itoa() function returns the pointer passed as \c s.
                                */
                                extern char *itoa(int __val, char *__s, int __radix);
                                همین طور که نوشته این تابع یک عدد میگیرد(پارامتر اول) و یک بافر هم میگرد (پارامتر دوم ) و عدد را تبدیل به رشته میکنه و داخل بافر میریزد.
                                و اما پارامتر سوم:
                                با مقدار دهی به این پارامتر بهش میفهمونید که مبنای عدد چنده . اینجا چون منظور شما چاپ عدد در مبنای دهدهی بود من مقدارش را 10 گذاشتم . پس بش گفتم مبنای عدد 10 باشه(ارقام از 0 تا 9 ) .
                                ممنون از توضیحات
                                پیشنهادم اینه که برای این که وقتتون گرفته نشه . برای راه اندازی این ال سی دی . و با توجه به این که جناب نور بخش هم زحمت کشیدن و کتابخونش را نوشتن ایا بهتر نیست که همین کتابخونه را کامل کنید و قرار بدین و با توجه به این هم که جناب نوربخش کتابخونه ای برای تاچ و ساعت برای این ال سی دی قرار ندادن اگه لطف کنید و زحمت بکشین این ها را کامل کنید و قرار بدین عالی میشه . البته نظرم من بود :rolleyes:

                                دیدگاه

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