2017-01-14 7 views
0

私は9ビットのシリアルプロトコルを持っています。 ドキュメントに記載されているのは ウェイクアップモードを直接サポートしていないUART/DUARTの場合、ウェイクアップビットの代わりにパリティビット を使用できます。9ビットシリアルプロトコルのBCDフォーマット

と私はシリアルPL2303へのUSBとすることを使用します。このコードは動作します

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にあると思います しかし、何がそれを

を修正する方法のアイデアを持って事前に

答えて

0

をお願いしてみようだけでは答えを与えます。私たちは、バイトで送信する場合 問題は形式のビット9が01またはパリティマークであるビット9.

ある

他のビット9が00またはパリティスペース

です