pyserial:如何从电源正确接收rs232答案

时间:2018-09-14 14:05:15

标签: python serial-port pyserial

我目前正在尝试通过带有pyserial的RS232与电源(RND 320-KA3005P)建立通信。 问题在于,发送“ * DIN?”(应返回制造商,型号名称和软件版本)后,连接似乎什么也没收到。也没有其他命令成功。使用随附的软件,连接后,将打开LabView程序,并且该设备是可远程控制的,因此我认为问题出在我的代码中。

代码示例: 连接参数如手册中所述。 作为行尾字符,我尝试了“ \ r \ n”,“ \ r”,“ \ n”,这似乎可以解决许多其他问题,但是这里没有成功。

import io
import serial
import time
import sys

ser = serial.Serial('COM4',
                baudrate = 9600,
                bytesize=8,
                timeout=1,
                stopbits = serial.STOPBITS_ONE,
                parity = serial.PARITY_NONE,
                xonxoff = False)

eol_char = '\r\n'
sio = io.TextIOWrapper(io.BufferedReader(ser),newline=eol_char)

while True:
    sending = input("type:\n")
    ser.write((sending + eol_char).encode('utf-8'))
    time.sleep(0.2)
    ans = sio.read()
    sys.stdout.write('received: ' + str(ans))
    print('\ntry again\n')

输入命令后,给出以下信息:

type:
*DIN?
received: 
try again

type:

当我在回送上运行脚本时

ser = serial.serial_for_url('loop://',timeout=1)
...

输出:

type:
*DIN?
received: *DIN?

try again

type:

它似乎工作正常。我正在使用Windows 10和USB转RS232转换器。有人知道我在这里想念什么吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

我发现的解决方案令人失望。事实证明,使用USB到RS232转换器电缆,而不是我以前使用的USB连接,设置和获取值的命令按预期工作。我最初尝试过的命令'* DIN?'是我从手册中获得的:),但仍然没有反应-可能只是不受支持。

答案 1 :(得分:0)

我相信* DIN?在“功能检查”下找到的命令,该命令应返回:“制造商,型号名称,软件版本。”实际上是 typo 。当稍后在手册中列出所有命令时,数字11表示 * IDN?,并应返回KA3005P标识。

具有讽刺意味的是,他们在数字11下给出的示例说:“ * IDN?” ...