单片机 |
您所在的位置:网站首页 › esp8266屏幕驱动板 › 单片机 |
前一章介绍了在ESP8266下搭建的天气预报机。 单片机—ESP8266模块开发 当时结果中含有中文的部分乱码了,今天尝试着解决一下这个问题。 这里涉及到的问题有以下几步: 首先要将utf-8的字符串,转化为gbk编码,然后通过查找HZK字库,找到对应的点阵数据,修改扫描模式,最后放到屏幕上显示。优化多个字符一起显示优化中英文一起显示我们一步一步来尝试解决。 我们的开发环境是ESP8266的开发板,用了的freeRTOS系统,对比常规linux下面的iconv方式,我们并没有这个库,移植的话,比较麻烦(其实就是懒) 这里介绍了一个查表法的版本。 代码下载 c语言版本utf-8转gbk查表法 使用方式就是下面的接口 int SwitchToGbk(const unsigned char* pszBufIn, int nBufInLen, unsigned char* pszBufOut, int* pnBufOutLen)做个测试先。 我们可以先将两个文件编译进去,测试一下转化效果 unsigned char out[8]={0}; int lenout=0; unsigned char falsh[8]={0}; ESP_ERROR_CHECK( nvs_flash_init() ); SwitchToGbk((unsigned char*)"我",3, out, &lenout); printf("lenout:%d 0x%02x 0x%02x\n",lenout,out[0],out[1]);打印中可以看到 继续,gbk转化字模。这里用到了HZK字库,下载链接 HZK字库 这个字库是一个文件,但是我们的单片机上,并没有办法比较合适的将这个文件直接导入到设备中,因为并没有现成的文件系统在里面,所以,这里用flash方式,直接将文件烧录到固定的位置上,到时候直接读取flash中的内容就可以获得相应的数据了。 首先烧写HZK文件 我们的是8Mflash,也具体不太清楚前面用到了多少,所以我用了最后1M的位置来存储这个HZK文件,HZK文件大概两百多K,足够了 测试一下我们刚才烧写进去的文件,就检查这两位,看看一致不一致。 测试结果 然后我们就开始查找HZK,找到测试字符“我”的点阵数据,利用前面的数据,我们接着测试 offset = (94*(unsigned int)(out[0]-0xa0-1)+(out[1]-0xa0-1))*32; spi_flash_read(0x700000+offset, falsh, 32); for(k=0; k |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |