اطلاعیه

Collapse
No announcement yet.

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

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

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

    دوستان سلام، :bye

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

    1 - پروژه توی Keil و با هدر بورد AT91SAM7X256 انجام و کاملا تست شد. ( اصلا هم از این Keil خوشم نیومد، مثل کدویژنه، میخوام برم سراغ WinARM بهتره :surprised: (
    2 – توابع طوری تغییر داده شده که با کمترین تغییرات لازم، در انواع محیط های برنامه نویسی قابل استفاده باشند. ( قابل توجه کدویژنی های عزیز ! )
    3 – فایل پیوست شامل روتین های زیر هست :
    روتین کامل LCD معروف N96 که قصد دارم اگر وقت پیدا کنم، بعدا اصلاح و تکمیلش کنم.
    روتین Monitor که یه چیزی شبیه به Printf استاندارد هستش و خیلی کاربردیه.
    روتین های رسم گرافیک مخصوص دایره، خط، چهارگوش ساده و گوشه گرد و ....
    روتین های نوشتار فارسی، عربی و انگلیسی به همراه دو تا فونت که اصل اونها رو هم برای تغییرات بعدی گذاشتم.
    برنامه فونت ساز H. Reddmann که فونت ها رو با اون ساختم و روتین فونت رو هم بر اساس اون نوشتم.
    4 – آرایش سخت افزار هم توی هدر فایل ili9325config.h قابل مشاهده و تغییر دادن هستش ( سعی کردم که خیلی ماژولار باشه ! ) نیازی به تغییر آنچنانی نداره، فقط باید شماره پایه ها و A یا B پورت تعیین بشه. در ضمن، LCD در مد 16 بیتی استفاده شده.
    5 – چون وقتم محدود بود، نتونستم کامل تستشون کنم. ( برای درست کردن این تاپیک هم 2 روز دیر شد ) لطفا اگر باگی مشاهده شد، گزارش کنید، برطرف میکنم.
    6 – هدر فایل های مورد نیاز رو هم توی دایرکتوری پروژه گذاشتم تا از Keil مستقل باشه !

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

    http://www.4shared.com/file/SIUoOD2o/armPEfont_dist1.html

    خوش گذشت....
    مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

    Sh_Nourbakhsh@Yahoo.com

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

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

    جناب آقای نوربخش
    بسیار خرسندم که عزیزی مثل شما با سطح علمی بالا دربین ما هستید و باعث دلگرمی مان میشوید و جای بسیار تشکر دارد که لطف کردید و بعد از مدت کوتاهی که از درخواست دوستان و منجمله این حقیر نگذشته بود که فونت فارسی برای این نمایشگر در آرم را نیز قرار دادید.متاسفانه با کلمات کوتاه و ناقص خود نمیتوانم که امتنان قلبی خود را بیان کنم ولی ارزومند موفقیت روز افزونتان هستم و امیدوارم روزی بتوانیم گوشه ای از زحمات شمارا هر چند کوچک جبران کنیم
    موفق و موید باشید
    حضرت علی(ع):
    أَشرَفُ الخَلاَئِقِ اَلوَفَا بِالعَهد.
    شریفترین خصلتها وفاى به عهد است.

    دیدگاه


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

      اولا خیلی خیلی ممنونم از شما بابت زحنت که کشیدید خیلی لطف کردید

      من اومدم پایه ها رو تغییر بدم که بشه مثل مجله نویز 8 ولی وقتی تغییر دادم هیچی نمایش نمیده

      و وقتی هم میخوام خودم یه پروژه جدید باز کنم واز اینا استفاده کنم ارور میده

      باید چیکار کنم
      لطقا شما یه مثال با ترتیب پایه های نویز 8 بزارید

      با تشکر

      دیدگاه


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

        نوشته اصلی توسط LOG
        اولا خیلی خیلی ممنونم از شما بابت زحنت که کشیدید خیلی لطف کردید

        من اومدم پایه ها رو تغییر بدم که بشه مثل مجله نویز 8 ولی وقتی تغییر دادم هیچی نمایش نمیده

        و وقتی هم میخوام خودم یه پروژه جدید باز کنم واز اینا استفاده کنم ارور میده

        باید چیکار کنم
        لطقا شما یه مثال با ترتیب پایه های نویز 8 بزارید

        با تشکر
        با سلام،

        توی فایل ili9325config.h تنظیمات سخت افزاری LCD هستش که باید تغییر بدید.
        من با init پروژه فایل اکسپلورر نویز 8 ، LCD خودم رو راه انداختم، پس init من هم LCD شما رو راه میندازه!

        تنظیمات سخت افزاری LCD ، مشابه فایل اکسپلورر نویز 8 مثل زیر میشه :
        کد:
        	//******* NOISE8 file explorer project *******
        	//********************************************
        	//#define TFTLCD_DATAPORT_B       
        	//#define TFTLCD_DATAPORT_OFFSET   0
        
        	//#define TFTLCD_CONTROLPORT_A     
        	//#define TFTLCD_RST         26
        	//#define TFTLCD_RS          27
        	//#define TFTLCD_CS          28
        	//#define TFTLCD_WR          29
        	//#define TFTLCD_RD          30  
        
        
        	//**** Pins definition ****
        	//--- DATA ---
        	volatile AT91PS_PIO						LCD_DB_PIO 			= AT91C_BASE_PIOB;
        	#define												LCD_DB_PID				AT91C_ID_PIOB
        	
        	#define 											LCD_DB_OFFSET			0
        
        	//--- CTRL1 ---
        	volatile AT91PS_PIO						LCD_CS_PIO 			= AT91C_BASE_PIOA;
        	#define												LCD_CS_PID				AT91C_ID_PIOA
        	#define 											LCD_CS_BIT				AT91C_PIO_PA28
        
        	volatile AT91PS_PIO						LCD_RS_PIO 			= AT91C_BASE_PIOA;
        	#define												LCD_RS_PID				AT91C_ID_PIOA
        	#define 											LCD_RS_BIT				AT91C_PIO_PA27
        
        	volatile AT91PS_PIO						LCD_RD_PIO 			= AT91C_BASE_PIOA;
        	#define												LCD_RD_PID				AT91C_ID_PIOA
        	#define 											LCD_RD_BIT				AT91C_PIO_PA30
        
        	volatile AT91PS_PIO						LCD_WR_PIO 			= AT91C_BASE_PIOA;
        	#define												LCD_WR_PID				AT91C_ID_PIOA
        	#define 											LCD_WR_BIT				AT91C_PIO_PA29
        	
        	//--- CTRL2 ---
        	volatile AT91PS_PIO						LCD_RST_PIO 		= AT91C_BASE_PIOA;
        	#define												LCD_RST_PID				AT91C_ID_PIOA
        	#define 											LCD_RST_BIT				AT91C_PIO_PA26
        	
        	volatile AT91PS_PIO						LCD_BL_PIO 			= AT91C_BASE_PIOA;
        	#define												LCD_BL_PID				AT91C_ID_PIOA
        	#define 											LCD_BL_BIT				AT91C_PIO_PA25

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

        Sh_Nourbakhsh@Yahoo.com

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

        دیدگاه


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

          جناب آقای نوربخش
          با سلام میخواستم بدانم که منظورتان از این پایه BL همان پایه LED+ روی برد lcd است و این دستور برای چه کاری نوشته شده است چرا که در برنامه مجله نویز چنین پایه ای تعریف نشده است
          و بنده هنوز نتوانسته ام با وجود اعمال تغییرات برنامه جنابعالی را روی سخت افزار تست کنم
          volatile AT91PS_PIO LCD_BL_PIO = AT91C_BASE_PIOA;
          #define LCD_BL_PID AT91C_ID_PIOA
          #define LCD_BL_BIT AT91C_PIO_PA25
          با تشکر
          حضرت علی(ع):
          أَشرَفُ الخَلاَئِقِ اَلوَفَا بِالعَهد.
          شریفترین خصلتها وفاى به عهد است.

          دیدگاه


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

            نوشته اصلی توسط ناصر عظیمی
            جناب آقای نوربخش
            با سلام میخواستم بدانم که منظورتان از این پایه BL همان پایه LED+ روی برد lcd است و این دستور برای چه کاری نوشته شده است چرا که در برنامه مجله نویز چنین پایه ای تعریف نشده است
            و بنده هنوز نتوانسته ام با وجود اعمال تغییرات برنامه جنابعالی را روی سخت افزار تست کنم
            volatile AT91PS_PIO LCD_BL_PIO = AT91C_BASE_PIOA;
            #define LCD_BL_PID AT91C_ID_PIOA
            #define LCD_BL_BIT AT91C_PIO_PA25
            با تشکر
            با سلام،

            بله این پایه BL همون BackLight هستش و اتصالش اجباری نیست ولی حتما باید به یک پایه خالی و یا پایه ای که کار خاصی نداره دیفاین بشه....
            این برنامه، همونطور که توی پست اول گفتم کاملا تست شده، اگر جواب نگرفتید، آرایش سخت افزار خودتون رو بر اساس اون تغییر بدید و هگز ارائه شده رو استفاده و تست کنید. البته همونطور که پیداست، من کلا روی پورت B استفاده کردم، نباید مشکلی باشه، اگر احیانا نتونستید روی پورت A و B جواب بگیرید ( مث آرایش فایل اکسپلورر ) اطلاع بدبد تا من با این آرایش سخت افزاری هم تست کنم، شاید مورد خاصی باشه که فکر کنم بعیده!
            مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

            Sh_Nourbakhsh@Yahoo.com

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

            دیدگاه


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

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

              دیدگاه


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

                سلام میشه توضیح بدید از نرم افزار font چجوری میشه استفاده کرد و هگز کاکتر هارو بدست اورد

                دیدگاه


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

                  نوشته اصلی توسط LOG
                  من هم هنوز جواب نگرفتم شما لطف کنید یه مثال که سخت افزار مثل نویز 8 باشه رو تست کتید و اگه جواب گرفتید برنامتون رو اپلود کنید که ماه م استفاده کنیم
                  با سلام،

                  این هگز فایل پیوست بر اساس سخت افزار نویز 8 ( فایل اکسپلورر ) میباشد....

                  http://s2.picofile.com/file/7134966127/Prepared_HEX.rar.html

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

                  Sh_Nourbakhsh@Yahoo.com

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

                  دیدگاه


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

                    نوشته اصلی توسط علیرضا روزیطلب
                    سلام میشه توضیح بدید از نرم افزار font چجوری میشه استفاده کرد و هگز کاکتر هارو بدست اورد
                    با سلام، :bye

                    با توجه به اینکه برنامه فونت ادیتوری که این کتابخونه بر اساس اون نوشته شده (H. Reddmann ) به جهت استفاده بهینه از فضای حافظه، روش پیچیده ای رو برای ذخیره داده مربوط به فونت ها استفاده کرده، مشخص کردن دقیق اینکه چه کاراکتری دقیقا در کجای حافظه قرار داره امکان نداره چونکه ممکنه ابتدا و انتهای کاراکتر در بایت های آغاز و پایان، با کاراکترهای مجاور مشترک باشه!
                    این یعنی اینکه شما نمیتونید مثل هدر فایل سایر ادیتورها مثل LFG دقیقا به خونه های حافظه ای که یک کاراکتر خاص رو ذخیره کرده اشاره کنید.

                    در درجه اول، شما به توضیحات ابتدای هدر فایل فونت که استراکچر ذخیره داده در اون توضیح داده شده دقت کنید.

                    struct _FONT_ {
                    // common shared fields
                    uint16_t font_Size_in_Bytes_over_all_included_Size_it_self;
                    uint8_t font_Width_in_Pixel_for_fixed_drawing;
                    uint8_t font_Height_in_Pixel_for_all_Characters;
                    uint8_t font_Bits_per_Pixels;
                    // if MSB are set then font is a compressed font
                    uint8_t font_First_Char;
                    uint8_t font_Last_Char;
                    uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1];
                    // for each character the separate width in pixels,
                    // characters < 128 have an implicit virtual right empty row
                    // characters with font_Char_Widths[] == 0 are undefined

                    // if compressed font then additional fields
                    uint8_t font_Byte_Padding;
                    // each Char in the table are aligned in size to this value
                    uint8_t font_RLE_Table[3];
                    // Run Length Encoding Table for compression
                    uint8_t font_Char_Size_in_Bytes[font_Last_Char - font_First_Char +1];
                    // for each char the size in (bytes / font_Byte_Padding) are stored,
                    // this get us the table to seek to the right beginning of each char
                    // in the font_data[].

                    // for compressed and uncompressed fonts
                    uint8_t font_data[];
                    // bit field of all characters
                    }
                    که خلاصه اش میشه این :

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

                    حالا با توجه به توضیحات اخیر، و مطالعه دقیق روتین PutCharEN (و یا PutCharPE ) از فایل Font.c ، با توجه به دستورات ذیل، محل هر کاراکتر قابل محاسبه خواهد بود :

                    // calculate current character position on the table
                    for(Ccounter = 0; Ccounter < c-firstchar; Ccounter++)
                    bitsbischar += (PROGMEM_read_b(FontPointer[(unsigned int)(Ccounter)+FONT_HEADER_SIZE])); //c0_width +...+ cn_width
                    اما این همه کار نیست! چونکه رسم کاراکتر هم با توجه به توضیحات اولیه، نکات خاص خودش رو داره که با مطالعه روتین های اشاره شده، موضوع روشن تر خواهد شد.

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


                    خلاصه روتین اشاره شده، با حذف موارد اضافه محاسبه X و Y و اینا :

                    کد:
                    	// get current character width
                    	charwidth	= PROGMEM_read_b(FontPointer[(unsigned int)(c)+FONT_HEADER_SIZE-firstchar]);
                    	
                    
                    	// calculate current character position on the table
                    	for(Ccounter = 0; Ccounter < c-firstchar; Ccounter++)
                    		bitsbischar += (PROGMEM_read_b(FontPointer[(unsigned int)(Ccounter)+FONT_HEADER_SIZE]));	//c0_width +...+ cn_width
                    
                    
                    	bitsbischar 		*= FontHeight;																										//c_widths * FH
                    	bitsbischar 		+= (((unsigned short)(lastchar)-firstchar)+FONT_HEADER_SIZE)*8;		//plus font headers
                    	bytesbischar 		 = bitsbischar/8;									//
                    	bitoffset 			 = bitsbischar % 8;								//
                    	maske						 = bitoffset % 8;									//
                    
                    
                    	// draw character
                    	for(xc = 0; xc < charwidth; xc++)
                    	{
                    		for(yc = 0; yc < FontHeight; yc++)
                    		{
                    			if(maske > 7)
                    			{
                    				maske = 0;
                    				bcounter += 1;
                    			}
                    			byte = PROGMEM_read_b(FontPointer[bytesbischar + bcounter + 1]);
                    
                    			xPos = (unsigned short)xc*FontXScale + cursorX;
                    			yPos = (unsigned short)yc*FontYScale + cursorY;
                    			
                    
                    			for(sx = 0; sx < FontXScale; sx++)
                    			{
                    				for(sy = 0; sy < FontYScale; sy++)
                    				{
                    					if(bit_is_one(byte, maske))
                    					{
                    						PutPixel(xPos+sx, yPos+sy, FgColor);
                    					}
                    					else
                    					{
                    						PutPixel(xPos+sx, yPos+sy, BkColor);
                    					}
                    				}//for sy
                    			}//for sx
                    			
                    			maske++;
                    		}//for yc
                    	}//for xc
                    مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                    Sh_Nourbakhsh@Yahoo.com

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

                    دیدگاه


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

                      این فایل هگز جواب میده لطف میکنید سورس و بقیه چیزهاش رو هم بزارید
                      چون من از اون سورس اوب جواب نگرفتم و اون تغییرات رو هم که میدم ارور میده

                      دیدگاه


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

                        نوشته اصلی توسط LOG
                        این فایل هگز جواب میده لطف میکنید سورس و بقیه چیزهاش رو هم بزارید
                        چون من از اون سورس اوب جواب نگرفتم و اون تغییرات رو هم که میدم ارور میده
                        با سلام،

                        ولی این همون قبلیه بود که فقط پین ها رو تغییر داده بودم!

                        http://s2.picofile.com/file/7135178488/armPEfont_dist2.rar.html
                        مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                        Sh_Nourbakhsh@Yahoo.com

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

                        دیدگاه


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

                          ممنون این جواب داد ولی چند تا سوال
                          1- چرا وقتی من میخوام تو یه پروژه جدید ازش استفاده کنم ارور میده ؟
                          2- سرعت برنامه خیلی خیلی پایین ؟
                          3- و تو این 2 تا عکس وسط هیچ نوسته ای نمیاد فقط کادر ها هست مشکل از کجاست ؟؟

                          دیدگاه


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

                            با سلام،

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

                            Sh_Nourbakhsh@Yahoo.com

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

                            دیدگاه


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

                              فایل هگز که دقیقا همونی هست که خودتون گذاشتید بدون هیچ تغییری
                              بعد همون پروژه خودتون هم که جواب میده 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

                              دیدگاه

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