Формат BCD в 9-битном последовательном протоколе

У меня есть 9-битный последовательный протокол.
Документация говорит это:
Для UARTs/DUARTs, которые не поддерживают режим пробуждения напрямую, бит четности
может использоваться вместо бита пробуждения.

И я использую это с USB к последовательному pl2303:

import time, serial

if ser.is_open == False:
try:
    ser.port = '/dev/ttyUSB0'
    ser.open()
except SerialException:
    ser.port = '/dev/ttyUSB1'
    ser.open()

def get_curent_credit():
    ser.parity = serial.PARITY_MARK
    ser._stopbits = serial.STOPBITS_ONE
    cmd = '1A'
    cmd = mashin_n + cmd
    cmd = cmd + crc_sas(cmd)
    ser.flushInput()

    # Not needed, but without this command not work
    ser.write('80'.decode('hex')) 
    time.sleep(1)

    # cmd = 011Aa603
    ser.write(cmd.decode('hex'))
    response =  ser.read(8).encode('hex')
    crc_sas(response, chk=True)
    return int(response[4:-4])*0.01

Этот код работает.
Но если я попробую другую команду, как.
018A001000000253ca
где:
01 = адрес 1b

8A = команда 1b

00100000 = 4 BCD

02 = налог 1b

53ca = CRC

Это не работает

я думаю, что проблема в BCD
но нет понятия, как это исправить

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

1 ответ

  1. Не говоря уже о том, чтобы дать ответ.
    Проблема бит 9.

    Если мы отправляем в формате байта бит 9 01 или знак четности

    else бит 9-00 или пространство четности