【发布时间】:2014-01-03 01:24:26
【问题描述】:
背景:如果需要,请跳至问题部分
我正在开发测试设备的前端。前端的目的是让编写长测试脚本更容易。几乎只是让它们更具人类可读性和可写性。
设备将使用 Prologix GPIB-USB 控制器进行测试(请参阅 prologix.biz)。我们在http://heliosoph.mit-links.info/gpib-on-debian-linux-the-easy-way/ 找到了一个教程并完成了所有步骤,并且成功了!
由于我们还没有测试设备,我们想用 Python 编写一个使用 openpty 的模拟器。我们确实有 GPIB-USB 控制器,只是没有连接到它的东西。我让模拟器完美替代了 GPIB-USB。这意味着我将遵循“Debian 上的 GPIB ...”教程(上图)并获得我对模拟器进行编程以返回的输出。输入和输出的完成方式与教程相同,只是读取和写入 pty 设备(即 /dev/pts/2)而不是 tty(即 /dev/ttyUSB0)。
现在模拟器可以工作了,我们想编写一个可以用来轻松编写脚本的前端。目标是制作一种宏系统,在我们调用函数时会编写一堆命令。
问题:同时使用模拟器和设备存在
我正在使用以下 Python 函数来读取、写入和打开 tty/pty 设备,但我得到的结果与我在 bash 中使用 echo 和 cat 时得到的结果不同。
tty = os.open(tty_path, os.O_RDWR)
os.read(tty, 100)
os.write(tty, "++ver")
例如,我希望以下是等价的
$ cat < /dev/pty/2 & # According to the tutorial, this must be run in parallel
$ echo "++ver" > /dev/pty/2
Prologix GPIB Version 1.2.3.4 ...
和
tty = os.open("/dev/pyt/2", os.o_RDWR)
os.read(tty, 100) # In separate Thread to be run in parallel
os.write(tty, "++ver") # in main thread
输出非常不同,请解释原因以及如何修复它。
完整代码在这里:http://pastebin.com/PWVsMjD7
【问题讨论】: