اطلاعیه

Collapse
No announcement yet.

فارسی نویسی در LCD های گرافیکی

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

    فارسی نویسی در LCD های گرافیکی

    سلام!


    هدف : فارسی نویسی Native در Graphicآ‌ LCD
    پلاتفورم : AVR
    زبان برنامه نویسی : C و تحت استاندارد GNU99
    کامپایلر : AVR-GCC


    سعی میکنم یکسری توضیحات و نکات رو درباره استفاده از این کتابخونه بنویسم ، اگر سوالی داشتید که توضیح ندادم بگید .


    توضیحات و نکات :

    توسط این کتابخانه شما میتونید مستقیما در برنامه تون فارسی بنویسید و اونو نمایش بدید . برای اینکار کافیه فقط کتابخونه + موارد مورد نیاز دیگر را در سورس C تو Include کنین .

    این کتابخونه در حال حاضر فقط قادر به تشخیص کرکتر های UNICODE دوبایتی می باشد .

    درحال حاظر برای این کتابخونه یک فونت کامل بیشتر طراحی نشده و اون هم کوچکترین فونت قابل استفاده یعنی فونت 8*8 هست . البطه دو فونت دیگر هم طراحی شده که در حقیقت نمونه فونت Zar و Zeylan هست و با سایز 38pt و 18ptکه در حال حاضر فقط اعداد رو در بر میگیره .

    2 الگوریتم رندر در این کتابخونه وجود داره ، یکی الگوریتم چپ به راست معمولی ( فونتی که توسط نرم افزار LFGآ‌ تولید میشود ، هر 8 نقطه عمودی یک بایت ) و دیگری الگوریتم بیتی بالا به پایین ( فونتی که توسط نرم افزار FontGen تولید میشود ، هر 8 نقطه افقی یک بایت ) . اگر شما از فونتی استفاده کنید که فقط از یکی از این الگوریتم ها استفاده کنه الگوریتم دیگر بطور خودکار حذف میشه و ججم کتابخونه رو کمتر میکنه .

    شما برای استفاده از فونت ها باید اول اونها را در برنامه include کنید ، اینکار باید قبل از include کردن فایل هدر کتابخانه صورت بگیره ، اگر شما هیچ فونتی را include نکرده باشید ، با خطای "you have to include at least one font" روبرو میشید .

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

    شما میتونید فونت های با هر سایز دلخواه ( مضرب 8 ) را برای خودتون با یکی از دو نرم افزار ی که بالا گفتم طراحی کنید و با استفاده از الگویی در فونت پیشفرض موجود فایل هدر مربوط به فونت خودتون را بسازید . کافیه نوع رندر ، سایز طول و عرض و ... مشخص کنید .

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

    برای نوشتن توسط کتابخانه شما باید متن مورد نظر را از طریق stream تایین شده به کتابخونه تزریق کنید . اینکار دلایلی داره ، فعلانه بخاطر وجود یک سری محدودیت ها امکانش نیست که به صورت دایرکت متن را بنوسین .

    وقتی شما متنی را از طریق vprintf به استریم تزریق میکنید ، بعد از انجام جایگزینی های لازم و کلا تغییرات بر روی رشته ، استریم کرکتر ها رو دونه دونه به کتابخونه میفرسته ، و از اونجایی که یونیکد دو بایتی هست ما در هر دوبار که استریم وارپر تابع را صدا میزنه 1 کرکتر را تشخیص میدیم و اونو چاپ میکنیم .

    لازم به ذکر است شما میتوانید با تابع gpprintf ( در حقیقت ماکرو ) همانند printf و sprintf و کلا اعضای این خانواده رفتار کنید !

    مثلا برای اینکه توی GLCD بنویسیم " امروز پنجشنبه 1 دی 1386 " اینطور مینویسیم :
    gpprintf("امروز %s %i %s %i","پنجشنبه",1,"دی",1386 );

    بعد از نوشتن عدد ها در صورتی که بعد از اونها هیچ چیز دیگری در GLCD نمی نویسید حتما تابع flushBufferedNumbers را صدا بزنید تا اعداد بافر شده نمایش داده بشن .

    بعد از نوشتن کلمات در صورتی که بعد از اونها هیچ کرکتر دیگری در GLCD نمی نویسید حتما تابع ( ماکرو ) closeWord را صدا بزنید تا اخرین کرکتر بسته شود .

    با استفاده از تابع SetFont می توانید فونت را تغییر بدید ، اولین ارگیومنت این تابع مشخص کننده فونت مورد نظر هست ، که باید بجای اون ارگیومنت نام struct اون فونت را قرار بدید . مثال ها را ببنید متوجه میشید .

    بدلیل استفاده از یک سری قابلیت های AVR-LIBC فعلانه نمیشه اونو برای کدویژن تبدیل کرد


    مشکلات :


    - بزرگترین اشکال این کتابخونه اینه که نمیتونه کلمات شکسته رو بیاره به خط بعدی ! مثلا اگر من بخوام متن " کتابخانه فارسی نویسی " رو چاپ کنم ، " کتابخانه فارسی نو " رو در خط اول و " ویسی" رو در خط دوم نشون میده . در صورتی که اگر این مشکل برطرف بشه کلمه نویسی به خط بعد انتقال پیدا میکنه . برای رفع این مشکل باید الگوریتم اصلی برنامه یکم تغییر بکنه و یک بافر برای کرکتر ها هم اضافه بشه . ( البطه با استفاده از روش های غیر اصولی میشه این مشکل رو برطرف کرد ولی من از ماست مالی خوشم نمیاد ! ).

    ایراد بعدی که به این کتابخونه وارده اینه که ، اگر شما یک متنی رو چاپ کنید ، و اگر بعد از اون هیچ متن دیگه ای رو چاپ نکنید ، کتابخونه اخرین حرف رو به اصتلاح نمیبنده مثلا کلمه فارسی به صورت فارسیـ در میاد ، برای رفع این مشکل شما میتونید یه فاصله بعد از متنتون بزارید .

    این مشکل هم در اینده حل خواهد شد ، برنامه به اصتلاح End of line یا End of File رو نمیتونه تشخیص بده .


    و چندین مشکل دیگر در رابطه با ویژگی های زبان فارسی .



    از این به بعد تمامی اپدیت ها در پست اول قرار میگیرند + یک پست برای بالا امدن تاپیک .


    دریافت نسخه 0.3 : http://www.jahandar.ir/tools/plib_0_3.rar
    اخرین تغییرات : 6 فروردین 1387
    فتو بلاگ من
    کاردستی ها :
    روبات شطرنج باز ( یادگار دوران جوانی )
    فارسی نویسی مستقیم در نمایشگر های گرافیکی
    کتابچه خود آموز زبان توصیف سخت افزار Verilog

    #2
    پاسخ : فارسی نویسی در LCD های گرافیکی

    rezamansouri عزیز :

    ممکنه برنامتون طوری تغییر بدید که بتونه با انتخاب فونت و یک کلیک کدهای 8*8 یا 16*16 همه ی کاراکترها رو ایجاد کنه ؟

    ابراهیم جان :

    لطف کن نوع lcd و درایورشو مشخص کن
    حضرت علی (ع) : خداوند از جاهلان پیمان فراگیرى علم نگرفته ، مگر آنکه قبلا از دنشمندان پیمان تعلیم دادن گرفته است .

    دیدگاه


      #3
      پاسخ : فارسی نویسی در LCD های گرافیکی

      این یک لایبراری high level هست . ما اول این بستر رو ایجاد میکنیم ، سپس درایور های سطح پایین رو برای LCD های مختلف درش قرار میدیم . من خودم الان روی شبیه ساز با KS0108 کار میکنم .
      فتو بلاگ من
      کاردستی ها :
      روبات شطرنج باز ( یادگار دوران جوانی )
      فارسی نویسی مستقیم در نمایشگر های گرافیکی
      کتابچه خود آموز زبان توصیف سخت افزار Verilog

      دیدگاه


        #4
        پاسخ : فارسی نویسی در LCD های گرافیکی

        دوستانی که علاقمند به این بحث می باشند لطفاً ایده هاشون مطرح کنند
        حضرت علی (ع) : خداوند از جاهلان پیمان فراگیرى علم نگرفته ، مگر آنکه قبلا از دنشمندان پیمان تعلیم دادن گرفته است .

        دیدگاه


          #5
          پاسخ : فارسی نویسی در LCD های گرافیکی

          اولین تست



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

          دیدگاه


            #6
            پاسخ : فارسی نویسی در LCD های گرافیکی

            خوب حالا که بحث جدا ایجاد کردین بهتر هست که برنامش رو هم اینجا بزارین
            I ❤️ ECA

            دیدگاه


              #7
              پاسخ : فارسی نویسی در LCD های گرافیکی

              چشم ، برنامه رو اینجا میزارم ، اما بهتره که یکمی کامل تر بشه .

              درخواست کمک رو هم دوباره اینجا تکرار میکنم :

              اگر کسی خواست در این پروژه همکاری داشته باشه میتونه در ساختن فونت کمک کنه . اگر کسی مایل بود بگه تا بگم چیکار کنه .
              فتو بلاگ من
              کاردستی ها :
              روبات شطرنج باز ( یادگار دوران جوانی )
              فارسی نویسی مستقیم در نمایشگر های گرافیکی
              کتابچه خود آموز زبان توصیف سخت افزار Verilog

              دیدگاه


                #8
                پاسخ : فارسی نویسی در LCD های گرافیکی

                نوشته اصلی توسط shankimout
                چشم ، برنامه رو اینجا میزارم ، اما بهتره که یکمی کامل تر بشه .

                درخواست کمک رو هم دوباره اینجا تکرار میکنم :

                اگر کسی خواست در این پروژه همکاری داشته باشه میتونه در ساختن فونت کمک کنه . اگر کسی مایل بود بگه تا بگم چیکار کنه .
                فرمت Array فونتت رو بگو انشائ الله یه برنامه براش بنویسم ، تو کتابخونت رسم بیت مپ یا انیمیشن هم در نظر گرفتی ؟
                حضرت علی (ع) : خداوند از جاهلان پیمان فراگیرى علم نگرفته ، مگر آنکه قبلا از دنشمندان پیمان تعلیم دادن گرفته است .

                دیدگاه


                  #9
                  پاسخ : فارسی نویسی در LCD های گرافیکی

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

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

                  فونت ی که روش کار میکنم :آ‌www.jahandar.ir/tools/p_font.rar

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

                  دیدگاه


                    #10
                    پاسخ : فارسی نویسی در LCD های گرافیکی

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




                    عکس بالا حاصل دستور


                    gpprintf("انجمن برق و الکترونیک ایران "
                    فتو بلاگ من
                    کاردستی ها :
                    روبات شطرنج باز ( یادگار دوران جوانی )
                    فارسی نویسی مستقیم در نمایشگر های گرافیکی
                    کتابچه خود آموز زبان توصیف سخت افزار Verilog

                    دیدگاه


                      #11
                      پاسخ : فارسی نویسی در LCD های گرافیکی

                      سلام ببین این نرم افزار فونت ساز میتونه کمکت کنه خیلی جالب ساختنش
                      http://www.iranled.com/modules.php?n...cle&sid=74
                      البته فکر کنم بیشتر واسه تابلو روانه اما احتمالا بشه واسه GLCD هم ازش استفاده کرد :nerd:
                      ِِDie for Life, Not Live to Die
                      Freedom Fighter
                      " ناخود گاه، هریک از ما ، از نامیرائی خود یقین دارد " . فروید

                      دیدگاه


                        #12
                        پاسخ : فارسی نویسی در LCD های گرافیکی

                        تست بعدی . امروز کلا بیکار بودم نشستم سر این :



                        همونطور که میبینید یک سری از مشکلات دیگش هم حل شده .

                        بزودی هم ورژن بتا 1 اماده میشه .
                        فتو بلاگ من
                        کاردستی ها :
                        روبات شطرنج باز ( یادگار دوران جوانی )
                        فارسی نویسی مستقیم در نمایشگر های گرافیکی
                        کتابچه خود آموز زبان توصیف سخت افزار Verilog

                        دیدگاه


                          #13
                          پاسخ : فارسی نویسی در LCD های گرافیکی

                          این هم مثال زنده به درخواست دوستان .



                          هیچکس هیچ نظری ، سوالی ،آ‌ انتقادی ، چیزی نداره ؟! سورس رو هم بزودی میزارم .
                          فتو بلاگ من
                          کاردستی ها :
                          روبات شطرنج باز ( یادگار دوران جوانی )
                          فارسی نویسی مستقیم در نمایشگر های گرافیکی
                          کتابچه خود آموز زبان توصیف سخت افزار Verilog

                          دیدگاه


                            #14
                            پاسخ : فارسی نویسی در LCD های گرافیکی

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

                            دیدگاه


                              #15
                              پاسخ : فارسی نویسی در LCD های گرافیکی

                              خوب ،

                              ورژن 0.1 بتا اماده شد . مطمئنان مشکلات زیادی داره ،

                              از اون عکس های قبلی تا الان زمین تا اسمون فرق کرده ( بهتر شده )

                              یه مشکلی که نتونستم فعلانه رفعش کنم و اون فعلانه خیلی مهم نمی بینم اینه که برای اینکه اخر جمله بسته بشه و یا اعداد بعد از بافر شدن و ریورس شده نوشته بشن باید یه Space به عنوان end line تهشون گزاشت . البطه قابل حلله ولی باشه در ورژن های بعدی .

                              مشکلی دیگه ای هم که داره اینه که اگر یک کلمه بلند باشه و تو اون لاین جا نشه ، فقط حروفش رو میاره خط بعد . در ورژن بعدی سعی میکنم اینو حل کنم طوری که کلمه رو بیاره پایین .

                              دیگه چیزی به ذهنم نمیرسه . ساعت 2 هه !! خودتون تست کنید ببینید چه مشکلی توش پیدا میکنید

                              محتویات فایل

                              maxlib با کتابخونه های مورد نیاز و یه چندتا اضافی
                              سورس کد .
                              فایل elf برای دیباگ و شبیه سازی
                              فایل proteus . ورژن proteus هم 7 هستش . طبیعتا این فایل در ورژن های پایین تر باز نمیشه .

                              الان مدار glcd رو از روی برید بورد باز کردم ، وقت بستنشم ندارم ، اگر کسی مدارو بست یه عکس اینجا بزاره .

                              دریافت فایل : http://jahandar.ir/tools/PersianLibrary_Test.rar
                              فتو بلاگ من
                              کاردستی ها :
                              روبات شطرنج باز ( یادگار دوران جوانی )
                              فارسی نویسی مستقیم در نمایشگر های گرافیکی
                              کتابچه خود آموز زبان توصیف سخت افزار Verilog

                              دیدگاه

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