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 但沒有想法如何修復它
謝謝你提前