Имею китайский источник питания 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 (исходного кода нет). С помощью этой программы вольты устанавливаются.
Теперь, собственно, вопрос: в каком месте я не прав? Все осложняется тем, что не работает именно тот пример, который приведен самими разработчиками-китайцами, т.е. это не самодеятельность.
А если я во всем прав, и это ошибка в инструкции, то, может быть, кто-то знает, какие платы/контроллеры используются в этих источниках питания, и можно ли найти это оборудование, например, по драйверам, идущим на диске, потому что техническая поддержка у китайцев на нуле, а разбирать источник питания, чтобы посмотреть какое там железо, не хотелось бы.