簡體   English   中英

Python組合通過串行接收的十六進制值

[英]Python combining hex values received over serial

我正在開發一個應用程序,其中我要接收不同長度的串行字節數據包,這些數據包通過將幀標志標記到緩沖區中進行標記,然后利用收集的字節來訪問字典以標識值。 目前,我的串行讀取功能監視串行線,直到存在END_FLAG字節或發生超時……

def receive_command(self):
    self.rxBuff = list(self.ser.read(1))
    #Keep receiving bytes until END_FLAG or timeout
    while self.rxBuff[-1] != chr(flagDict["END_FLAG"]):
        tBuff = self.ser.read(1)
        if len(tBuff) != 1:
            print "Timeout"
        else:
            self.rxBuff.append(tBuff)

最終,將十六進制字節讀入緩沖區,在其中用轉義字符“ \\ x ##”或它們的ASCII值表示它們。 在代碼中,我有一個字典,可讓我根據四字節的十六進制值來標識微控制器模型,如下所示:

STM32_TYPE = {
0x410: "STM32F103RB",
0x415: "STM32L152RG",        
0x417: "STM32L053R8",    
0x421: "STM32F446RE",
0x431: "STM32F411RE",
0x433: "STM32F401RE",
0x437: "STM32L152RE",
0x439: "STM32F302R8",    
0x438: "STM32F334R8",        
0x440: "STM32F030R8",
0x442: "STM32F091RC",
0x446: "STM32F303RE",
0x447: "STM32L073RZ",    
0x448: "STM32F070RB/STM32F072RB",
0x458: "STM32F410RB",    
}

我遇到的問題是,為了訪問此字典中的值,我需要組合兩個單獨的字節(來自下一個數據包的字節3和4)。

['\x12','\x03','F','\x04','\x13']

我的目標是將字節3和4重組為值0x0446,以用於訪問前面提到的字典。 但是,我對如何完成此操作不知所措,因為這樣做的所有嘗試都產生了簡單組合的字符串(考慮到這些是字符串表示形式,這很有意義),或者當我嘗試執行時不保持等價的整數值訪問字典。 我的問題是,是否有一種方法可以組合這些十六進制值(“ F”和“ \\ x04”),以便使用它們通過鍵0x0446訪問字典值? 或者,是否有更好的方法在串行讀取功能期間接收十六進制字節,以便以更有利於以后組合的方式存儲它們?

struct

>>> struct.unpack('<H', b'F\x04')
(1094,)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM