首先开篇名义,为什么我要用Python来控制硬件,主要还是工作需要:作为嵌入式软件工程师(工业产品为主),需要一种灵活高效的控制方法,辅助产品设计测试。多年的比较尝试下来,Python是为数不多的胜出方案之一。

举几个应用场景:

1、某产品处于样机试制阶段,在低温状态偶尔不能开关机,但是概率极低(<1%),明显手工测试效率太低。我的办法是用Python脚本控制电源重启,读取设备反馈信号判断是否工作正常,如此反复测试(完全自动化无人干预)。通过大量实验后再找规律和解决方案。

2、某监测终端在被监测对象异常时会报警,如何在实验室模拟想要的异常呢?因为监测过程大致就是各种传感器捕获成数字量输入,后通过某种算法得出结果,我的方案是用Python脚本通过光耦、继电器等器件输入给终端,模拟这类故障时序,达到伪装效果。

3、新产品调研,需要评估一款模块,尽管控制IIC/SPI接口不算难事,但要用C写固件、反复下载调试还是得花不少精力,更何况这段代码注定是要丢弃的。我的方法是用Python脚本编写IIC/SPI测试用例,用PC来评估硬件模块。

上述场景都需要在X86/64的PC上运行Python解释器,直接控制到硬件端口。但实际上Python是移植性很强的,其它的运行方式还有:

1、如果设备自身就是ARM/MIPS跑着POSIX环境的,有着足够的资源,可以直接以嵌入式方式运行Python解释器。需要做的是移植板上的硬件库,让应用层有接口调用。但是X86上的众多第三方库你就得逐个移植了。

2、MicroPython是将Python3移植到资源受限单片机上的有趣尝试,但是除了运行效率低之外(也许随着芯片性能提高会改善),上述问题同样存在:第三方的库几乎没法用。

为了能用上第三方库,最大化PC的效能,就需要在通用PC上跑Python解释器,并与下位机建立连接。下位机负责实现你的业务指令,处于“桥接”的地位。

有了桥接控制器,就能接受Python下发的指令并执行,比如“控制某个端口输出翻转”,“检测某个端口输入电压”,“控制SPI发送一个字节,并读回器件返回的内容”。业务需求五花八门,定制性太强。

除了分解任务并执行,桥控制器还有个重要作用:完成实时性要求高的指令,比如输出一个宽度1微秒的短脉冲,这个要求超过了与PC的传输延迟,必须由控制器严格控制。

PC与“桥”之间的接口有多种实现方法,硬件层有串口、USB、网口等,协议可以是私有的或开放式的,各有优缺点,不多评价。

后续要重点介绍的,也是笔者长期使用的,一种交互式命令行实现的控制方法,具有以下特点:

  • 物理层依托于最常用、最简单的异步串口,资源占用少。
  • 交互式命令行实现的人机接口,单片机接收指令和参数,解释执行,再给出提示符等待下一个输入,反复循环。
  • 所有指令都是ASCII明文,便于调试排错。
  • ……

熟悉Linux的人都知道,这不就是Shell终端的运行方式吗?

没错,上述的只是一种调试手段,尤其适用于手动调试。但是提醒一下,这是运行在单片机侧的Shell,除了解释执行PC发来的命令外,它还有能力“控制硬件”:GPIO、SPI、IIC、ADC、DAC……,访问全部芯片内存空间,控制所有的外设。

这样,我们就能在PC端开启串口终端控制台,与单片机交互,从而用上它的硬件控制能力。

但是这与Python有什么关系呢?

为了提高控制效率,实现自动化无人操作,需要用程序模拟命令输入、解析的过程。理论上可以用任意高级语言来实现:C/C++/C#、JAVA……,封装形式也是多样的:动态库、静态库……。但我仍然首选Python来完成,这是由应用场景决定的,只强调两点:

  • 用于后期测试:通常需要为不同测试场景写相应测试用例,且改动非常频繁。
  • 用于前期设计:单片机的业务命令扩展与相应Python封装同步进行,完全业务驱动,不确定性很大。

以上两点对Python来说毫无压力。

大致背景介绍完了,下一篇开始展示Python的威力吧。

