اطلاعیه

Collapse
No announcement yet.

ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

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

    ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

    وجود یه رابط کاربری گرافیکی آماده برای LCD های گرافیکی مثل LCD N96 میتونه باعث راحتی کار و افزایش سرعت و زیبایی پروژه هایی که انجام میدیم بشه.
    کسی از دوستان تا حالا چنین کاری کرده یا سورس آماده ای پیدا کرده ؟
    مثلا تو شکل زیر رابط گرافیکی موبایل Iphone رو میبینین.

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

    اگه دوستان پایه هستن میتونیم این پروژه رو به صورت گروهی انجام بدیم.

    #2
    پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

    چیزی مشابه این رو براحتی میشه انجام داد. لااقل چند سال پیش جزء یکی از افرادی بودم که کاری شبیه این رو انجام دادیم. اما مسئله شدن یا نشدنش نیست. میزان عملیاتی هست که باید میکرو انجام بده و این برای یک میکروی 16 بیتی هم (حداقل) کار زیادیه. مثلا فرض کنین اول کار بخوایین عملیات clipping رو برای یک خط انجام بدین. میدونین روی یک AVR مثلا 16 مگاهرتزی چقدر طول میکشه؟
    میشه این کارو انجام داد اما نه به صورت یک واحد نرم افزاری داخل برنامه اصلی خودتون بلکه با استفاده از یک میکرو که فرمانها رو بهش بفرستین تا اون در کنار میکروی اصلی شما کارها رو انجام بده. دقیقا مثل یک سری کارت های گرافیکی نسل قدیم که خودشون اقدام به کشیدن خط و دایره میکردن چون پروسسورها کند بودن. بعدها که پروسسور ها سریع شدن اونها هم نسلشون ورافتاد.
    ضمنا میزان حافظه بالایی هم برای انجام این عملیات مورد احتیاجه. مثلا فرض کنین یک 16 تا 32 کیلو بایت. که تا اینجای کار این میشه یک سیستم نسبتا کامل. با یک قیمتی در حدود 10 تومن که باید به قیمت LCD شما اضافه بشه. و این برای طرح های کوچیک مطلقا صرف نمیکنه.

    دیدگاه


      #3
      پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

      برا همین این تاپیکو تو بخش ARM ایجاد کردم.
      به نظرتون یه AT91SAM7X256 با کلاک 55MHz و 64KB RAM برای این کار کافی نیست؟البته طوری که حافظه و زمان پردازشی برای پروژه اصلی کاربر هم بافی بمونه.

      دیدگاه


        #4
        پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

        با سلام

        این لینک ها را بررسی بفرمایید.

        http://www.visualglcd.com/

        http://www.easygui.com/

        http://visual-glcd.software.informer.com/

        با سپاس
        گشتی در لاله زار
        http://www.eca.ir/forum2/index.php?topic=76138.0

        http://www.eca.ir/forum2/index.php?topic=76141

        دیدگاه


          #5
          پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

          به نظرتون یه AT91SAM7X256 با کلاک 55MHz و 64KB RAM برای این کار کافی نیست؟البته طوری که حافظه و زمان پردازشی برای پروژه اصلی کاربر هم بافی بمونه.
          تا پردازش اصلی تون چی باشه!

          ولی با استفاده از یک RTOS مثل Keil-RTX میشه عملیات گرافیکی رو با یک تسک با اولویت پایین انجام داد. ضمنا میشه یک مقدار صفحه تصویر رو ساده فرض گرفت تا نیاز به رم بالا هم خیلی کم بشه. چون عمده عملیات فقط نقاشیه و لاغیر.

          دیدگاه


            #6
            پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

            نوشته اصلی توسط reza_agha
            تا پردازش اصلی تون چی باشه!

            ولی با استفاده از یک RTOS مثل Keil-RTX میشه عملیات گرافیکی رو با یک تسک با اولویت پایین انجام داد. ضمنا میشه یک مقدار صفحه تصویر رو ساده فرض گرفت تا نیاز به رم بالا هم خیلی کم بشه. چون عمده عملیات فقط نقاشیه و لاغیر.
            منم هدفم همین بود که با RTX پیاده سازیش کنیم.ولی اینطوری تو پروژه هایی که بدون RTOS هستن نمیشه استفاده کرد.بهتره طوری باشه که بشه در هر دو حالت استفاده کرد.مثلا توابعی داشته باشه که کاربر باید در بازه های زمانی مشخص فراخوانیش کنه،چه با RTOS و چه بدون اون.
            لینک های که دوستمون Solsal گذاشتن هم پروژه های خیلی جالبی هستن.ولی همشون پولی هستن و به نظر میاد منوهای گرافیکی ابتدا تو کامپیوتر ایجاد میشن و بعد منوهای آماده شده تو برنامه استفاده میشن.
            نمیدونم دوستان با زبان J2me آشنا هستن یا نه.ولی یه چیزی در حد منوهای پیشفرض J2me در گوشی های جاوا میتونه کافی باشه.
            عناصر اصلی و پرکاربرد گرافیکی اینها هستن :

            Alert A screen that shows data to the user and waits for a certain period of time before proceeding to the next screen.
            ChoiceGroup A group of selectable elements intended to be placed within a
            DateField An editable component for presenting calendar date and time information that may be placed into a
            Gauge Implements a bar graph display of a value intended for use in a form.
            Image Holds graphical image data.
            List A screen containing a list of choices.
            TextBox A screen that allows the user to enter and edit text.
            StringItem An item that can contain a string.

            دیدگاه


              #7
              پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

              اصل و اساس این محیط ها به دو قسم تقسیم میشه (چی گفتم!!!) یکی اینها window های پشته ای استفاده میکنن و یکی هم overlap. فرم پشته ای ساده ترین نوعش هست و overlap یک فرم عمومی با احتیاج به رم پایی تر. در فرم پشته ای؛ هر پنجره که باز میشه باید قبل از باز شدن اطلاعات پشتش نگهداری بشه تا زمان بسته شده دوباره بازسازی بشه. ولی در حالت overlap در هر لحظه پس از انجام عمل باز یا بسته شدن یک پنجره یک سری محاسبات انجام میشه که بفهمیم چه قسمتی از کدوم پنجره احتیاج به بازسازی داره. و این یعنی مصرف رم کمتر ولی حجم عملیات بیشتر. ولی در این فرم پنجره ها ترتیب باز و بسته شدنشون مهم نیست در حالی که در فرم پشته ای اونی که اول باز شده آخر از همه هم بسته میشه.

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

              دیدگاه


                #8
                پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

                با سلام

                یک دوستی با نام کاربری egape که در مجله نویز 5 ، برنامه بازی ایشان به عنوان برنده چاپ شد،
                (برنده مسابقه طراحی جناب طراح )
                به مقدار زیادی در زمینه منو سازی برای LCD و رابط کاربر کار کرده اند،
                مطالب ایشان را هم مطالعه فرمایید.

                با سپاس
                گشتی در لاله زار
                http://www.eca.ir/forum2/index.php?topic=76138.0

                http://www.eca.ir/forum2/index.php?topic=76141

                دیدگاه


                  #9
                  پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

                  نوشته اصلی توسط reza_agha
                  اصل و اساس این محیط ها به دو قسم تقسیم میشه (چی گفتم!!!) یکی اینها window های پشته ای استفاده میکنن و یکی هم overlap. فرم پشته ای ساده ترین نوعش هست و overlap یک فرم عمومی با احتیاج به رم پایی تر. در فرم پشته ای؛ هر پنجره که باز میشه باید قبل از باز شدن اطلاعات پشتش نگهداری بشه تا زمان بسته شده دوباره بازسازی بشه. ولی در حالت overlap در هر لحظه پس از انجام عمل باز یا بسته شدن یک پنجره یک سری محاسبات انجام میشه که بفهمیم چه قسمتی از کدوم پنجره احتیاج به بازسازی داره. و این یعنی مصرف رم کمتر ولی حجم عملیات بیشتر. ولی در این فرم پنجره ها ترتیب باز و بسته شدنشون مهم نیست در حالی که در فرم پشته ای اونی که اول باز شده آخر از همه هم بسته میشه.
                  غیر از اینا در تمام این موارد هم باید مشخص کنین که ورودی اطلاعات شما چی هست؟ صفحه کلید. تاچ اسکرین یا کی پد.
                  ضمنا اینجور مواقع بهتره از فرم عملیاتی بر اساس رویداد استفاده کرد.
                  ورودی اطلاعات که همون تاچ N96 هست.اطلاعات تکمیلی یا یه مثال برنامه نویسی شده از کجا میشه پیدا کرد؟
                  اگه ممکنه شبیه سازی که خودتون قبلا کار کردین رو یکم توضیح بدین.

                  دیدگاه


                    #10
                    پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

                    برای شروع یک سری به SDK ویندوز بزنین. عملیات مربوط به کار روی Rectangle ها. بعد پای عملیات پایه گرافیکی و عملیات ROP وسط میاد. و کار با فونت ها و اجزاء پایه گرافیکی مثل خط و دایره و مستطیل و غیره. روال اینها که پیاده سازی شد بایستی در یک روال یک پنجره پایه بنام desktop ایجاد بشه که تمامی پنجره های بعدی بچه بی واسطه یا با واسطه این پنجره هستن. هر پنجره در محیط پدر خودش clip میشه. بنا براین بایستی روالهایی آماده بشه که بتونه تشخیص بده که آیا چه قسمتی از هر پنجره که احتیاج به بازسازی داره روی صفحه نمایش قابل دید هست و برای کل پنجره عملیات بازسازی انجام بشه ولی بطور فیزیکی برای اون قسمتی که قابل نمایش هست اجرا بشه. برای این مورد یک سری به ساختارهایی مثل DeviceContext و Region بزنین.
                    بعد از اون هر محدوده ذاتا مربع مستطیلی که بتونه به نحو خاصی به رویداد ها پاسخ بده میشه یک window. پس به ازای هر نوع خاص یک کلاس میخوایین که عملیاتی مثل کشیده شدن؛ فشار داده شده روی تاچ در محدوده اون پنجره؛ و باقی موارد رو انجام بده.
                    بقیه اش هم که کد خودتونه.

                    دیدگاه


                      #11
                      پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD


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

                      دیدگاه


                        #12
                        پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

                        Alert!
                        این چیزیه که شما میخوای داشته باشی. و مسلما نباید کل صفحه زیری خودشو بپوشونه. نه؟
                        فکرشو کردی وقتی حذف میشه زیرش چی میشه؟

                        ضمنا تعریف "Window" شامل کلیه محدوده های ذاتا مربع مستطیلی میشه که به فرم خاصی مدیریت میشه. مثلا یک Button یا یک TextEdit یک Window حساب میشه.
                        پس شرایطی پیش میاد که بیش از دو تا Window در یک زمان قابل نمایش باشه.

                        دیدگاه


                          #13
                          پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

                          آهان من فکر کردم منظورتون از ویندوز کل صفحه یا به عبارتی فرم اصلی هست. :agree:
                          َAlert که در جاوای موبایل کل صفحه رو پوشش میده و شامل یه عکس و یه تکست و یه زمان Timeout هست.در زبان J2me یه دستور برای switch_displayable بود که صفحه بعد Alert رو میگرفت و بعد Timeout شدن Alert اون صفحه رو نشون میداد.
                          فکر کنم وجود چنین تابعی برای سوئیچ مابین صفحات (فرم ها) لازم باشه.

                          الان دارم رو Keil یه شیئی شبیه Alert رو به زبان C++ تست میکنم ببینم چطور میشه از C++ برای ایجاد ویندوز ها استفاده کرد.
                          نظرتون در مورد استفاده از کلاس های C++ چیه ؟



                          دیدگاه


                            #14
                            پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

                            میدونین از لحاظ ساختاری میکروسافت ویندوز هم به صورت oop پیاده شده مخصوصا همین تیکه مدیریت پنجره ها(ببخشید حالش نیست هی دم به دم برم مود انگلیسی و برگردم) اما اجباری نیست که با زبان oop پیاده سازی شده باشه. کما اینکه پیاده سازیی که ما هم کردیم با سی و خیلی کم با اسمبلی بود.

                            دیدگاه


                              #15
                              پاسخ : ایجاد رابط کاربری گرافیکی (GUI) برای N96 LCD

                              منظورتون از oop ، همون C++ هست ؟

                              دیدگاه

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