* جستجوي گوگل

Google


در كل اينترنت
در اين سايت

* نمايندگي هاي ECA

محصولات فروشگاه

تبليغات

* مجله تخصصي نويـــــز

مجله نویــز

نويسنده موضوع: فارسي نويسي در LCD هاي گرافيكي  (دفعات بازديد: 14090 بار)

0 کاربر و 1 مهمان درحال ديدن موضوع.

آفلاين ابراهیم جهاندار

  • هفت ستاره
  • *
  • تشکر
  • -اهدايي: 42
  • -دريافتي: 122
  • ارسال: 477
    • وب سایت شخصی ابراهیم جهاندار
فارسي نويسي در LCD هاي گرافيكي
« : دسامبر 05, 2007, 12:16:02 pm »
سلام!
پروژه اي را شروع نموديم ، براي برطرف كردن نياز خودمان و همچنين تصميم گرفتيم تا ان را عمومي و به صورت اپن سورس منتشر كنيم تا شايد بدرد بقيه هم بخوره .

هدف : فارسي نويسي 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
« آخرين ويرايش: فبريه 08, 2009, 12:47:11 am توسط زينب روشني »


آفلاين پيكسل

  • شش ستاره
  • *
  • تشکر
  • -اهدايي: 132
  • -دريافتي: 227
  • ارسال: 345
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #1 : دسامبر 05, 2007, 07:18:17 pm »
rezamansouri عزیز :

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

ابراهیم جان :

لطف کن نوع lcd و درایورشو مشخص کن
« آخرين ويرايش: دسامبر 05, 2007, 07:22:07 pm توسط Pixel3 »
حضرت علي (ع) : خداوند از جاهلان پيمان فراگيرى علم نگرفته ، مگر آنكه قبلا از دنشمندان پيمان تعليم دادن گرفته است .

آفلاين ابراهیم جهاندار

  • هفت ستاره
  • *
  • تشکر
  • -اهدايي: 42
  • -دريافتي: 122
  • ارسال: 477
    • وب سایت شخصی ابراهیم جهاندار
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #2 : دسامبر 05, 2007, 08:53:09 pm »
اين يك لايبراري high level هست . ما اول اين بستر رو ايجاد ميكنيم ، سپس درايور هاي سطح پايين رو براي LCD هاي مختلف درش قرار ميديم . من خودم الان روي شبيه ساز با KS0108 كار ميكنم .

آفلاين پيكسل

  • شش ستاره
  • *
  • تشکر
  • -اهدايي: 132
  • -دريافتي: 227
  • ارسال: 345
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #3 : دسامبر 08, 2007, 03:43:06 pm »
دوستانی که علاقمند به این بحث می باشند لطفاً ایده هاشون مطرح کنند
حضرت علي (ع) : خداوند از جاهلان پيمان فراگيرى علم نگرفته ، مگر آنكه قبلا از دنشمندان پيمان تعليم دادن گرفته است .

آفلاين ابراهیم جهاندار

  • هفت ستاره
  • *
  • تشکر
  • -اهدايي: 42
  • -دريافتي: 122
  • ارسال: 477
    • وب سایت شخصی ابراهیم جهاندار
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #4 : دسامبر 09, 2007, 11:45:58 am »
اولين تست



فونت رو درست كردم ، فقط بايد كاركتر ها دسته بندي بشن ، و برنامه اصلي نوشته بشه . اين عكس روند پيشرفت 10% يي كار رو نشون ميده .

آنلاين امیرعلی بلورچیان

  • مدیر سایت
  • *
  • تشکر
  • -اهدايي: 1195
  • -دريافتي: 3134
  • ارسال: 6924
    • کارشناس ارشد الکترونیک
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #5 : دسامبر 10, 2007, 12:00:26 am »
خوب حالا که بحث جدا ایجاد کردین بهتر هست که برنامش رو هم اینجا بزارین
*بازنده ها در هر جواب مشكلی را مي بينند، ولی برنده در هر مشكلی جوابی را مي بيند.
*از میان آنان که برای دعای باران به کوه میروند تنها کسانی به کار خود ایمان دارند که همراه خود چتر میبرند.

آفلاين ابراهیم جهاندار

  • هفت ستاره
  • *
  • تشکر
  • -اهدايي: 42
  • -دريافتي: 122
  • ارسال: 477
    • وب سایت شخصی ابراهیم جهاندار
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #6 : دسامبر 10, 2007, 12:44:22 am »
چشم ، برنامه رو اينجا ميزارم ، اما بهتره كه يكمي كامل تر بشه .

درخواست كمك رو هم دوباره اينجا تكرار ميكنم :

اگر كسي خواست در اين پروژه همكاري داشته باشه ميتونه در ساختن فونت كمك كنه . اگر كسي مايل بود بگه تا بگم چيكار كنه .

آفلاين پيكسل

  • شش ستاره
  • *
  • تشکر
  • -اهدايي: 132
  • -دريافتي: 227
  • ارسال: 345
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #7 : دسامبر 10, 2007, 10:51:59 pm »
چشم ، برنامه رو اينجا ميزارم ، اما بهتره كه يكمي كامل تر بشه .

درخواست كمك رو هم دوباره اينجا تكرار ميكنم :

اگر كسي خواست در اين پروژه همكاري داشته باشه ميتونه در ساختن فونت كمك كنه . اگر كسي مايل بود بگه تا بگم چيكار كنه .

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

