8

假设您想为其他程序员提供一个接口,使他们能够编写如下代码:

# 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屏幕与设备进行交互。

4

2 回答 2

2

我会强烈考虑研究Twisted使用 Twisted的项目与终端对话的 Python 项目。我在 Twisted 上看到过一个终端屏幕刮板,在GitHub 上至少有一个公共 telnet 客户端- https://github.com/fjogstad/twisted-telnet-client

我不确定您要与哪个终端接口交谈,但这里至少是 Twisted 中终端仿真器的一个示例:https ://launchpad.net/python-tvi955 。

使用像 Twisted 这样的异步框架的一个好处是,您可以使用一台测试服务器在多个虚拟机或物理机上并行驱动测试。

于 2013-06-21T14:45:14.623 回答
-2

不解决具体问题,但很可能你用谷歌搜索得到以下信息:

如果您想实际与串行 i/f 交互,请考虑使用:pyserial ( pip install pyserial):

这是一个例子

import serial

ser = serial.Serial(
    port='/dev/ttyUSB1',
    baudrate=9600,
    parity=serial.PARITY_ODD,
    stopbits=serial.STOPBITS_TWO,
    bytesize=serial.SEVENBITS
)

ser.open()


ser.write("bla bla" + '\r')
于 2013-06-21T18:10:28.600 回答