首先开篇名义,为什么我要用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移植到资源受限单片机上的有趣尝试,但