标签存档: Python

Python在嵌入式开发中的应用——数据示波器

Python在嵌入式开发中的应用
引言
在嵌入式开发中我们常常要进行数据分析、算法设计、原型验证、自动化测试、辅助工具设计,每个环节的工作效率对整体的开发都非常重要。选用一个好的辅助开发工具是非常必要的。Python作为一门解释型语言,容易上手,应用广泛,拥有众多功能强大的第三方库,开发平台轻量化,不想VS,非常适合嵌入式开发中的辅助开发。

1 本文概要
本文主要介绍使用Python实现一个类似于示波器,能实时观察传感器数据的辅助工具。这个需求源于项目的需要,使用这个工具能实时观察sensor数据的变化,并对实时数据做简单分析,对算法设计有很大的帮助。通过后续更新可以加入算法,实时验证算法,进行原型验证。本文首先介绍需要使用的Python相关库,然后介绍工具的使用情况。
继续阅读 »

python中函数参数传递的几种方法

本文转自豆瓣

Python中函数参数的传递是通过“赋值”来传递的。但这条规则只回答了函数参数传递的“战略问题”,并没有回答“战术问题”,也就说没有回答怎么赋值的问题。函数参数的使用可以分为两个方面,一是函数参数如何定义,二是函数在调用时的参数如何解析的。而后者又是由前者决定的。函数参数的定义有四种形式:

1. F(arg1,arg2,…)
2. F(arg2=,arg3=…)

3. F(*arg1)

4. F(**arg1) 继续阅读 »

Python笔记——使用popen与外部进程通信

在Python中如果我们需要调用外部进程,则使用
os.system(CmdLine)
即可实现。但有时候不仅需要调用外部程序,还需要知道外部程序的处理结果,并根据响应结果做出对应操作,使用popen2模块即可实现这个功能。实际上是把stdout和stdin从定向到一个文件对象,然后通过读写这个文件对象来获取外部进程的输出或者向外部进程发送数据。

import popen2
stdout,stdin = popen2.popen2("ping www.baidu.com")
while True:
    ostr = stdout.read()
    if ostr:
        print ostr
    else:
        break

Python实现hex文件转bin文件

因为IAR工程编译时不能同时生成hex文件和bin文件,如果选择生成bin文件则会删除之前的hex文件,而我们需要同时有hex文件和bin文件,所以自己要写一个工具在编译完成后自动把hex文件转为bin文件。

在网上找到了Python实现的转换脚本,很好用,一个简单的函数。特转载如下,感谢原作者分享,原文地址 继续阅读 »

Python笔记–IAR使用Python脚本实现自动对烧录文件进行处理

这篇文章将要记录如何配置IAR调用外部工具实现对编译完成后自动对生成的hex文件进行合并、对bin文件进行额外操作。

问题背景:
我们目前的项目在STM32平台上开发,具备远程无线升级功能,即通过GPRS网络实现远程IAP,IAP过程中使用的是bin文件(因为bin文件不包含地址,处理比较简单)。因此,在项目编译后我们就需要两个文件,一个是设备出厂时的烧录文件,该文件为hex格式,一个是设备部署后远程升级时用的bin文件。而出厂hex文件又由两个文件合并而成,分别是BOOT.hex: 用户启动代码,用于引导和远程升级,由BOOT工程编译得到;APP.hex :用户应用代码,由APP工程编译得到。同时,APP.bin: 用户应用代码二进制格式,通过APP工程编译得到。
所以每次重新编译app工程或者boot工程后都要进行一次复制粘贴,而且IAR链接时只能生成一种文件,hex或者bin,选择生成hex时就会删除bin,选择bin又会删除hex。因此要得到这两个文件需要编译连接两次。
另外,升级时我们需要知道bin文件的大小,CRC32校验码,烧录的起始地址,为了操作方便一个比较好的办法是将这三个信息都放到bin文件内部,所以编译生成bin文件后也要对该文件进行处理。
为了简化人工操作,减少出错几率,我就动手编写了一个脚本,每次编译连接完成后自动将APP.hex转为APP.bin,并且将APP.hex和BOOT.hex进行合并。

继续阅读 »

将python脚本打包为window可以执行的exe

py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序。
py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序。py2exe是发布在开源许可证下的。

继续阅读 »

Python笔记–计算CRC32

之前是使用C代码计算数据的CRC32校验码,现在需要使用Python来实现。本来打算自己动手一直,搜索发现,Python的binascii模块半包含了crc32函数,通过测试发现该函数实现的CRC计算跟我说使用的CRC计算一致,其CRC多项式为:CRC-32 0x04C11DB7 x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + 1
具体的实现方法在网上找到了一篇很好的博文,在此感谢原作者,并转载如下(因为是blogger上的,访问不方便)。同时将我的C语言实现的CRC32也附在这里 crc32_test.c
binascii模块的官方参考 继续阅读 »

python笔记–二进制读写

在涉及到数据文件时需要进行二进制读写操作,而且可能还需要根据要求进行大小端对齐调整,有些协议或文件是高字节在前,而有些是低字节在前。Python提供了一个struct模块,用来处理Python数据和C/C#等数据之间的转换。

譬如我需要将一个整型数据 a = 305419896(也就是0x12345678)写入文件,要求数据在文件中的存放形式是高字节在前: 0x12 0x34 0x56 0x78。 继续阅读 »

第 1 页,共 2 页12