micropython oled中文_micropython中怎么将gb2312编码的字节流变成中文

展开全部

# -*- code: utf-8 -*-

# 在 micropython 中运行, 注意在运行目录下有 hzk12/16

# '啊' 是汉字区第1个汉字,62616964757a686964616fe59b9ee7ad9431333431353932对应数据为 ?不对?

# 0x00, 0x00, 0x0E, 0xFC, 0xEA, 0x08, 0xAA, 0x08,

# 0xAA, 0xE8, 0xAA, 0xA8, 0xAC, 0xA8, 0xAA, 0xA8,

# 0xAA, 0xA8, 0xAA, 0xA8, 0xEA, 0xE8, 0xAA, 0xA8,

# 0x0C, 0x08, 0x08, 0x08, 0x08, 0x28, 0x08, 0x10

# hzk16 试验: '一','我'正确, '啊' 不对?

# hzk12 字库的位长度是16*12

# seek位置 '一': 111168, '五': 103152, '我':102196

'''

int(x [,base ]) 将x转换为一个整数

long(x [,base ]) 将x转换为一个长整数

float(x ) 将x转换到一个浮点数

complex(real [,imag ]) 创建一个复数

str(x ) 将对象 x 转换为字符串

repr(x ) 将对象 x 转换为表达式字符串

eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象

tuple(s ) 将序列 s 转换为一个元组

list(s ) 将序列 s 转换为一个列表

chr(x ) 将一个整数转换为一个字符

unichr(x ) 将一个整数转换为Unicode字符

ord(x ) 将一个字符转换为它的整数值

hex(x ) 将一个整数转换为一个十六进制字符串

oct(x ) 将一个整数转换为一个八进制字符串

bytearray(x) 列表转为数组

'''

from machine import Pin, I2C

import framebuf

import ssd1306

i2c = I2C(sda=Pin(5), scl=Pin(4))

o = ssd1306.SSD1306_I2C(128,64,i2c)

def drawhz( hzs, xp, yp ):

