2017-01-14 63 views
0

我有9位串行協議。 文檔說明: 對於不直接支持喚醒模式的UART/DUART,可以使用奇偶校驗位 來代替喚醒位。9位串行協議BCD格式

我用,與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 = ADRESS 1B

8A =命令1B

00100000 = 4 BCD

02 =稅1B

53ca = CRC

此不起作用

我認爲問題出在BCD 但沒有想法如何修復它

謝謝你提前

回答

0

更不用說給出答案。 問題是位9

如果我們以字節發送格式的9位是01或平價關口

其他9位是00或奇偶空間