اطلاعیه

Collapse
No announcement yet.

طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

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

    #16
    پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

    نوشته اصلی توسط طراح
    دوست عزیز، با وجود آنکه شخصا با نرم افزار BASCOM کار نمی کنم اما پیرو پست شما یک بررسی اجمالی روی فایل font8x8.font انجام دادم و از محتوای این فایل مشخص است که کاراکترهای ASCII در این فایل بصورت 8x8 تعریف شده است. برای کاراکترهای اسکی گسترش یافته هم ظاهرا سمبل هایی را تعریف کرده است.با توجه به اینکه علیرغم نظر یکی از دوستان در پست های قبل، فونت فارسی را می توان صورت 8x8 تعریف کرد، کافی است شما با کمی وقت گذاشتن، فونت های مورد نظر خود را در فایل جدیدی تعریف کنید. اگر قصد انجام این کار را دارید در همینجا اعلام کنید تا بعضی معذورات برای نوشتن فونت فارسی را برای شما بیان کنم.

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

    در این روش برای ساختن یک فونت باید ابتدا یک فونت 8x8 رو فراخوانی کنیم (از فونتهای استاندارد که در sampels بسکام موجوده) سپس به جای تک تک کاراکتر های استاندارد، کاراکترهای فارسی رو جایگزین کنیم (زیبا نیودنش به کنار) از طرفی تعداد کاراکترهای استاندارد (شامل اعداد، حروف بزرگ، حروف کوچک، علامتها و سمبل ها) کمتر از کاراکترهای مورد نیاز برای فارسی هستند. از جایی که در فارسی برای مثال چهار نوع "خ" داریم. ( اول؛ وسط؛ آخر؛ چسبان)، مسئله کم آمدن کاراکتر برای ساخت فونت فارسی روشن میشه.

    همه اینها به کنار...
    از همه مهمتر وقتی بخوایم متنی رو نمایش بدیم باید طبق کاراکترهای استاندارد متن رو در آی سی ذخیره کنیم و همچنین کاراکترهای استاندارد رو از دست میدیم و دیگه بهش دسترسی نداریم!
    مثالی میزنم تا متوجه منظورم بشین:
    - به جای کاراکتر " S " ، حرف "سـ" رو جایگزین میکنیم
    - به جای کاراکتر "L " ، حرف "ل" رو جایگزین میکنیم
    - به جای کاراکتر " a " ، حرف " ا " رو جایگزین میکنیم
    - به جای کاراکتر " m " ، حرف " م " رو جایگزین میکنیم
    در نهایت برای نوشتن عبارت "سلام" باید حروف "Salam" رو در آی سی ذخیره کنیم. همیشه نمیشه اینطور راحت معادل سازی کنیم گاهی اوقات برای یک کاراکتر فارسی باید یک علامت رو بذاریم که خیلی وقتها برنامه نا مفهوم میشه
    مشکل دیگه اینه که حروف و اعداد و علامتهای انگلیسی رو از دست دادیم و فارسی رو جایگزین اون کردیم. در این صورت اگر بخوایم از انگلیسی استفاده کنیم، نمیتونیم.

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

    http://up.iranblog.com/Files3/c3d157664d244640aeac.rar

    حالا اگر نظری دارید بفرمایید تا ان شاء الله با کمک شما به نتیجه برسم.
    تشکر
    چقدر این ندیدن ها و نشنیدن ها مردم را خوشبخت کرده (دکتر علی شریعتی)

    دیدگاه


      #17
      پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

      منظور از پست قبل به هیچ وجه این نبود که در ناحیه کاراکترهای ASCII بخواهیم کاراکتر فارسی تعریف کنیم. بلکه منظور این بود که با حفظ کاراکترهای معمول شامل حروف و اعداد انگلیسی و سایر نمادها، حروف فارسی هم اضافه شود که برای این کار باید از ناحیه Extended ASCII استفاده شود. کل کاراکترهای فارسی (اگر اشتباه نکنم) 79 عدد است که شامل تمام مواردی که شما ذکر کردید، می شود و در این ناحیه هم به خوبی جا می شود. فقط مسئله آن است که چطور می توان این ناحیه را به عنوان آرگومان توابع BASCOM احضار کرد. در هرصورت چه توابع آماده BASCOM این امکان را داشته باشد و چه نداشته باشد و لازم باشد که تابع خاص برای آن نوشته شود، من برای شما تضمین می کنم که فارسی و انگلیسی را می توان تواما روی LCD نمایش داد و فردا اگر فرصتی داشته باشم درباره این موضوع بررسی خواهم کرد.
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


        #18
        پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

        ُسلام
        یکی از مشکلات بیسکام اینه که توابعش آماده است و خودت نمی تونی کتابخانه فراخوانی کنید. البته یک دستور Include داره ولی من تست کردم فقط یک بار فراخوانی می کنه و...!!!
        و نمی توان به صورت مداوم در برنامه آن را فراخوانی کرد!!
        حالا شما این دستور رو هم یک تستی بکنید شاید جواب داد. خوبی C اینه که هر چی تابع بخوای می تونی خودت تعریف کنید ولی در زبان بیسکام دستت بسته تره و...
        الکی بهش نمی گن بیسیک یا هلو :biggrin:

        دیدگاه


          #19
          پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

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

          دیدگاه


            #20
            پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

            نوشته اصلی توسط مجتبی بهادر
            ممنونم از شما.
            پس شدنیه!!!
            من شنیدم که با c میشه!! اما با بسکام نه!!
            برنامه اش با بسکام نوشته شده؟
            اگر با bascom نوشته شده، از کجا و چه منبعی کمک بگیرم؟
            من تا الان به صورتی که در پست بالا خدمتتون عرض کردم، فارسی نویسی رو انجام میدادم و به همین خاطر گفتم غیر اصولیه. چون یه روش ابداعی بود.
            اگر یه سرچ توی سایت بفرمایین خواهید دید که تمام پست هایی که در این رابطه زده شده بی جواب مونده و به نتیجه ای نرسیده.! (پستهایی که برای بسکام زده شده)
            اگر بشه عالیه.
            همانطور که قبلا گفته شد، شما می توانید فونت های فارسی خود را در ناحیه Extended ASCII تعریف کنید. اگر به محتوای فایل font8x8.font مراجعه کنید، مشاهده می کنید که بعد از کدهای معادل کاراکتر~ تعداد 129 کاراکتر دیگر موجود است که که از یک کاراکتر بعد از ~ می توانید فونت های فارسی را تعریف کنید. برای احضار این فونت ها هم یک راه استفاده از دستور CHR است. مثلا اگر فونت معادل یک فارسی را در کاراکتر شماره 128 تعریف کنید،دستور( LCD 1,1,CHR(128 عدد یک فارسی را در گوشه بالا و سمت چپ نمایش می دهد. برای نوشتن جملات هم می توانید از جمع چند CHR استفاده کنید.
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه


              #21
              پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی ب&amp

              نوشته اصلی توسط طراح
              همانطور که قبلا گفته شد، شما می توانید فونت های فارسی خود را در ناحیه Extended ASCII تعریف کنید. اگر به محتوای فایل font8x8.font مراجعه کنید، مشاهده می کنید که بعد از کدهای معادل کاراکتر~ تعداد 129 کاراکتر دیگر موجود است که که از یک کاراکتر بعد از ~ می توانید فونت های فارسی را تعریف کنید. برای احضار این فونت ها هم یک راه استفاده از دستور CHR است. مثلا اگر فونت معادل یک فارسی را در کاراکتر شماره 128 تعریف کنید،دستور( LCD 1,1,CHR(128 عدد یک فارسی را در گوشه بالا و سمت چپ نمایش می دهد. برای نوشتن جملات هم می توانید از جمع چند CHR استفاده کنید.
              جواب داد!!!
              جواب داااااااااااااااااااااااااااااااد!
              جناب طراح یه دنیا ممنون.
              هر چی تشکر کنم کمه.
              من تا الان چون یاد نداشتم کاراکترهای بالای 128 رو فراخوانی کنم، کاراکترهای اصلی رو عوض میکردم و به بقیه کاراکترها کاری نداشتم.
              آقا واقعا ازت ممنونم
              خیلی آقایی
              (دوستان و مدیران عزیز: ببخشید از ذوق و شوق زیاد یه پست خلاف قوانین زدم. به بزرگواری خودتون ببخشید!)





              حالا که اینطوری شد یه فونت با حال طراحی میکنم 8x8 و همینجا میذارم. :wow:

              اضافه شده در تاریخ :
              جناب طراح در رابطه با این برنامه که مدیریت محترم - جناب نحوی- گذاشتن، میشه یه توضیح مختصری بفرمایید؟
              http://www.eca.ir/forum2/index.php?topic=1259.0
              اینم یکی از روشهای فارسی نویسیه اما فکر کنم برای فارسی نویسی به این روش، باید توی کوتیشن فارسی رو بنویسیم (البته بر عکس) که فکر میکنم از کد نوشتن راحتتر باشه!

              منظورم به این صورته:
              lcdat 1,1,"مالس"
              با نوشتن عبارت "مالس" ، کلمه " سلام" در ال سی دی رویت میشه.. درسته؟

              اگر میشه یه توضیح مختصر هم در این رابطه بفرمایید یا اینکه به منبع بهم معرفی کنید تا وقت شما رو نگیرم!
              چقدر این ندیدن ها و نشنیدن ها مردم را خوشبخت کرده (دکتر علی شریعتی)

              دیدگاه


                #22
                پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

                خوشحالم از اینکه راهنمایی های انجام شده منجر به حل مشکل شما گردید. در تاپیکی که لینک آنرا ذکر کرده اید، راه حلی برای فارسی نویسی به شکل مورد نظر شما گفته نشده و با بررسی نرم افزار آن مشاهده می شود که بدون استفاده از دستور LCDAT و با روشن کردن تک تک نقاط به نمایش کاراکترها پرداخته است.
                برای اینکه بتوانید با نوشتن عبارت فارسی به منظور خود برسید، باید ابتدا بررسی کنید که به ازای هر کاراکتر فارسی در BASCOM چه کد معادلی در محدوده 128 تا 255 تولید می شود. سپس فونت معادل همان کاراکتر را در آدرس متناظر آن تعریف کنید. کد معادلی که BASCOM تولید می کند، وابستگی کاملی به انتخاب Font آن دارد. برای آنکه مطلب را بهتر متوجه شوید، در windows از منوی
                Start\All programs\Accessories\System Tools\Character Map برنامه را اجرا کنید و تیک Advanced view را در پایین صفحه بزنید. بعد فونت Courier را که BASCOM از آن استفاده می کند، انتخاب کنید. در فهرست کاراکترهای آن مشاهده می کنید که حروف فارسی بصورت ناقص وجود دارند و برای هر حرف هم یک کد معادل در پایین صفحه نمایش داده شده است.lمطابق آزمایشی که انجام شد، این همان کدی است که توسط این نرم افزار برای عبارات فارسی نوشته شده در دستور LCDAT تولید می شود. در این جدول مشاهده می شود که برخی حروف کوچک وجود ندارند. به همین دلیل در عمل اگر شما به عنوان عبارت مورد نظر "بب" را بنویسید ، برای هردو ب بزرگ و کوچک یک کد تولید می شود( 0xC8 یا 200 دسیمال)
                حال اگر در BASCOM فونت خود را از منوی Options\Environment\Font تغییر دهید در عمل مشاهده می شود که BASCOM کدی را برای هر کاراکتر آن فونت قرار می دهد که در نرم افزار Character Map از منوی Character set\Windows: Arabic در پائین صفحه داخل پرانتز قابل مشاهده است.
                با لحاظ تمام این موارد به نظر می رسد اگر با همان شیوه دستور CHR عمل شود، بهتر خواهد بود و فونت نرم افزار BASCOM و مسائلی که در نسخه های مختلف سیستم عامل ممکن است بوجود بیاید، تاثیری در صحت عملکرد نرم افزار نخواهد داشت.
                به این تاپیک هم مراجعه کنید:
                http://www.eca.ir/forum2/index.php?topic=35864.0
                اوژن: به معنای افکننده و شکست دهنده است
                دانایی، توانایی است-Knowledge is POWER
                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                دیدگاه


                  #23
                  پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

                  پیرو سوال دو نفر از دوستان، توضیح بیشتری در مورد شیوه فارسی نویسی در BASCOM داده می شود:
                  منبع تامین فونت های دستور LCDAT، فایل font8x8.font است(برای فونت 8x8). مثلا وقتی دستور "LCDAT 1,1,"L اجرا می شود، 8 بایت در این فایل متناظر با کاراکتر L وجود دارند که شکل فونت را تشکیل می دهند. با مراجعه به متن فایل این 8 بایت بصورت زیر هستند:
                  .db 0,127,64,64,64,64,0,0 ; L

                  این 8 بایت معرف 8 ستون تشکیل دهنده فونت L از چپ به راست هستند که در هر بایت بیت با کمترین ارزش متناظر بالاترین و بیت با بیشترین ارزش متناظر پائین تر نقطه است.



                  فونت های فارسی باید به همین ترتیب و بعد از کاراکترهای انگلیسی تعریف شوند. در مراجعه به فایل مذکور با 3 خط زیر مواجه می شویم:
                  .db 0,2,1,2,1,0,0,0 ; ~
                  .db 0,60,38,35,38,60,0,0 ;
                  .db 0,30,161,225,33,18,0,0 ; ¤

                  فونت های فارسی از محل همین خط سوم به بعد تعریف می شوند. مثلا اگر صفر فارسی در این محل تعریف شود، فایل به اینصورت تغییر می کند:
                  .db 0,2,1,2,1,0,0,0 ; ~
                  .db 0,60,38,35,38,60,0,0 ;
                  .db 0,0,48,72,48,0,0,0 ;0 farsi

                  برای احضار و نمایش این کاراکتر جدید باید از دستور( LCDAT 1,1,CHR(128 استفاده شود که مختصات 1,1 به عنوان مثال نوشته شده اند. بقیه فونت ها هم در ادامه فایل نوشته می شوند و برای فونت های بعدی هم آرگومان داخل CHR به همان ترتیب افزایش می یابد. مثلا فونت بعد از صفر فارسی با( CHR(129 احضار می شود و به همین ترتیب. از جمع عبارت های CHR هم برای نوشتن جمله می توان استفاده کرد. مثلا
                  LCDAT 1,1,CHR(128)+CHR(129)+"TEST"

                  اوژن: به معنای افکننده و شکست دهنده است
                  دانایی، توانایی است-Knowledge is POWER
                  برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                  وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                  قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                  اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                  ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                  دیدگاه


                    #24
                    پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

                    آقای طراح ممنون از زحماتی که کشیدید اما اگر براتون امکان داره یک کتابخونه طراحی کنید برای بیسکام که مثل فونت 8*8 بشه فراخونی کردو راحت فارسی تایپ کرد یا اگر وقت ندارید راهنمایی کنید من این کارا بکنم ممنون

                    دیدگاه


                      #25
                      پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

                      نوشته اصلی توسط زوار
                      آقای طراح ممنون از زحماتی که کشیدید اما اگر براتون امکان داره یک کتابخونه طراحی کنید برای بیسکام که مثل فونت 8*8 بشه فراخونی کردو راحت فارسی تایپ کرد یا اگر وقت ندارید راهنمایی کنید من این کارا بکنم ممنون
                      دوست عزیز. جناب طراح در پستهای بالا کاملا توضیخ دادن که چطور فونت فارسی بنویسیم. شما میتونی با استفاده از font editor موجود در بسکام، فونت فارسی بسازی.
                      اگر عجله نداری من دارم میسازم و طبق قولی که در پستهای بالا دادم، یک فونت 8x8 رو قراره بذارم توی همین تاپیک. در آینده ای نه چندان دور من این فونت رو میسازم (ان شاء الله...)
                      چقدر این ندیدن ها و نشنیدن ها مردم را خوشبخت کرده (دکتر علی شریعتی)

                      دیدگاه


                        #26
                        پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

                        این font editor کجای بیسکامه :eek:

                        دیدگاه


                          #27
                          پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

                          نوشته اصلی توسط زوار
                          این font editor کجای بیسکامه :eek:
                          tools/plugin manager
                          تیکشو که زدی دوباره نرم افزار رو راه اندازی کن
                          بعدش یه فونت 8x8 از sampling فراخوانی کن و از کاراکتر 128 به بعد، خودت تمام حروف فارسی رو طراحی کن. طراحی کردی توی سایت هم بذار
                          چقدر این ندیدن ها و نشنیدن ها مردم را خوشبخت کرده (دکتر علی شریعتی)

                          دیدگاه


                            #28
                            پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

                            آقا من از این دستور استفاده میکنم ارور میدهLCDAT 1,1,CHR(128) چرا؟ :eek:

                            دیدگاه


                              #29
                              پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی ب&#15

                              نوشته اصلی توسط زوار
                              آقا من از این دستور استفاده میکنم ارور میدهLCDAT 1,1,CHR(128) چرا؟ :eek:
                              1) برنامه بذار
                              2) font editor رو پیدا کزدی؟
                              3) کاراکتر تونستی بسازی؟
                              چقدر این ندیدن ها و نشنیدن ها مردم را خوشبخت کرده (دکتر علی شریعتی)

                              دیدگاه


                                #30
                                پاسخ : طریقه ساخت فونت فارسی برای lcd گرافیکی برای بیسکام

                                اینم برنامم font editor را پیدا کردم اما اگر بخوام خودم فونت بسازم فونتا خوب نمیشن و حالت شکسته داره جایی نیست که بشه فونتا را کپی کرد
                                $regfile = "m16def.dat"
                                $lib "ds1307clock.lib"
                                $lib "glcdKS108.lib"

                                'configure the scl and sda pins
                                Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portb , Ce = 2 , Ce2 = 3 , Cd = 0 , Rd = 6 , Reset = 7 , Enable = 1
                                A As Byte
                                Setfont Font8x8
                                Do
                                Lcd 1 , 1 , Chr(128)
                                Loop
                                End

                                $include "font8x8.font"

                                دیدگاه

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