/* 设 置 时 间 温 湿 度 上 下 阀 返 回 | */
const uint16 ChineseUnicode[] = {0x8BBE,0x7F6E,0x65F6,0x95F4,0x6E29,0x6E7F,0x5EA6,0x4E0A,0x4E0B,0x9600,0x8FD4,0x56DE,0x007C};
const uint16 ChineseGBK[] = {0xC9E8,0xD6C3,0xCAB1,0xBCE4,0xCEC2,0xCAAA,0xB6C8,0xC9CF,0xCFC2,0xB7A7,0xB7B5,0xBBD8,0x007C};
uint8 u8Find_GBK_Index(uint8 const *zh_cn)
{
#ifdef LANGUAGE_CHINESE
//printf("zh_cn %x %x\n", zh_cn[0], zh_cn[1]);
for( uint8 i = 0; i < sizeof(ChineseGBK)/ sizeof(ChineseGBK[0]); i++ )
{
if(((uint16)((zh_cn[0] << 8) | zh_cn[1])) == ChineseGBK[i])
{
//printf("Index %d\n", i);
return i;
}
if((uint16)(zh_cn[0]) == ChineseGBK[i] && zh_cn[1] == 0)
{
//printf("Index %d\n", i);
return i;
}
}
return 0xFF;
#else
(void)zh_cn;
return 0xFF;
#endif
}
uint16 u16FindUnicode(uint8 const *zh_cn)
{
#ifdef LANGUAGE_CHINESE
uint8 Index = u8Find_GBK_Index(zh_cn);
//printf("Index %d\n", Index);
if(Index < sizeof(ChineseUnicode)/ sizeof(ChineseUnicode[0]))
return ChineseUnicode[Index];
else
return 0;
#else
return 0xFFFF;
#endif
}
void vDrawGBK(uint8 x, uint8 y, const uint8 *Chinese)
{
#ifdef LANGUAGE_CHINESE
uint8 len = 0;
uint8 Index = 0;
len = strlen((char *)Chinese) / 2;
//printf("len %d\n", len);
for( uint8 i = 0; i < len; i++ )
{
Index = u8Find_GBK_Index(&Chinese[i*2]);
U8G2_DrawGlyph(x, y, ChineseUnicode[Index]);
x += U8G2_GetGlyphWidth(ChineseUnicode[Index]);
//printf("xw %d\n", x);
}
#else
(void)x;
(void)y;
(void)Chinese;
#endif
}