آفلاين ابراهیم جهاندار

  • هفت ستاره
  • *
  • تشکر
  • -اهدايي: 42
  • -دريافتي: 122
  • ارسال: 477
    • وب سایت شخصی ابراهیم جهاندار
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #8 : دسامبر 11, 2007, 02:38:29 am »
اونها نياز نيست فعلانه . بعدا درستش ميكنيم . الان فارسي نويسي مهم تره .

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

فونت ي كه روش كار ميكنم :‌www.jahandar.ir/tools/p_font.rar

براي هر كركتر 3 نوع در نظر گرفته شده  . اولي شكسته سمت چپ ، دومي شكسته از هردو طرف ، سومي شكسته از سمت راست .

آفلاين ابراهیم جهاندار

  • هفت ستاره
  • *
  • تشکر
  • -اهدايي: 42
  • -دريافتي: 122
  • ارسال: 477
    • وب سایت شخصی ابراهیم جهاندار
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #9 : دسامبر 12, 2007, 02:17:13 am »
خوب پيشرفت خوبي رو داشتيم . تقريبا بيس كار اماده هست حالا بايد شاخو برگاش اضافه شن :




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


gpprintf("انجمن برق و الكترونيك ايران ");

آنلاين چياكو ناصري

  • هشت ستاره
  • *
  • تشکر
  • -اهدايي: 111
  • -دريافتي: 216
  • ارسال: 594
  • محل سكونت: تو موتورخونه ي جهنم (chia ي سابق)
    • گفته هاي بزرگان تاريخ
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #10 : دسامبر 12, 2007, 02:47:19 am »
سلام ببين اين نرم افزار فونت ساز ميتونه كمكت كنه خيلي جالب ساختنش :wink:
http://www.iranled.com/modules.php?name=News&file=article&sid=74
البته فكر كنم بيشتر واسه تابلو روانه اما احتمالا بشه واسه GLCD هم ازش استفاده كرد :nerd:
ِِDie for Life, Not Live to Die
Freedom Fighter
" ناخود آگاه، هريك از ما ، از ناميرائي خود يقين دارد " . فروید

آفلاين ابراهیم جهاندار

  • هفت ستاره
  • *
  • تشکر
  • -اهدايي: 42
  • -دريافتي: 122
  • ارسال: 477
    • وب سایت شخصی ابراهیم جهاندار
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #11 : دسامبر 13, 2007, 01:05:11 am »
تست بعدي . امروز كلا بيكار بودم نشستم سر اين :



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

بزودي هم ورژن بتا 1 اماده ميشه .

آفلاين ابراهیم جهاندار

  • هفت ستاره
  • *
  • تشکر
  • -اهدايي: 42
  • -دريافتي: 122
  • ارسال: 477
    • وب سایت شخصی ابراهیم جهاندار
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #12 : دسامبر 13, 2007, 02:36:58 am »
اين هم مثال زنده به درخواست دوستان .



هيچكس هيچ نظري ، سوالي ،‌ انتقادي ، چيزي نداره ؟! سورس رو هم بزودي ميزارم .
« آخرين ويرايش: دسامبر 13, 2007, 08:53:08 am توسط shankimout »

آفلاين mahm0ud

  • يك ستاره
  • *
  • تشکر
  • -اهدايي: 0
  • -دريافتي: 23
  • ارسال: 41
    • وبلاگی کارگاهی درباره ی موضوعات اجتماعی اطراف محمود
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #13 : دسامبر 14, 2007, 08:17:28 am »
واقعا برنامه ی عالی بود
من داشتم روی دات ماتریکس ها کار می کردم.
و استادمون گفت بشین براش فونت تعریف کن،منم داشتم فکر می کردم که چطوری بشینیم تک تک همه ی حروف رو پیکسل پیکسل تعریف کنیم.
دستتون درد نکنه واقعا عالی بود حالا نوبت اینه که این برنامه ها رو با هم مخلوط کنیم و یه برنامه ای بنویسیم که همه ی نیاز ها رو تو این زمینه برآورده کنه و
خروجی هگز بده هرچی فکرش رو می کنم می بینم خیلی چیزه توپی میشه :icon_razz: :wink:

آفلاين ابراهیم جهاندار

  • هفت ستاره
  • *
  • تشکر
  • -اهدايي: 42
  • -دريافتي: 122
  • ارسال: 477
    • وب سایت شخصی ابراهیم جهاندار
پاسخ : فارسي نويسي در LCD هاي گرافيكي
« پاسخ #14 : دسامبر 21, 2007, 03:05:35 am »
خوب ،

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

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

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

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

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

محتويات فايل

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

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

دريافت فايل : http://jahandar.ir/tools/PersianLibrary_Test.rar


تگ های جستجو


 

تاپیک های مرتبط

  موضوع / نويسنده پاسخ آخرين ارسال
51 پاسخ
7447 مشاهده
آخرين ارسال جون 26, 2010, 01:23:26 pm
توسط nanoware
5 پاسخ
1772 مشاهده
آخرين ارسال فبريه 07, 2007, 12:44:10 pm
توسط امیرعلی بلورچیان
5 پاسخ
1183 مشاهده
آخرين ارسال سپتامبر 15, 2008, 12:14:19 am
توسط ___ بادامی ___
6 پاسخ
767 مشاهده
آخرين ارسال فبريه 02, 2008, 05:49:40 pm
توسط eimangh
0 پاسخ
96 مشاهده
آخرين ارسال آگوست 18, 2007, 01:49:59 am
توسط زهــــرا گروســی