主题 : 在友善之臂Linux系统中使用python 复制链接 | 浏览器收藏 | 打印
级别: 总版主
UID: 45585
精华: 3
发帖: 628
金钱: 3375 两
威望: 675 点
贡献值: 3 点
综合积分: 1316 分
注册时间: 2011-05-06
最后登录: 2018-10-18
楼主  发表于: 2013-03-22 14:36

 在友善之臂Linux系统中使用python

管理提醒: 本帖被 xoom 执行置顶操作(2013-12-18)

python的优点


功能强大,无需编译,集成了系统级的API,访问硬件也是没有压力的,例如ioctl,下面的代码演示操作蜂鸣器,直接在开发板上编写代码运行即可,无需编译,对调试驱动等应该很有帮助,配合python webserver,实现远程硬件控制相信也是可行的:

#!/usr/bin/python
import fcntl
fd = open('/dev/pwm', 'r')
fcntl.ioctl(fd, 1, 100)

上面的代码相当于打开/dev/pwm设备,然后执行ioctl。

在开发板上安装python


适用于 6410/210 开发板,python版本为 2.7.2。
先从以下地址下载:http://dl.vmall.com/c0eoeolewg

下载完成后,将python-friendlyarm.tgz文件拷到SD卡上,再将SD卡插入开发板,在minicom或超级终端上输入以下命令行进行解压:

cd /usr/
tar xvzf /sdcard/python-friendlyarm.tgz

解压完成,输入python,出现python提示符就表示安装成功啦:

python

注意事项:
1) 必须在 /usr/ 目录下解压,放到其他目录会工作不正常
2) python软件包大小共有50M,如果你是256M Nand Flash的用户可能会无法存放,请选择性的删除一些组件来释放空间,比如不需要使用Qtopia4可以删除/opt/Qtopia4.4.3目录,不需要Qt4可以删除/usr/local/Trolltect目录。

使用python


用python控制蜂鸣器

用vi将下面的内容保存成文件,命名为 pwm.py:

#!/usr/bin/python
import fcntl
fd = open('/dev/pwm', 'r')
fcntl.ioctl(fd, 1, 100)

在命令行上输入 ./pwm.py,应该能听到蜂鸣器响了。

用python中调用c/c++

将python-friendlyarm.tgz在PC上也解压一份:

cd /opt/
mkdir python-arm
cd python-arm
tar xvzf ~/python-friendlyarm.tgz

写一个c++文件api.cpp:

#include <Python.h>
class MyClass {
public:
int add(int x,int y) { return x+y; }
};
extern "C" int add(int x,int y)
{
MyClass obj;
return obj.add(x,y);
}

将c++编译成动态库:

arm-linux-g++ -fPIC api.cpp -o api.so -shared -I/opt/python-arm/include/python2.7 -I/opt/python-arm/lib/python2.7/config

将编译生成的api.so拷到SD卡上,在你的python脚本中就可以调用它了:

#!/usr/bin/python
import ctypes
plib = ctypes.CDLL('/sdcard/api.so')
print "result: %d" %(plib.add(1,2))
[ 此帖被xoom在2013-03-22 14:44重新编辑 ]