假设您想为其他程序员提供一个接口,使他们能够编写如下代码:
# connect to remote Linux device
>>> conn = myClass('/dev/ttyUSB0', 115200, '8N1')
>>> conn.login('myname', 'mypass')
>>> output = conn.command('ls -al')
>>> print output
total 3
drwxr-xr-x 49 myname myname 4096 Jun 21 15:13 .
drwxr-xr-x 4 root root 4096 Mar 20 14:43 ..
drwxr-xr-x 49 myname myname 1005 Jun 14 11:23 .vimrc
>>> output2 = conn.command('cd ..')
>>> print output2
>>>
您将如何实施?
我首先考虑pyserial,但它似乎将串行连接简单地视为像对象这样的文件,而不是终端。我从它的源代码中发现 pyserial 本身使用termios,这至少似乎启用了一些类似终端的配置选项。但是哪个框架能够实现类似终端的IO? 我只是整个嵌入式系统世界的初学者,但直到现在,在我看来,通过串行连接的终端IO应该是这个环境中常见的日常问题,并且应该已经有一个框架在做“努力工作” ”。但到现在为止我找不到它。
目前,我公司的大多数人都在手动测试他们的嵌入式系统开发主题。但我们希望切换到更自动的方案,其中包含许多unittest
脚本。因为我们的嵌入式系统上每个UART都有一个类似接口的终端,所以我想让这些测试脚本的作者更直观地编写代码,因为他们可以通过 minicom 与设备进行交互。或屏幕无论如何。
答案 0 :(得分:2)
我强烈考虑调查Twisted和projects using Twisted与终端交谈的Python项目。我见过在Twisted上写的终端屏幕抓取器,以及GitHub上的至少一个公共telnet客户端 - https://github.com/fjogstad/twisted-telnet-client。
我不确定您要尝试与哪个终端接口进行通信,但这里至少是Twisted中的终端仿真器示例:https://launchpad.net/python-tvi955。
使用像Twisted这样的异步框架的好处是你可以让一个测试服务器并行驱动多个虚拟机或物理机上的测试。
答案 1 :(得分:-1)