اطلاعیه

Collapse
No announcement yet.

توابع فونت فارسی - انگلیسی برای ARM تحت KEIL

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

    #16
    پاسخ : توابع فونت فارسی - انگلیسی برای ARM تحت KEIL

    نوشته اصلی توسط LOG
    فایل هگز که دقیقا همونی هست که خودتون گذاشتید بدون هیچ تغییری
    بعد همون پروژه خودتون هم که جواب میده 12 تا وارنینگ داره اینا بخاطره چی هست


    ارورها هم اینا هستند
    Build target 'Target 1'
    linking...
    22.axf: Error: L6218E: Undefined symbol BkColor (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol Circle_Fill (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol FgColor (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol FontHeight (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol FontSpace (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol FontXScale (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol FontYScale (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol Horizontal (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol LCDBacklight (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol LCDFillRect (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol LCDInit (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol LCDPutPixel (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol LcdFont (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol Line (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol PutChar (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol Puts (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol Reverse (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol RoundRectangle (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol SetLetter (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol SetLine (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol TextBox (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol cursorX (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol delay_ms (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol rot (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol xfunc_out (referred from 22.o).
    22.axf: Error: L6218E: Undefined symbol xprintf (referred from 22.o).
    Target not created
    با سلام،

    وارنینگ ها اصلا مهم نیستند، علتش اینه که Keil از سبک برنامه نویسی من خیلی خوشش نمیاد، خوب منم از
    Keil خوشم نمیاد، خوب که چی!!!

    و اما این ارور ها، بنظر میاد که شما توی main یا همون روتین اصلی که ظاهرا اسمش 22 هستش، دو یا چند تا از include های زیر رو انجام ندادی :

    #include "TFT\ili9325.h"
    #include "Graphic\Graphic.h"
    #include "Monitor\monitor.h"

    #include "FONT\font\f9x14.h"
    #include "FONT\font\AF12x16.h"
    #include "FONT\Font.h"

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

    Sh_Nourbakhsh@Yahoo.com

    http://s2.picofile.com/file/7170362468/_Wall_e_.jp

    دیدگاه


      #17
      پاسخ : توابع فونت فارسی - انگلیسی برای ARM تحت KEIL

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

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

      make compiler happy

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

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

      مثلا کد زیر رو در نظر بگیرین:


      void do_something_on_str(char *path)
      {
      char temp[100];

      strcpy(temp, path);
      }


      این تابع صرف نظر از کار احمقانه ای که میکنه؛ تابع درست هست اما درست نوشته نشده. فرض (ضمنی) بر اینه که این تابع باید با رشته ای به طول ماکزیمم 99 کاراکتر کار کنه ولی اگر من برنامه نویس خنگ بازی در بیارم و یک رشته 200 کاراکتری براش پاس کنم چی میشه؟ مسلما خوشایند نیست. و ممکنه کل برنامه بخاطر یک اشتباه کوچیک بهم بریزه.
      تازه اینجا نه warningی هست و نه errorی.

      دیدگاه


        #18
        پاسخ : توابع فونت فارسی - انگلیسی برای ARM تحت KEIL

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

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

        make compiler happy

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

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

        مثلا کد زیر رو در نظر بگیرین:


        void do_something_on_str(char *path)
        {
        char temp[100];

        strcpy(temp, path);
        }


        این تابع صرف نظر از کار احمقانه ای که میکنه؛ تابع درست هست اما درست نوشته نشده. فرض (ضمنی) بر اینه که این تابع باید با رشته ای به طول ماکزیمم 99 کاراکتر کار کنه ولی اگر من برنامه نویس خنگ بازی در بیارم و یک رشته 200 کاراکتری براش پاس کنم چی میشه؟ مسلما خوشایند نیست. و ممکنه کل برنامه بخاطر یک اشتباه کوچیک بهم بریزه.
        تازه اینجا نه warningی هست و نه errorی.
        با سلام،

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

        Sh_Nourbakhsh@Yahoo.com

        http://s2.picofile.com/file/7170362468/_Wall_e_.jp

        دیدگاه


          #19
          پاسخ : توابع فونت فارسی - انگلیسی برای ARM تحت KEIL

          - و تو این 2 تا عکس وسط هیچ نوسته ای نمیاد فقط کادر ها هست مشکل از کجاست ؟؟
          مشکل از تابع LCDFillRect می باشد! (نیازی نیست که حتما از این تابع تو main برنامتون مستقیما استفاده کنید،این یه روتینه که پایه برخی توابع مثل RectangleFill و TextBox می باشد)، وقتی شما از هر کدوم از این توابع استفاده کنید،آدرس دهی رجیسترهای درایور LCD یه جوری به هم میریزه و باعث میشه تا نوشته هاتون درست نشون داده نشه تا موقعی که یه بار از LCD_CLS استفاده کنی د
          برای تصحیح این مشکل، خطوط زیر را به انتهای تابع LCDFillRect که داخل فایل ili9325.c می باشد اضافه کنید:


          کد:
          #if !LCD_ORN_PORTRAIT
          		LCDOutIns(LCD_INS_START_ADX);			LCDOutDat(0);
          		LCDOutIns(LCD_INS_END_ADX);				LCDOutDat(0x013F);// 0x013F=319
          		LCDOutIns(LCD_INS_GRAM_ADX);			LCDOutDat(0);
          
          		LCDOutIns(LCD_INS_START_ADY);		LCDOutDat(0);
          		LCDOutIns(LCD_INS_END_ADY);			LCDOutDat(0x00EF); //0x00EF=239
          		LCDOutIns(LCD_INS_GRAM_ADY);		LCDOutDat(0);  
              }
          	#else 
              
          		LCDOutIns(LCD_INS_START_ADX);			LCDOutDat(0);
          		LCDOutIns(LCD_INS_END_ADX);				LCDOutDat(0x00EF); // 0x00EF= 239
          		LCDOutIns(LCD_INS_GRAM_ADX);			LCDOutDat(0);
          
          		LCDOutIns(LCD_INS_START_ADY);		LCDOutDat(0);
          		LCDOutIns(LCD_INS_END_ADY);			LCDOutDat(0x013F);//0x013F=319
          		LCDOutIns(LCD_INS_GRAM_ADY);		LCDOutDat(0);  
            # endif
          اونچیزی که در دانشگاه یاد میگیرید، "الفبایی" هست برای نوشتن یک "رمان" !!

          دیدگاه


            #20
            پاسخ : توابع فونت فارسی - انگلیسی برای ARM تحت KEIL

            عرض سلام خدمت اساتید گرامی و جناب نور بخش :smile:
            من میخوام این کتابخونه رو برای میکروی LPC1768 راه اندازی کنم . اگر که این کار قبلا انجام شده که بی زحمت لینک بدین و اگه نه لطفا راهنمایی کنید چطور میتونم با تغییرات توی فایل ili9325config.h این کارو انجام بدم و سوالم اینه؟ :read:
            لطفا بگید این رجیستر هایی که معرفی کردید دقیقا چی هستن و به چه کار میان؟ :read: :question:
            LCD_CS_PIO
            LCD_CS_PID
            LCD_CS_BIT

            البته اینو میدونم که این برای تنظیم بایه CS هستش ولی اینکه PIO و PID و BIT مال چی هست رو نمیدونم. ممنون که راهنمایی میکنید :applause:
            هر سری یه فکری داره! :read:
            ///////////////////////////////////////////////////////////

            دیدگاه


              #21
              پاسخ : توابع فونت فارسی - انگلیسی برای ARM تحت KEIL

              با سلام،

              لطفا بگید این رجیستر هایی که معرفی کردید دقیقا چی هستن و به چه کار میان؟ :read: :question:
              LCD_CS_PIO
              LCD_CS_PID
              LCD_CS_BIT
              در هدر فایل ili9325config.h با انجام این تعاریف به رجیسترهای پین های مورد نظر اشاره شده ...

              LCD_CS_PIO به Base Address پین مورد نظر اشاره میکنه
              LCD_CS_PID هم به Parallel IO Controller پین مورد نظر اشاره میکنه
              LCD_CS_BIT به شماره پین مورد نظر اشاره میکنه

              جهت گاهی بیشتر به دیتاشیت AT91SAM مراجعه و قسمت (Parallel Input/Output Controller (PIO رو ( خصوصا بلوک دیاگرام های ارائه شده رو ) مطالعه کنید.

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

              Sh_Nourbakhsh@Yahoo.com

              http://s2.picofile.com/file/7170362468/_Wall_e_.jp

              دیدگاه


                #22
                پاسخ : توابع فونت فارسی - انگلیسی برای ARM تحت KEIL

                با سلام و خسته نباشید به آقای نوربخش.این کتابخانه بسیار عالی هست .

                شما برای نمایش کلمات فارسی آنها را بصورت مستقیم در کیل می نویسید یا از برنامه هایی مثل notepad++ استفاده می کنید؟
                وقتی از کیل مستقیما فارسی می نویسم در ال سی دی درست نمایش داده نمی شود ولی وقتی فایل پروژه را با notepad ادیت میکنم و فارسی می نویسم در ال سی دی بصورت درست نمایش داده می شود .

                دیدگاه


                  #23
                  پاسخ : توابع فونت فارسی - انگلیسی برای ARM تحت KEIL

                  سلام و خسته نباشید خدمت تمامی دوستان و تشکر از آقای نور بخش بابت کتابخانه خیلی مفیدشان
                  با اجازه آقای نور بخش:
                  در این کتابخانه حرف "ک" به درستی تعریف نشده و مشکل داره
                  برای رفع این مشکل بنده راهی پیدا کردم و کد کوتاهی به برنامه اضافه کردم و مشکل به زیبایی حل شد.
                  دوستانی که میخوان این مشکل براشون حل بشه طبق روند ذیل کد نویسی کنید:
                  در تابع PutsPE (برای من خط 506) در کتابخانه Font.c در دستور switch(curnLet) انتهای دستور کد زیر را وارد کنید:
                  :case 0x98
                  ;curnLet =0xDF
                  :break
                  و همینطور در دستور switch(nextLet) گد زیر را وارد کنید:
                  ;case 0x98
                  ;nextLet =0xDF
                  :break

                  دلیل: ادغام دو پست برای جلوگیری از اسپم

                  با اجازه آقای نور بخش:
                  با اجازه آقای نوربخش و آقای کی نژاد
                  برای فارسی نویسی در کیل از آموزشی که آقای کی نژاد دادند استفاده کنید و در برنامه notepad++کدهاتون رو تغییر بدین

                  دیدگاه

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