@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 (исходного кода нет). С помощью этой программы вольты устанавливаются.

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

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

Похожие вопросы