第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么 b'\x02' 與 Python 中的值 2 或 int(2) 不同?

為什么 b'\x02' 與 Python 中的值 2 或 int(2) 不同?

慕斯709654 2022-01-11 20:15:26
我有一臺(tái) PC 將字節(jié)值 2 發(fā)送到 Raspberry Pi。但我無法弄清楚為什么 Python 程序在接收到值時(shí)不會(huì)評(píng)估為 true。如果我打印收到的值,它會(huì)將 b'\x02' 作為輸出寫入。import serialdef GetSerialData():    x = ser.inWaiting()    if x > 0:        received_data = ser.read(x)        print (received_data)    return xser = serial.Serial ("/dev/ttyAMA0", 9600)try:    while True:        SData = GetSerialData ()        if ( SData == b'\x02'):            print ("Ok - value is 2")except KeyboardInterrupt:    ser.close()
查看完整描述

2 回答

?
飲歌長嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

您的GetSerialData函數(shù)似乎并未實(shí)際返回串行數(shù)據(jù)。它打印串行數(shù)據(jù),但之后您再也不會(huì)引用received_data它,而是 return x,它似乎是一個(gè)表示響應(yīng)大小的整數(shù)。


不要返回 x,而是嘗試返回received_data。


def GetSerialData():

    x = ser.inWaiting()

    if x > 0:

        return ser.read(x)

    else:

        return b"" #or whatever value is appropriate when no data has been sent yet


查看完整回答
反對(duì) 回復(fù) 2022-01-11
?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊

\x02是十六進(jìn)制 02 的 ASCII 碼,即STX(文本開頭)。 \x32是 digit 的 ASCII 碼2。

如果SData是整數(shù)或任何非(二進(jìn)制)字符串,請(qǐng)記住使用str(SData).將其轉(zhuǎn)換為字符串。

另外,一般來說,b'A' != 'A'. 您想使用.encode('ascii')將 Python 字符串轉(zhuǎn)換為 ASCII 二進(jìn)制字符串。


>>> binary_A_from_string = 'A'.encode('ascii')

>>> binary_A_from_string

b'A'


>>> binary_A = '\x41' # ASCII 41 (dec 65) is 'A'

>>> binary_A

b'A'


>>> binary_A == 'A'

False

>>> binary_A == binary_A_from_string

True

這是因?yàn)?Python 將二進(jìn)制 ASCII 字符串視為不同于標(biāo)準(zhǔn) Python 字符串。


此外,確保讀取的信息實(shí)際上是一個(gè)字節(jié)長。


查看完整回答
反對(duì) 回復(fù) 2022-01-11
  • 2 回答
  • 0 關(guān)注
  • 961 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)