for x in range( len(hzs)//2 ):

c = ((hzs[x*2] - 0xA1)* 94 + (hzs[x*2+1] - 0xA1)) * 24 #gb2312 转成 区位号

f = open( 'uc_hzk12', 'rb' )

f.seek( c )

hz = bytearray( f.read(24) )

f.close()

# 创建 hzk12:16x12 or hzk16:16x16 大小帧缓存区储存图片帧,水平扫描

fb1 = framebuf.FrameBuffer(hz, 16, 12, framebuf.MONO_HLSB)

o.blit( fb1, xp + x*12, yp ) # 将fb1帧缓存送至oled显示,起始位(38,16)

xp += 1

#在 repl 中, 粘贴的中文件变码了, 装载文件形式才正常

def drawhz2(hzs, xp, yp):

for x in range(len(hzs)):

f = open('uni2gb', 'rb')

f.seek( (ord(hzs[x])-0x4e00)*2 )

gb23 = bytearray(f.read(2))

f.close()

c = ((gb23[0] - 0xA1) * 94 + (gb23[1] - 0xA1)) * \

24 # gb2312 转成 区位号

f = open('uc_hzk12', 'rb')

f.seek(c)

hz = bytearray(f.read(24))

f.close()

# 创建 hzk12:16x12 or hzk16:16x16 大小帧缓存区储存图片帧,水平扫描

fb1 = framebuf.FrameBuffer(hz, 16, 12, framebuf.MONO_HLSB)

o.blit(fb1, xp + x*12, yp) # 将fb1帧缓存送至oled显示,起始位(38,16)

xp += 1

o.fill(0)

# uPY没法实现unicode 转 gb2312, 要借助cpython 转化成 gb2312

#现在可用 文件查表法 uni2gb (unicode-0x4e00)转gb2312码

hzs = ( 206,210, 185,253, 193,249, 210,187, 189,218 ) #每两字节表示一个汉字

drawhz2( '\u98de\u96ea\u8fde\u5929', 0, 0 )

drawhz2( '\u98de\u96ea\u8fde\u5929\u5c04\u767d\u9e7f', 0, 13 ) #飞雪连天

drawhz( hzs, 0, 26 )

drawhz( hzs, 16, 39)

drawhz( hzs, 16, 52 )

o.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DOS那一代的程序员现在都干嘛呢

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow亿友论坛-DOS那一代的程序员现在都干嘛呢?&#xff0…

弟子规python编程游戏_《Python游戏趣味编程》 第11章 消灭星星

知乎视频​www.zhihu.com图书简介可以看这里:童晶:《Python游戏趣味编程》新书上架了​zhuanlan.zhihu.com消灭星星是一款非常容易上瘾的消除类游戏,只需点击一个方块,如果和其连接的有两个或两个以上颜色相同的方块即可消除&…

python判断英文字母_python判断字符串中是否含有英文 | 个人学习笔记记录

第一种方法: #-*- coding:utf-8 -*- import re def check(str): my_re re.compile(r[A-Za-z],re.S) res re.findall(my_re,str) if len(res): print u含有英文字符 else: print u不含有英文字符 if __name__ __main__: str 你好123hello check(str) str1 你好1…

idea ssm项目移包报错问题

写完代码之后发现包结构太乱了 想要规划一下 结果报错 这里面的包路径都可以点进去,还是报找不到com.lf.company.entity.Business 后来发现是 在移动前和移动后都存在这个mapper。xml 解决方案: 在这里把多余的删掉转载于:https://www.cnblogs.com/NCL…

matlab 写excel 慢_吐槽一下MATLAB的workspace

用MATLAB编程,或者Simulink建模仿真,有一个特别强大、特别人性化的功能,可以在workspace中直接查看定义的参数和运行的结果 无论是仿真的调试,结果的分析,或是中途的Debug,workspace都发挥着至关重要的作用…

python运行是哪个键_python – 如何使用回车键调用按钮命令

在tkinter中,当按钮具有焦点时,您可以按空格键执行与该按钮关联的命令.我正在尝试按Enter键做同样的事情.我确定我过去做过这个,但我找不到代码,而我现在正在做的事情是行不通的.我在Mac上使用 python 3.6.1. 这是我尝试过的 self.startButton.bind(, self.startButton.invoke)…

WEBSHELL权限提升 菜菜

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow动网上传漏洞,相信大家拿下不少肉鸡吧,但…

MATLAB 图形着色

1.matlab中的颜色查找表函数: (1)autumn:从红色向橘黄色、黄色平稳过渡; (2)bone:为含有较高的蓝色组分的gray颜色查找表; (3)colorcube:包含RGB颜…

大学python笔记_Python 上手笔记

要是想在键盘上体验一下, 安装Python也很简单: 基本的编译环境应该已经包括了Python,但Mac系统最好在上面这个网站下载安装。在Linux系统中可以使用apt-get等工具来安装更新。另外假如系统内有多个Python版本,可能需要将Python的路径添加到配置文件&…

sql的case when用法

select t.C_OPERATE_TIME MODIFY_TIME,t.c_code EMPLOYEE_CODE,t.c_name EMPLOYEE_NAME,CASE t.c_employee_statusWHEN 在职 THEN1WHEN 实习生 THEN1ELSE0END BL_FLAG,t.c_labor_date CREATE_TIME,CASE t.c_ctf_typeWHEN 身份证 THEN01WHEN 护照 THEN08ELSE99END USERCARDTYPE,…

ALLyeSNO 优化版浩方 第二版 Ver 2007 06 15 清除广告 自动挤房间

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshowallyesno 优化版浩方 第二版 Ver:2007.06.15 正式发布ALLyeSNO优…

faker和劫的图片_faker亲手画的劫被曝光,看到他的画,众人心里久久不能平息!...

原标题:faker亲手画的劫被曝光,看到他的画,众人心里久久不能平息!说起faker,相信大家对这个人并不陌生,特别是经常看英雄联盟LPL比赛的人,一定会想起他的很多经典镜头,让人记忆犹新。…

源码分析Thread

多次start ?? IlleageStateException转载于:https://www.cnblogs.com/yszzu/p/9337531.html

D - F e n d 簡 單 教 學 DOSBOX Easy Shell 【玩DOS游戏的必备软件】

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshowD - F e n d 簡 單 教 學■寫 在 前 面自去年無意間接觸到DOSBox…

arma模型谱估计matlab_基于机器学习的心律失常分类(四)——心电信号特征提取[MATLAB]...

目前比较常用的特征提取是提取心电信号的各波形间期长度、波峰高度等,本文是使用ARMA模型对心电信号进行处理,使用其系数来作为特征。一、心拍划分大多伴有异常波形的心律失常信号,通常都会具体表现在单个心拍中,需要对信号进行心…

抖音创作规范_抖音短视频运营小规则

抖音短视频规则一、抖音的定义1、抖音是个去中心化的平台,根本没有什么权重,主要是看你账号的活跃度,互动关系,和行为习惯标签,抖音后台技术有去重机制,机器会自动判断你的视频重复率。重复率达到一定的比例…

目睹DNS怪现状 本地对DNS的设定故障分析

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshowDNS(Domain Name System)在tcp/ip网络中&…

P1242 新汉诺塔

题目描述 设有n个大小不等的中空圆盘,按从小到大的顺序从1到n编号。将这n个圆盘任意的迭套在三根立柱上,立柱的编号分别为A、B、C,这个状态称为初始状态。 现在要求找到一种步数最少的移动方案,使得从初始状态转变为目标状态。 移…

python文件输入符_python文件IO与file操作

1 标准输入输出IO - (1) 打印到屏幕 print() print(self, *args, sep’ ‘, end’n’, fileNone): 把传递的表达式 转换成一个 字符串表达式 known special case of print """ print(value, ..., sep , endn, filesys.stdout, flushFalse) Prints the values to…

和县机电工程学校工业机器人_【校企合作】学校举行工业机器人教学系统捐赠仪式...

点击上方蓝字关注我们12月22日下午,我校与广东诚飞智能科技有限公司在公共实训中心会议室举行了“工业机器人教学系统”捐赠仪式。广东诚飞智能科技有限公司总经理杨成芳、区域经理杨少杰,学校副校长罗红金、教务科科长冯华以及机电专业组教师代表参加了…