gpt4 book ai didi

Python 读写 tty

转载 作者:IT王子 更新时间:2023-10-29 00:26:15 27 4
gpt4 key购买 nike

背景:如果需要,请跳至问题部分

我正在研究测试设备的前端。前端的目的是为了更容易编写长测试脚本。几乎只是让它们更易读和可写。

设备将使用 Prologix GPIB-USB Controller 进行测试(参见 prologix.biz)。我们在 http://heliosoph.mit-links.info/gpib-on-debian-linux-the-easy-way/ 找到了教程并执行了所有步骤,并且成功了!

由于我们还没有测试设备,我们想使用 openpty 用 Python 编写一个模拟器。我们确实有 GPIB-USB Controller ,只是没有连接到它。我让仿真器作为 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

最佳答案

好吧,我问得太早了。我希望有人能从这个 self 回答中受益。

所以这适用于从模拟器和实际设备读取和写入。我不确定为什么,希望得到解释,但这在我的所有测试中都有效

import serial

class VISA:
def __init__(self, tty_name):
self.ser = serial.Serial()
self.ser.port = tty_name
# If it breaks try the below
#self.serConf() # Uncomment lines here till it works

self.ser.open()
self.ser.flushInput()
self.ser.flushOutput()

self.addr = None
self.setAddress(0)

def cmd(self, cmd_str):
self.ser.write(cmd_str + "\n")
sleep(0.5)
return self.ser.readline()

def serConf(self):
self.ser.baudrate = 9600
self.ser.bytesize = serial.EIGHTBITS
self.ser.parity = serial.PARITY_NONE
self.ser.stopbits = serial.STOPBITS_ONE
self.ser.timeout = 0 # Non-Block reading
self.ser.xonxoff = False # Disable Software Flow Control
self.ser.rtscts = False # Disable (RTS/CTS) flow Control
self.ser.dsrdtr = False # Disable (DSR/DTR) flow Control
self.ser.writeTimeout = 2

def close(self):
self.ser.close()

关于Python 读写 tty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20894969/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com