效率和质量至关重要。本文要介绍的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 待转换的图标