LEDMatrixDisplay Program 文字ごとに色を変更できるように修正
Fork of LEDMatrix_Master by
Diff: main.cpp
- Revision:
- 10:e261964e4989
- Parent:
- 8:b24bd32cd2ed
--- a/main.cpp Sat Nov 16 06:27:26 2013 +0000 +++ b/main.cpp Fri Mar 28 15:33:29 2014 +0000 @@ -15,7 +15,37 @@ unsigned int ImageBuf[3][DISPLAY_XSIZE];//16*6 unsigned int ColerMap[3][DISPLAY_XSIZE]; -unsigned int CountChar(char *str) +unsigned int CountChar_full_W(char *str ) +{ + unsigned char f_SJISChar = 0; + unsigned char c = 0; + unsigned int CountChar = 0; + + c = *str; + while(c != '\0') + { + //2バイト文字の判定 + if( ((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)) && f_SJISChar != 1 ) + { + f_SJISChar = 1; + } + else if(f_SJISChar == 1) + { + CountChar++; + f_SJISChar = 0; + } + else + { + f_SJISChar = 0; + } + + str++; + c = *str; + } + return CountChar; +} + +unsigned int CountChar_half_W(char *str) { unsigned char f_SJISChar = 0; unsigned char c = 0; @@ -31,15 +61,20 @@ } else { - f_SJISChar = 0; - CountChar++; + if( f_SJISChar == 1) + { + f_SJISChar = 0; + } + else + { + CountChar++; + } } str++; c = *str; } return CountChar; } - void SPILineOut(unsigned char setLine) { unsigned int data[3]={0}; @@ -193,18 +228,10 @@ int main() { unsigned int i = 0; - char tmpstr[100]; + unsigned int s_Strs = 0; - /*=====================*/ - /*ここを書き換えてください*/ - /*=====================*/ - //ET2013 ARMブース mbedコーナーにようこそ! - - char strs[100]={0x82,0x64,0x82,0x73,0x82,0x51,0x82,0x4f,0x82,0x50,0x82,0x52,0x81,0x40,0x82,0x60, - 0x82,0x71,0x82,0x6c,0x83,0x75,0x81,0x5b,0x83,0x58,0x81,0x40,0x82,0x8d,0x82,0x82, - 0x82,0x85,0x82,0x84,0x83,0x52,0x81,0x5b,0x83,0x69,0x81,0x5b,0x82,0xc9,0x82,0xe6, - 0x82,0xa4,0x82,0xb1,0x82,0xbb,0x81,0x49,0x00}; - + char strs[100]={}; + memset(strs,' ',sizeof(strs)); // Read text file for display message, if exist. FILE *fp; fp = fopen("/local/message.txt", "r"); @@ -215,11 +242,9 @@ free(fp); #endif } - spi.format(16,1); spi.frequency(1000000); - memset(tmpstr,0,sizeof(tmpstr)); memset(ImageBuf,0,sizeof(ImageBuf)); i=0; @@ -230,11 +255,16 @@ while(1) { memset(ImageBuf,0,sizeof(ImageBuf)); - - for(i=0; i<DISPLAY_XSIZE+(16*CountChar(strs)-1); i++) + s_Strs = CountChar_half_W(strs)*8; + s_Strs += CountChar_full_W(strs)*16; + for(i=0; i<DISPLAY_XSIZE+(s_Strs)-16; i++) { +#if 1 drawStr15x16(strs ,i, COLOR_W); ApplyColerMap(); +#else + drawStr15x16_AutoColer(strs ,i); +#endif outBordData(); wait(0.05); }