我正在尝试在Mac OS上连接Agilent 54622D示波器,而我正在使用ftdi usb-serial电缆。我观察到以下行为:如果我在写入命令后立即关闭串行连接的文件描述符(我不希望设备有任何响应,只是发送命令),连接将立即关闭这导致并非所有数据都发送到设备。这似乎有点合乎逻辑,但我从未见过有人在关闭串行连接之前添加任何特殊延迟。
我可以在这里找到什么?
这是一个简单的python脚本来说明问题:
import serial
port=serial.Serial(port="/dev/cu.usbserial-A603PQBN",baudrate=57600,timeout=1, rtscts=True, dsrdtr=False, stopbits=serial.STOPBITS_ONE)
port.write(":RUN\n")
port.close()
更新
我在运行Linux的VirtualBox中尝试了相同的脚本,但我没有注意到这些问题。现在我想知道这是Mac的UART驱动程序还是FTDI驱动程序问题。
答案 0 :(得分:0)
看起来你很快就关闭了连接,然后真正处理了数据,即使你的连接速度相当高(我已经习惯了9600)。
那么为什么不尝试使用文档中描述的flush()
:
"像对象一样刷新文件。在这种情况下,请等待所有数据写入。"
import serial
port=serial.Serial(port="/dev/cu.usbserial-A603PQBN",baudrate=57600,timeout=1, rtscts=True, dsrdtr=False, stopbits=serial.STOPBITS_ONE)
port.write(":RUN\n")
port.flush() # this might help
port.close()
答案 1 :(得分:0)
我尝试过官方的FTDI驱动程序,问题就消失了。这可能是Mavericks FTDI驱动程序实现中的一个错误(提交了一个错误)。