python和单片机的用处哪个大_用Python控制硬件1-Python控制硬件的几种方式相关推荐

  1. python speed为0但是速度过快_通过并发加速你的 python 程序

    本文翻译至 realpython 上题为 Speed Up Your Python Program With Concurrency 的教程,教程对怎么利用并发加速 python 程序分析非常全面到位 ...

  2. python强大体现在哪些方面-大公司里哪些方面运用了python?

    今日我们东软睿道python培训带大伙儿来讨论一下大公司是如何使用python的?python究竟牛在哪儿?之前你了解用python网络爬虫读取数据.梳理分析数据,你了解用python写一个微信小程序 ...

  3. python的就业方向有哪些城市_以就业为目标,Python有哪些方向值得学?

    作为千锋的门面担当,小千经常被一些咨询的学员追着问:Python到底应该学什么?今天我们就来具体分析一下. 大家都用Python做什么? 网站后台:有大量的成熟的框架,如Django,Flask,To ...

  4. python中的库有哪些餐厅_推荐一些实用的的 Python 库

    Python Python开发 Python语言 推荐一些实用的的 Python 库 一门语言好用.方便的程度在很多时候会取决于这门语言相关的库够不够丰富,Python 之所以火爆除了其本身的语法和特 ...

  5. python在人工智能领域的应用论文_试析人工智能背景下的Python教学

    摘要:在国务院所印发的<新一代人工智能发展规划>中指出"人工智能(ArtificialIntelligence-AI)在未来将成为引领时代发展的重要战略性技术,将成为指引社会经济 ...

  6. python千锋好还是黑马好_千锋讲师有话说: Python前景好不好?

    相信大家在计划进入某个行业之前,都会非常关心一个问题,就是:这个行业的发展前景.如果发展前景不好,我们往往也很难找到合适的工作.有入门Python的想法,却不知道Python前景好不好?千锋讲师告诉你 ...

  7. python有趣小项目源码分析_推荐 10 个有趣的 Python 项目

    想成为一个优秀的开发者,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼,因此,我为大家准备了10个 ...

  8. python没英语基础能学吗_没有英语基础可以学Python吗?

    Java 和 Python 双方都有各自适合和发展的领域,所以别人常问我学习什么语言好,或者让我在两种语言进行比较好坏. 其实编程语言只有适不适合你个人去学,并不存在好坏,每种语言的存在即是合理的,你 ...

  9. python类的数据成员和成员方法_静态方法和类成员方法(Python)

    静态方法和成员方法分别在创建时分别被装入Staticmethod 类型和 Classmethod类型的对象中.静态方法的定义没有 self参数,且能够被类本身直接调用,类方法在定义时需要名为 cls的 ...

最新文章

  1. html表格编辑器退出编辑状态,html编辑器的使用方法
  2. 空类的sizeof为1
  3. ASCII和字母的转换
  4. Inscribed Figures
  5. 为什么不该唯经验论?!
  6. Array类型的扩展
  7. gbk、gb2312、big5、unicode、utf-8
  8. 在VM虚拟机上装“黑苹果
  9. 存储服务器2012R2系统怎么搞文件共享,server2012r2文件共享局域网权限设置的方法...
  10. 实现 RecyclerView 上拉加载及自动加载
  11. 制作启动U盘重装系统
  12. 查询服务器硬盘上电时间,鲁大师检测硬盘通电时间怎么操作?检测硬盘通电时间教程...
  13. Netty + Web聊天室
  14. 对文件进行筛选c语言,用c语言实现文本文件中的字符筛选分析。
  15. 月入十万的QQ空间营销引流技巧,你知道吗,??不看你会后悔!!
  16. 水流强度指数(SPI)地形湿度指数(TWI)计算
  17. 基于JavaSwing的高级计算器
  18. 南非世界杯的一些感想
  19. Adobe AIR的未来 The Future of Adobe AIR
  20. fcpx瘦身插件_FCPX常用插件合集

热门文章

  1. C#利用Graphics类绘制进阶--绘制条形码Code128
  2. 基于单幅图像一致性学习的弱光视频增强(CVPR2021)
  3. ICCV 2021 Oral | 无需法向的大场景点云表面重建
  4. 用于机器人导航辅助的6自由度姿态估计的平面辅助视觉惯性里程计
  5. 那些珍贵的「视觉SLAM」课程资料总结(补充版/完整版)
  6. ios mysql 修改数据,iOS数据库FMDB--增删改查(模糊查询)实写记录
  7. python 中UnicodeEncodeError 错误
  8. 植树月收尾:合种油松/华山松/云杉/胡杨
  9. Nature:依靠锰的氧化实现细菌的化能自养生长
  10. 人类吃屎用屎指南:用做肥料不如制咖啡、当展品、做炸弹