سلام
من با استفاده از این کتابخانه برای نمایشگر tft2.4 تونستم متن فارسی و عددی نمایش بدم اردوینو هم مگا هست
ولی چون برنامه مربوط به نمایشگر های 64×128 هست کلا متن ها خیلی کوچک هستند و اطلاعات کتابخانه توضیح داده ولی اطلاعات برنامه نویسم زیاد خوب نیست که بتونم روش تغییرات اعمال کنم از دوستان کسی هست بتونه راهنماییم کنه
منبع کد و کتابخانه و توضیحات :
http://www.idreams.ir/راهنمای-فارسی-...رهای-پی/
کد برنامه :
و عکس خروجی نمایشگر
من با استفاده از این کتابخانه برای نمایشگر tft2.4 تونستم متن فارسی و عددی نمایش بدم اردوینو هم مگا هست
ولی چون برنامه مربوط به نمایشگر های 64×128 هست کلا متن ها خیلی کوچک هستند و اطلاعات کتابخانه توضیح داده ولی اطلاعات برنامه نویسم زیاد خوب نیست که بتونم روش تغییرات اعمال کنم از دوستان کسی هست بتونه راهنماییم کنه
منبع کد و کتابخانه و توضیحات :
http://www.idreams.ir/راهنمای-فارسی-...رهای-پی/
کد برنامه :
کد:
کد:
// Arduino-Persian-Reshaper // Copyright (C) 2018 Sadraldin Rastegar and Ramin Sangesari // https://github.com/idreamsi/arduino-persian-reshaper [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <SPI.h> [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <Wire.h> [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <Adafruit_GFX.h> [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <MCUFRIEND_kbv.h> uint16_t identifier; [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] BLACK 0x0000 [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] DARKBLUE 0x0010 [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] VIOLET 0x8888 [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] RED 0xF800 [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] GREEN 0x07E0 [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] CYAN 0x07FF [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] MAGENTA 0xF81F [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] YELLOW 0xFFE0 [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] WHITE 0xFFFF [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] GREY tft.color565(64, 64, 64); [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] GOLD 0xFEA0 [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] BROWN 0xA145 [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] SILVER 0xC618 [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] LIME 0x07E0 //This section should be modified according to your display type and library [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] setpixel(x, y, color) tft.writePixel(x, y, color) [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] LCDWidth tft.width() [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] ALINE_CENTER(t) (LCDWidth - ((LCDWidth - (LCDWidth - CalcTextWidth(t))) / 2)) - 2 [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] ALINE_RIGHT LCDWidth [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] ALINE_LEFT(t) LCDWidth - CalcTextWidth(t) //If you use SPI display, change the following lines according to your display type (I used the Arduboy) MCUFRIEND_kbv tft(A3, A2, A1, A0, A4); //If you use i2c display, uncomment this part. /* [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); */ //Persian Letters 8x8 const unsigned char PeChar[71][8] PROGMEM = { 0x00, 0x1C, 0x20, 0x08, 0x08, 0x08, 0x08, 0x00, //0 alef1 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, //1 alef2 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, //2 alef3 0x00, 0x00, 0x00, 0x01, 0x01, 0x06, 0x00, 0x02, //3 be1 0x00, 0x00, 0x40, 0x81, 0x81, 0x7E, 0x00, 0x10, //4 be2 0x00, 0x00, 0x00, 0x01, 0x01, 0x06, 0x00, 0x07, //5 pe1 0x00, 0x00, 0x40, 0x81, 0x81, 0x7E, 0x00, 0x38, //6 pe2 0x00, 0x03, 0x00, 0x01, 0x01, 0x06, 0x00, 0x00, //7 te1 0x00, 0x14, 0x40, 0x81, 0x81, 0x7E, 0x00, 0x00, //8 te2 0x02, 0x05, 0x00, 0x01, 0x01, 0x06, 0x00, 0x00, //9 the1 0x08, 0x14, 0x40, 0x81, 0x81, 0x7E, 0x00, 0x00, //10 the2 0x00, 0x00, 0x0C, 0x12, 0x01, 0x3E, 0x00, 0x04, //11 jim1 0x00, 0x00, 0x0C, 0x12, 0x01, 0x3E, 0x40, 0x3A, //12 jim2 0x00, 0x00, 0x0C, 0x12, 0x01, 0x3E, 0x00, 0x1C, //13 che1 0x00, 0x00, 0x0C, 0x12, 0x01, 0x3E, 0x40, 0x37, //14 che2 0x00, 0x00, 0x0C, 0x12, 0x01, 0x3E, 0x00, 0x00, //15 hee1 0x00, 0x00, 0x0C, 0x12, 0x01, 0x3E, 0x40, 0x38, //16 hee2 0x00, 0x20, 0x0C, 0x12, 0x01, 0x3E, 0x00, 0x00, //17 khe1 0x00, 0x20, 0x0C, 0x12, 0x01, 0x3E, 0x40, 0x38, //18 khe2 0x00, 0x00, 0x04, 0x02, 0x01, 0x12, 0x0C, 0x00, //19 dal 0x00, 0x10, 0x04, 0x02, 0x01, 0x12, 0x0C, 0x00, //20 zal 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x0C, //21 re 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x0C, //22 ze 0x02, 0x05, 0x00, 0x01, 0x01, 0x01, 0x02, 0x0C, //23 zhe 0x00, 0x00, 0x00, 0x15, 0x15, 0x6A, 0x00, 0x00, //24 sin1 0x00, 0x00, 0x00, 0x15, 0x95, 0x9A, 0x90, 0x60, //25 sin2 0x04, 0x0A, 0x00, 0x15, 0x15, 0x6A, 0x00, 0x00, //26 shin1 0x04, 0x0A, 0x00, 0x15, 0x95, 0x9A, 0x90, 0x60, //27 shin2 0x00, 0x00, 0x06, 0x29, 0x31, 0x5E, 0x00, 0x00, //28 sad1 0x00, 0x00, 0x06, 0x49, 0x91, 0x9E, 0x90, 0x60, //29 sad2 0x00, 0x10, 0x06, 0x29, 0x31, 0x5E, 0x00, 0x00, //30 zad1 0x00, 0x10, 0x06, 0x49, 0x91, 0x9E, 0x90, 0x60, //31 zad2 0x00, 0x20, 0x26, 0x29, 0x31, 0x7E, 0x00, 0x00, //32 taa 0x00, 0x28, 0x26, 0x29, 0x31, 0x7E, 0x00, 0x00, //33 zaa 0x00, 0x00, 0x03, 0x04, 0x04, 0x0F, 0x00, 0x00, //34 ein1 0x00, 0x00, 0x1E, 0x22, 0x1C, 0x77, 0x00, 0x00, //35 ein2 0x00, 0x1E, 0x22, 0x1C, 0x24, 0x23, 0x20, 0x1C, //36 ein3 0x00, 0x03, 0x04, 0x04, 0x0F, 0x10, 0x10, 0x0F, //37 ein4 0x00, 0x08, 0x03, 0x04, 0x04, 0x0F, 0x00, 0x00, //38 qein1 0x08, 0x00, 0x1E, 0x22, 0x1C, 0x77, 0x00, 0x00, //39 qein2 0x40, 0x1E, 0x22, 0x1C, 0x24, 0x23, 0x20, 0x1C, //40 qein3 0x08, 0x03, 0x04, 0x04, 0x0F, 0x10, 0x10, 0x0F, //41 qein4 0x04, 0x00, 0x06, 0x09, 0x09, 0x1E, 0x00, 0x00, //42 fe1 0x04, 0x00, 0x06, 0x89, 0x89, 0x7E, 0x00, 0x00, //43 fe2 0x06, 0x00, 0x06, 0x09, 0x09, 0x1E, 0x00, 0x00, //44 qaf1 0x06, 0x00, 0x06, 0x09, 0x49, 0x47, 0x41, 0x3E, //45 qaf2 0x00, 0x0F, 0x10, 0x1E, 0x01, 0x3E, 0x00, 0x00, //46 kaf1 0x00, 0x07, 0x08, 0x8E, 0x81, 0x7E, 0x00, 0x00, //47 kaf2 0x07, 0x0F, 0x10, 0x1E, 0x01, 0x3E, 0x00, 0x00, //48 gaf1 0x07, 0x0F, 0x10, 0x9E, 0x81, 0x7E, 0x00, 0x00, //49 gaf2 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x00, //50 lam1 0x00, 0x01, 0x01, 0x11, 0x21, 0x22, 0x1C, 0x00, //51 lam2 0x00, 0x00, 0x06, 0x09, 0x09, 0x36, 0x00, 0x00, //52 mim1 0x00, 0x04, 0x0A, 0x19, 0x29, 0x46, 0x40, 0x20, //53 mim2 0x00, 0x02, 0x00, 0x01, 0x01, 0x06, 0x00, 0x00, //54 noon1 0x00, 0x00, 0x08, 0x21, 0x41, 0x41, 0x22, 0x1C, //55 noon2 0x00, 0x00, 0x06, 0x09, 0x09, 0x07, 0x01, 0x0E, //56 vaav 0x08, 0x04, 0x0A, 0x15, 0x09, 0x36, 0x00, 0x00, //57 he1 0x00, 0x00, 0x30, 0x48, 0x56, 0xE9, 0x50, 0x20, //58 he2 0x00, 0x07, 0x09, 0x09, 0x05, 0x00, 0x00, 0x00, //59 he3 0x00, 0x08, 0x04, 0x0A, 0x11, 0x11, 0x0E, 0x00, //60 he4 0x00, 0x00, 0x00, 0x01, 0x01, 0x06, 0x00, 0x06, //61 ye1 0x00, 0x00, 0x00, 0x4C, 0x92, 0x89, 0x84, 0x78, //62 ye2 0x00, 0x06, 0x29, 0x48, 0x46, 0x41, 0x21, 0x1E, //63 ye3 0x0C, 0x12, 0x10, 0x08, 0x04, 0x00, 0x04, 0x00, //64 soal 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00, //65 tajob 0x00, 0x00, 0x00, 0x04, 0x08, 0x0C, 0x0C, 0x00, //66 vir 0x10, 0x08, 0x04, 0x04, 0x04, 0x04, 0x08, 0x10, //67 kmn1 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, //68 kmn2 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, //69 slash 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, //70 backslash }; //Persian Numbers 8x8 const unsigned char num[10][8] PROGMEM = { 0x00, 0x00, 0x00, 0x06, 0x09, 0x09, 0x06, 0x00, //0 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, //1 0x00, 0x09, 0x09, 0x0E, 0x08, 0x08, 0x08, 0x00, //2 0x00, 0x25, 0x25, 0x3A, 0x20, 0x20, 0x20, 0x00, //3 0x00, 0x03, 0x14, 0x14, 0x1F, 0x10, 0x10, 0x00, //4 0x00, 0x08, 0x04, 0x12, 0x21, 0x29, 0x16, 0x00, //5 0x00, 0x10, 0x21, 0x22, 0x1C, 0x08, 0x10, 0x00, //6 0x00, 0x11, 0x11, 0x0A, 0x0A, 0x04, 0x04, 0x00, //7 0x00, 0x04, 0x04, 0x0A, 0x0A, 0x11, 0x11, 0x00, //8 0x00, 0x06, 0x09, 0x09, 0x07, 0x01, 0x01, 0x00, //9 }; void setup() { tft.reset(); Serial.begin(9600); tft.reset(); identifier = tft.readID(); tft.begin(identifier); tft.fillScreen(0xF800); tft.setRotation(1); delay(2000); /* //Draw round rectangles display.drawRoundRect(0, 0, 128, 64, 3, WHITE); display.fillRoundRect(3, 3, 122, 18, 3, WHITE); // char txt[] = "فارسی نویسی در آردوینو"; PutCharPE(txt,ALINE_CENTER(txt),8,1,BLACK); char txt1[] = "کاری از :"; PutCharPE(txt1,ALINE_RIGHT-4,28,1,WHITE); char txt2[] = "صدرالدین رستگار"; PutCharPE(txt2,ALINE_LEFT(txt2)+2,38,1,WHITE); char txt3[] = "رامین سنگسری"; PutCharPE(txt3,ALINE_LEFT(txt3)+3,50,1,WHITE); */ //Draw round rectangles // tft.drawRoundRect(0, 0, 128, 64, 3, WHITE); // tft.fillRoundRect(3, 3, 122, 58, 3, WHITE); // char txt[] = "متنی جهت ازمایش"; PutCharPE(txt,ALINE_CENTER(txt),50,20,BLACK); char NUM[] = "09365555555"; //For correct representation, the numbers must be reversed. PutCharPE(strreverse(NUM),ALINE_CENTER(NUM),30,20,BLACK); //To make them visible on the display hardware! } void loop() { } char* strreverse(char* s) { char* beg = s-1, *end = s, tmp; while (*++end); while (end-- > ++beg) { tmp = *beg; *beg = *end; *end = tmp; } return s; } void drawBitmapPE(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color) { int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte uint8_t byte = 0; for(int16_t j=0; j<h; j++, y++) { for(int16_t i=0; i<w; i++) { if(i & 7) byte <<= 1; else byte = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); if(byte & 0x80) setpixel(x+i, y, color); } } } void PutCharPE(char *Text, int x, int y, int dis, uint16_t color){ int cursor_x = x-8; int cursor_y = y; int haalat = 0; unsigned char qloghat = ' '; //Previous word unsigned char loghat; unsigned char bloghat; //Next word unsigned char le; int d; while(le = *Text++){ //is Number ? if (le >= '0' && le <= '9') { d = le - '0'; loghat = le; } else if(le >= 128){ loghat = *Text++; loghat += 32; le += 32; if(loghat == 207){ if(le == 218 || le == 250){ loghat = 144; //گ } } else if(loghat == 166) { if(le == 218 || le == 250){ //چ loghat = 141; } else { loghat = 228; //ن } } } else { loghat = le; } if(loghat==172) { if(le==248 || le==32) { loghat=44; } } le = *Text++; if(le >= 128) { bloghat = *Text++; bloghat += 32; le += 32; if(bloghat == 207) { if(le == 218 || le == 250) { bloghat = 144; //گ } } else if(bloghat == 166) { if(le == 218 || le == 250) { //چ bloghat = 141; } else { bloghat = 228; //ن } } *Text--; *Text--; } else { bloghat = le; *Text--; } if(bloghat==172) { if(le==248 || le==32) { bloghat=44; } } int isunk = 0; if(qloghat==32 || qloghat=='\0' || qloghat==199 || qloghat==194 || qloghat==207 || qloghat==208 || qloghat==209 || qloghat==210 || qloghat==184 || qloghat==168 || qloghat==191 || qloghat==40 || qloghat==41 || qloghat==46 || qloghat==33 || qloghat==44 || qloghat==58 || qloghat==248) { if(bloghat==32 || bloghat=='\0' || bloghat==191 || bloghat==40 || bloghat==41 || bloghat==46 || bloghat==33 || bloghat==44 || bloghat==58 || bloghat==248){ haalat = 0; //Isolated } else { haalat = 1; //Final } } else { if(bloghat==32 || bloghat=='\0' || bloghat==191 || bloghat==40 || bloghat==41 || bloghat==46 || bloghat==33 || bloghat==44 || bloghat==58 || bloghat==248) { haalat = 2; //Initial } else { haalat = 3; //Medial } } switch(loghat){ case 48: //zero drawBitmapPE(cursor_x, cursor_y, num[d], 8, 8, color); cursor_x -= 7; break; case 49: //1 drawBitmapPE(cursor_x, cursor_y, num[d], 8, 8, color); cursor_x -= 5; break; case 50: //2 drawBitmapPE(cursor_x, cursor_y, num[d], 8, 8, color); cursor_x -= 7; break; case 51: //3 drawBitmapPE(cursor_x, cursor_y, num[d], 8, 8, color); cursor_x -= 8; break; case 52: //4 drawBitmapPE(cursor_x, cursor_y, num[d], 8, 8, color); cursor_x -= 8; break; case 53: //5 drawBitmapPE(cursor_x, cursor_y, num[d], 8, 8, color); cursor_x -= 8; break; case 54: //6 drawBitmapPE(cursor_x, cursor_y, num[d], 8, 8, color); cursor_x -= 8; break; case 55: //7 drawBitmapPE(cursor_x, cursor_y, num[d], 8, 8, color); cursor_x -= 7; break; case 56: //8 drawBitmapPE(cursor_x, cursor_y, num[d], 8, 8, color); cursor_x -= 7; break; case 57: //9 drawBitmapPE(cursor_x, cursor_y, num[d], 8, 8, color); cursor_x -= 6; break; case 32: //فاصله cursor_x -= 2; break; case 191: //؟ drawBitmapPE(cursor_x, cursor_y, PeChar[64], 8, 8, color); cursor_x -= 6; break; case 47: // / drawBitmapPE(cursor_x, cursor_y, PeChar[70], 8, 8, color); cursor_x -= 8; break; case 33: //! drawBitmapPE(cursor_x, cursor_y, PeChar[65], 8, 8, color); cursor_x -= 3; break; case 46: //. setpixel(cursor_x+6, cursor_y+5, color); setpixel(cursor_x+6, cursor_y+6, color); setpixel(cursor_x+5, cursor_y+5, color); setpixel(cursor_x+5, cursor_y+6, color); cursor_x -= 4; break; case 58: //: setpixel(cursor_x+6, cursor_y+2, color); setpixel(cursor_x+6, cursor_y+5, color); cursor_x -= 3; break; case ',': //، drawBitmapPE(cursor_x, cursor_y, PeChar[66], 8, 8, color); cursor_x -= 5; break; case 40: //( drawBitmapPE(cursor_x, cursor_y, PeChar[67], 8, 8, color); cursor_x -= 7; break; case 41: //) drawBitmapPE(cursor_x, cursor_y, PeChar[68], 8, 8, color); cursor_x -= 7; break; case 194: //آ drawBitmapPE(cursor_x, cursor_y, PeChar[0], 8, 8, color); cursor_x -= 7; break; case 199: //ا if(haalat == 0 || haalat == 1) { drawBitmapPE(cursor_x, cursor_y, PeChar[1], 8, 8, color); cursor_x -= 3; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[2], 8, 8, color); cursor_x -= 2; } break; case 200: //ب if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[3], 8, 8, color); cursor_x -= 3; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[4], 8, 8, color); cursor_x -= 8; } break; case 222: //پ if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[5], 8, 8, color); cursor_x -= 3; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[6], 8, 8, color); cursor_x -= 8; } break; case 202: //ت if(haalat == 1 || haalat == 3) { drawBitmapPE(cursor_x, cursor_y, PeChar[7], 8, 8, color); cursor_x -= 3; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[8], 8, 8, color); cursor_x -= 8; } break; case 203: //ث if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[9], 8, 8, color); cursor_x -= 3; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[10], 8, 8, color); cursor_x -= 8; } break; case 204: //ج if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[11], 8, 8, color); cursor_x -= 6; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[12], 8, 8, color); cursor_x -= 8; } break; case 141: //چ if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[13], 8, 8, color); cursor_x -= 6; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[14], 8, 8, color); cursor_x -= 8; } break; case 205: //ح if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[15], 8, 8, color); cursor_x -= 6; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[16], 8, 8, color); cursor_x -= 8; } break; case 206: //خ if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[17], 8, 8, color); cursor_x -= 6; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[18], 8, 8, color); cursor_x -= 8; } break; case 207: //د drawBitmapPE(cursor_x, cursor_y, PeChar[19], 8, 8, color); cursor_x -= 6; break; case 208: //ذ drawBitmapPE(cursor_x, cursor_y, PeChar[20], 8, 8, color); cursor_x -= 6; break; case 209: //ر drawBitmapPE(cursor_x, cursor_y, PeChar[21], 8, 8, color); cursor_x -= 5; break; case 210: //ز drawBitmapPE(cursor_x, cursor_y, PeChar[22], 8, 8, color); cursor_x -= 5; break; case 184: //ژ drawBitmapPE(cursor_x, cursor_y, PeChar[23], 8, 8, color); cursor_x -= 5; break; case 211: //س if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[24], 8, 8, color); cursor_x -= 7; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[25], 8, 8, color); cursor_x -= 8; } break; case 212: //ش if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[26], 8, 8, color); cursor_x -= 7; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[27], 8, 8, color); cursor_x -= 8; } break; case 213: //ص if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[28], 8, 8, color); cursor_x -= 7; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[29], 8, 8, color); cursor_x -= 8; } break; case 214: //ض if(haalat == 1 || haalat == 3) { drawBitmapPE(cursor_x, cursor_y, PeChar[30], 8, 8, color); cursor_x -= 7; } else if(haalat == 0 || haalat == 2){ drawBitmapPE(cursor_x, cursor_y, PeChar[31], 8, 8, color); cursor_x -= 8; } break; case 215: //ط drawBitmapPE(cursor_x, cursor_y, PeChar[32], 8, 8, color); cursor_x -= 7; break; case 216: //ظ drawBitmapPE(cursor_x, cursor_y, PeChar[33], 8, 8, color); cursor_x -= 7; break; case 217: //ع if(haalat == 0) { drawBitmapPE(cursor_x, cursor_y, PeChar[37], 8, 8, color); cursor_x -= 5; } else if(haalat == 1) { drawBitmapPE(cursor_x, cursor_y, PeChar[34], 8, 8, color); cursor_x -= 4; } else if(haalat == 2) { drawBitmapPE(cursor_x, cursor_y, PeChar[36], 8, 8, color); cursor_x -= 6; } else if(haalat == 3) { drawBitmapPE(cursor_x, cursor_y, PeChar[35], 8, 8, color); cursor_x -= 7; } break; case 218: //غ if(haalat == 0){ drawBitmapPE(cursor_x, cursor_y, PeChar[41], 8, 8, color); cursor_x -= 5; } else if(haalat == 1) { drawBitmapPE(cursor_x, cursor_y, PeChar[38], 8, 8, color); cursor_x -= 4; } else if(haalat == 2) { drawBitmapPE(cursor_x, cursor_y, PeChar[40], 8, 8, color); cursor_x -= 6; } else if(haalat == 3) { drawBitmapPE(cursor_x, cursor_y, PeChar[39], 8, 8, color); cursor_x -= 7; } break; case 161: //ف if(haalat == 1 || haalat == 3) { drawBitmapPE(cursor_x, cursor_y, PeChar[42], 8, 8, color); cursor_x -= 5; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[43], 8, 8, color); cursor_x -= 8; } break; case 162: //ق if(haalat == 1 || haalat == 3) { drawBitmapPE(cursor_x, cursor_y, PeChar[44], 8, 8, color); cursor_x -= 5; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[45], 8, 8, color); cursor_x -= 8; } break; case 201: //ک if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[46], 8, 8, color); cursor_x -= 6; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[47], 8, 8, color); cursor_x -= 8; } break; case 144: //گ if(haalat == 1 || haalat == 3) { drawBitmapPE(cursor_x, cursor_y, PeChar[48], 8, 8, color); cursor_x -= 6; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[49], 8, 8, color); cursor_x -= 8; } break; case 164: //ل if(haalat == 1 || haalat == 3) { drawBitmapPE(cursor_x, cursor_y, PeChar[50], 8, 8, color); cursor_x -= 2; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[51], 8, 8, color); cursor_x -= 8; } break; case 165: //م if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[52], 8, 8, color); cursor_x -= 6; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[53], 8, 8, color); cursor_x -= 8; } break; case 228: //ن if(haalat == 1 || haalat == 3){ drawBitmapPE(cursor_x, cursor_y, PeChar[54], 8, 8, color); cursor_x -= 3; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[55], 8, 8, color); cursor_x -= 9; } break; case 168: //و drawBitmapPE(cursor_x, cursor_y, PeChar[56], 8, 8, color); cursor_x -= 5; break; case 167: //ه if(haalat == 0) { drawBitmapPE(cursor_x, cursor_y, PeChar[60], 8, 8, color); cursor_x -= 6; } else if(haalat == 1) { drawBitmapPE(cursor_x, cursor_y, PeChar[57], 8, 8, color); cursor_x -= 6; } else if(haalat == 2) { drawBitmapPE(cursor_x, cursor_y, PeChar[59], 8, 8, color); cursor_x -= 5; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[58], 8, 8, color); cursor_x -= 8; } break; case 172: //ی if(haalat == 1 || haalat == 3) { drawBitmapPE(cursor_x, cursor_y, PeChar[61], 8, 8, color); cursor_x -= 3; } else if(haalat == 2) { drawBitmapPE(cursor_x, cursor_y, PeChar[62], 8, 8, color); cursor_x -= 8; } else { drawBitmapPE(cursor_x, cursor_y, PeChar[63], 8, 8, color); cursor_x -= 8; } break; default: isunk = 1; break; } if(isunk == 0) { qloghat = loghat; } if(cursor_x < 0){ cursor_x = LCDWidth - 8; cursor_y += 8 + dis; } } } int CalcTextWidth (char *Text){ int dis = 1; int cursor_x = -8; int cursor_y = 0; int haalat = 0; unsigned char qloghat = ' '; //Previous word unsigned char loghat; unsigned char bloghat; //Next word unsigned char le; int d; while(le = *Text++){ //is Number ? if (le >= '0' && le <= '9') { d = le - '0'; loghat = le; } else if(le >= 128){ loghat = *Text++; loghat += 32; le += 32; if(loghat == 207){ if(le == 218 || le == 250){ loghat = 144; //گ } } else if(loghat == 166) { if(le == 218 || le == 250){ //چ loghat = 141; } else { loghat = 228; //ن } } } else { loghat = le; } if(loghat==172) { if(le==248 || le==32) { loghat=44; } } le = *Text++; if(le >= 128) { bloghat = *Text++; bloghat += 32; le += 32; if(bloghat == 207) { if(le == 218 || le == 250) { bloghat = 144; //گ } } else if(bloghat == 166) { if(le == 218 || le == 250) { //چ bloghat = 141; } else { bloghat = 228; //ن } } *Text--; *Text--; } else { bloghat = le; *Text--; } if(bloghat==172) { if(le==248 || le==32) { bloghat=44; } } int isunk = 0; if(qloghat==32 || qloghat=='\0' || qloghat==199 || qloghat==194 || qloghat==207 || qloghat==208 || qloghat==209 || qloghat==210 || qloghat==184 || qloghat==168 || qloghat==191 || qloghat==40 || qloghat==41 || qloghat==46 || qloghat==33 || qloghat==44 || qloghat==58 || qloghat==248) { if(bloghat==32 || bloghat=='\0' || bloghat==191 || bloghat==40 || bloghat==41 || bloghat==46 || bloghat==33 || bloghat==44 || bloghat==58 || bloghat==248){ haalat = 0; //Isolated } else { haalat = 1; //Final } } else { if(bloghat==32 || bloghat=='\0' || bloghat==191 || bloghat==40 || bloghat==41 || bloghat==46 || bloghat==33 || bloghat==44 || bloghat==58 || bloghat==248) { haalat = 2; //Initial } else { haalat = 3; //Medial } } switch(loghat){ case 48: //zero cursor_x -= 7; break; case 49: //1 cursor_x -= 5; break; case 50: //2 cursor_x -= 7; break; case 51: //3 cursor_x -= 8; break; case 52: //4 cursor_x -= 8; break; case 53: //5 cursor_x -= 8; break; case 54: //6 cursor_x -= 8; break; case 55: //7 cursor_x -= 7; break; case 56: //8 cursor_x -= 7; break; case 57: //9 cursor_x -= 6; break; case 32: //فاصله cursor_x -= 2; break; case 191: //؟ cursor_x -= 6; break; case 47: // / cursor_x -= 8; break; case 33: //! cursor_x -= 3; break; case 46: //. cursor_x -= 4; break; case 58: //: cursor_x -= 3; break; case ',': //، cursor_x -= 5; break; case 40: //( cursor_x -= 7; break; case 41: //) cursor_x -= 7; break; case 194: //آ cursor_x -= 7; break; case 199: //ا if(haalat == 0 || haalat == 1) { cursor_x -= 3; } else { cursor_x -= 2; } break; case 200: //ب if(haalat == 1 || haalat == 3){ cursor_x -= 3; } else { cursor_x -= 8; } break; case 222: //پ if(haalat == 1 || haalat == 3){ cursor_x -= 3; } else { cursor_x -= 8; } break; case 202: //ت if(haalat == 1 || haalat == 3) { cursor_x -= 3; } else { cursor_x -= 8; } break; case 203: //ث if(haalat == 1 || haalat == 3){ cursor_x -= 3; } else { cursor_x -= 8; } break; case 204: //ج if(haalat == 1 || haalat == 3){ cursor_x -= 6; } else { cursor_x -= 8; } break; case 141: //چ if(haalat == 1 || haalat == 3){ cursor_x -= 6; } else { cursor_x -= 8; } break; case 205: //ح if(haalat == 1 || haalat == 3){ cursor_x -= 6; } else { cursor_x -= 8; } break; case 206: //خ if(haalat == 1 || haalat == 3){ cursor_x -= 6; } else { cursor_x -= 8; } break; case 207: //د cursor_x -= 6; break; case 208: //ذ cursor_x -= 6; break; case 209: //ر cursor_x -= 5; break; case 210: //ز cursor_x -= 5; break; case 184: //ژ cursor_x -= 5; break; case 211: //س if(haalat == 1 || haalat == 3){ cursor_x -= 7; } else { cursor_x -= 8; } break; case 212: //ش if(haalat == 1 || haalat == 3){ cursor_x -= 7; } else { cursor_x -= 8; } break; case 213: //ص if(haalat == 1 || haalat == 3){ cursor_x -= 7; } else { cursor_x -= 8; } break; case 214: //ض if(haalat == 1 || haalat == 3) { cursor_x -= 7; } else if(haalat == 0 || haalat == 2){ cursor_x -= 8; } break; case 215: //ط cursor_x -= 7; break; case 216: //ظ cursor_x -= 7; break; case 217: //ع if(haalat == 0) { cursor_x -= 5; } else if(haalat == 1) { cursor_x -= 4; } else if(haalat == 2) { cursor_x -= 6; } else if(haalat == 3) { cursor_x -= 7; } break; case 218: //غ if(haalat == 0){ cursor_x -= 5; } else if(haalat == 1) { cursor_x -= 4; } else if(haalat == 2) { cursor_x -= 6; } else if(haalat == 3) { cursor_x -= 7; } break; case 161: //ف if(haalat == 1 || haalat == 3) { cursor_x -= 5; } else { cursor_x -= 8; } break; case 162: //ق if(haalat == 1 || haalat == 3) { cursor_x -= 5; } else { cursor_x -= 8; } break; case 201: //ک if(haalat == 1 || haalat == 3){ cursor_x -= 6; } else { cursor_x -= 8; } break; case 144: //گ if(haalat == 1 || haalat == 3) { cursor_x -= 6; } else { cursor_x -= 8; } break; case 164: //ل if(haalat == 1 || haalat == 3) { cursor_x -= 2; } else { cursor_x -= 8; } break; case 165: //م if(haalat == 1 || haalat == 3){ cursor_x -= 6; } else { cursor_x -= 8; } break; case 228: //ن if(haalat == 1 || haalat == 3){ cursor_x -= 3; } else { cursor_x -= 9; } break; case 168: //و cursor_x -= 5; break; case 167: //ه if(haalat == 0) { cursor_x -= 6; } else if(haalat == 1) { cursor_x -= 6; } else if(haalat == 2) { cursor_x -= 5; } else { cursor_x -= 8; } break; case 172: //ی if(haalat == 1 || haalat == 3) { cursor_x -= 3; } else if(haalat == 2) { cursor_x -= 8; } else { cursor_x -= 8; } break; default: isunk = 1; break; } if(isunk == 0) { qloghat = loghat; } if(cursor_x < 0){ cursor_x = LCDWidth - 8; cursor_y += 8 + dis; } } return cursor_x; }
و عکس خروجی نمایشگر
