效率和质量至关重要。本文要介绍的Python脚本语言和众多
第三方函数库就是这样的利器:易学、高效、功能强,值得推
广。
1 Python简介
Python是一种流行的动态脚本语言,经历了十多年的发展
现已相当成熟稳定。其语法简捷清晰、面向对象、跨平台、扩
展性强,适合完成各种高层任务,既可快速开发脚本程序,也
可用来开发大规模软件。
由于遵循开源GPL协议,用户众多,反过来也推动了第三
方函数库的稳步发展,现数量众多功能强大的函数库(其中大
部分也是开源的)能适应几乎所有的应用:字符处理、系统控
制、图像处理、图形界面、数据库、科学计算、网络应用、单
元测试等。
本文不介绍Python语言的基础知识,感兴趣的读者请自行
查阅相关内容。推荐的学习材料有:官方网站、安装自带的文
档、第三方库的文档、网络社区等。
2 函数库介绍
函数库分两类:标准库和第三方库。前者是安装时自带
的,能完成基础的字符、文件、系统、网络等控制,后者是在
前者基础上扩充开发的,也是Python最成功之处,现就常用于
嵌入式开发的几个库分类介绍,以下库均遵循GPL协议。
2.1 科学计算
◆
Numpy、Scipy
NumPy数值计算包提供了矩阵、线性代数、傅里叶变换等
的解决方法。
Scipy提供更强的数学计算分析功能:线性计算、信号处
理、图像处理、最优化求解等。大多数函数接口和Matlab类
似,容易上手。
◆
Matplotlib
二维图形绘制模块,包括线图、直方图、饼图、散点图以
及误差线图等,输出效果相当专业,许多函数接口也与Matlab
类似。
◆
SymPy
符号运算,可进行算法仿真、模拟。
2.2 图像处理
◆
PIL
提供图像处理操作:裁剪、旋转、滤波、增强等。嵌入式
开发中经常需要操纵图形资源,用于点阵液晶屏幕显示,如图
形转化成C语言数组、屏幕缓冲数据转换成图片,都可借用此模
块实现。
Python在嵌入式项目中的辅助开发
彭树林
摘要:
嵌入式系统设计开发过程中常会遇到诸如算法分析、原型验证、自动化测试、辅助工具设计等工作,其
开发效率和质量直接影响到项目的进程。对于目前国内众多开发人员,迫切需要这样一种软件开发工具:易学、高
效、功能强。Python作为这样一种开源脚本语言,配合众多实用的第三方函数库,可极大地提高嵌入式系统开发效
率和质量。作者结合自己在几个项目开发中的实战经验,对此进行了入门介绍。
关键词:
Python;嵌入式系统
◆
MayaVi
用于绘制三维数据图形。
2.3 图形界面
◆
wxPython
高效的GUI工具箱,提供图形接口,可生成标准风格的
Windows程序窗口,新版本中包含的许多控件非常有特色。
◆
wxGlade
图形程序的开发工具,用wxGlade绘制好窗体后生成
Python代码,加入函数相应代码即可。
2.4 数据库
◆
pySqlite
轻量级的数据库,现以成为标准库。
2.5 硬件控制
◆
pyParallel、pySerial
用于控制PC机的并口和串口。
◆
pyVisa
控制VISA接口设备。
◆
pyAudio
声音控制,若需用操纵声音资源,集成至嵌入式系统固件
中,可用此模块。
2.6 其它
◆
Socket、FTP、Telnet
网络接口,可用于控制测量仪器和设备,TCP/UDP方式调
试网络设备。
◆
动态链接库接口
某些必须由其它语言实现的功能可先编译成动态库,再由
Python调用。
3 项目案例
以下介绍作者在实际项目中使用Python提高开发效率的几
个例子。
3.1 位图资源的C代码转换
某便携式仪表支持16级灰度点阵液晶,需要显示若干图
标、图片。素材先由图形处理软件修饰完成,存为灰度位图格
式文件,再调用Python编的处理脚本,转换图片成C语言格式
数组,集成到系统项目中,编译至固件,最终显示在仪表屏幕
上。
图
1
为
待
转
换
的
图
标
I
c
o
n
H
e
l
p.
B
m
p
,
转
换
后
的
结
果
IconHelp.c如下:
// Converted with PYTHON
// 32 x 32 pixels
const unsigned short IconHelp[] = {
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0
xFFFF,
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0
xFFFF,
图1 待转换的图标