通过 RS-232 进行 pySerial 的通信问题

问题描述 投票:0回答:1

我想使用 pySerial 通过内置 RS-232 端口与 Agilent 33250A 进行通信。我浏览了用户手册中的RS-232配置并编写了以下代码,如果我没有记错的话,应该将正确的配置设置为

serial.Serial
(在仪器中我有波特率
9600
,奇偶校验)位
None/8 Bits
,和握手
DTR
):

import serial

ser = serial.Serial(
    port = '/dev/ttyUSB0',
    timeout = 1,
    dsrdtr = True,
)

ser.write(b'*IDN?')
s = ser.read(99)
print(s)

当它应该打印类似

b''
的内容时,它总是打印
timeout=1
,因为
b'Agilent Technologies,33250A,0,m.mm-l.ll-f.ff-gg-p'
。相反,如果我发送命令
ser.write(b'APPL:SIN 5 KHZ, 3.0 VPP, -2.5 V')
,我希望设备更改其设置(请参阅此处),但什么也没有发生。每次我使用
ser.write(b'...')
发送任何内容时,仪器都会自动切换到远程模式,因此它会收到一些内容。

我错过了什么?我不知道如何在 pySerial 中更改的唯一设置是“起始位数”,对于我的设备来说是 1

linux pyserial
1个回答
0
投票

我发现了问题,每个命令末尾都缺少一个

\n
。我在手册中没有找到这个,我只是尝试了一下,现在可以了。所以现在完整的代码是这样的:

import serial

ser = serial.Serial(
    port = '/dev/ttyUSB0',
    timeout = 1,
    dsrdtr = True,
)

ser.write(b'*IDN?\n')
s = ser.read(99)
print(s)
© www.soinside.com 2019 - 2024. All rights reserved.