pyserial: как правильно получить ответы rs232 от блока питания - PullRequest
0 голосов
/ 14 сентября 2018

В настоящее время я пытаюсь установить связь с источником питания (RND 320-KA3005P) через RS232 с pyserial.Проблема в том, что после отправки «* 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.У кого-нибудь есть идеи по поводу того, что мне здесь не хватает?

Заранее спасибо.

1 Ответ

0 голосов
/ 18 сентября 2018

Решение, которое я нашел, довольно разочаровывает. Оказывается, что при использовании преобразовательного кабеля USB-RS232 вместо подключения USB, которое я использовал ранее, команды для установки и получения значений работают, как и ожидалось. Команда '* DIN?', Которую я попробовал изначально и которую я получил из руководства :), до сих пор не дает никакой реакции - вероятно, просто не поддерживается.

...