@Eig
Инженер

PySerial Как правильно послать запрос?

Имею китайский источник питания PSU-W-FDA для лазера фирмы CNILaser. Регулировка напряжения, включение и выключение реализовано через интерфейс RS-232/USB, путем отправки нехитрых запросов, код намеренно упрощаю:
from serial import Serial

def send_message(self, v):
    # Выключение лазера
    if v == 0:
        hex_string = '55 aa 03 00 03'
    # Включение лазер
    elif v == 1:
        hex_string = '55 aa 03 01 04'
    # Установка 100 мВ
    elif v == 2:
        hex_string = '55 aa 05 04 00 64 6D'
    message = bytes.fromhex(hex_string)
    ser = Serial(port='COM4', baudrate=9600, timeout = 0.1)
    ser.open()
    self.write(ser, message)
    if ser.is_open:
        ser.flushInput()
        ser.flushOutput()
        sleep(0.1)
        try:
            ser.write(message)
        except Exception as exc:
            print('type: {0}, message: {1}'.format(type(exc), str(exc)))
        else:
            res = ser.readline()
            print(res)
            ser.close()

Инструкция включает в себя одну страницу, на которой написано как формируется запрос. Запрос для установки 100 мВ, собственно, взят из нее.
55 aa - некий идентификатор;
00 64 - это 100 (мВ) в 16-ричной системе;
Контрольная сумма: 05 + 04 + 00 + 64 = 6D
Также там написано, что для контрольной суммы берутся "8 Low bit of 6D", но в запросе приведенного примера присутствует именно 6D.

В итоге включение и выключение работают, а установка 100 мВ или любого другого значения не работает (возвращается некий код ошибки 05), хотя видно, что принцип формирования запроса во всех трех случаях не отличается, отличается только количество знаков.

В комплекте идет простенькая программка для чайников, написанная на Delphi7 (исходного кода нет). С помощью этой программы вольты устанавливаются.

Теперь, собственно, вопрос: в каком месте я не прав? Все осложняется тем, что не работает именно тот пример, который приведен самими разработчиками-китайцами, т.е. это не самодеятельность.
А если я во всем прав, и это ошибка в инструкции, то, может быть, кто-то знает, какие платы/контроллеры используются в этих источниках питания, и можно ли найти это оборудование, например, по драйверам, идущим на диске, потому что техническая поддержка у китайцев на нуле, а разбирать источник питания, чтобы посмотреть какое там железо, не хотелось бы.
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
longclaps
@longclaps
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
от 140 000 до 180 000 руб.
karasiki Казань
от 20 000 до 60 000 руб.
áxmit Петрозаводск
от 60 000 до 120 000 руб.