Python组合通过串行接收的十六进制值

马修康诺利

我正在开发一个应用程序,其中我接收不同长度的串行字节数据包,这些数据包由成帧标志标记到缓冲区中,然后利用收集的字节访问字典以识别值。目前,我的串行读取函数监视串行线,直到出现 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,)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

(C#)通过串行发送十六进制

来自分类Dev

Arduino和Python之间的串行通信,使用十六进制值的问题

来自分类Dev

提升ASIO串行写入十六进制值

来自分类Dev

提高ASIO串行写十六进制值

来自分类Dev

如何从组合布尔中获取十六进制值?

来自分类Dev

我是否可以通过C程序通过串行正确发送十六进制命令

来自分类Dev

如何通过python从字符串中提取十六进制值?

来自分类Dev

Arduino通过XBee发送十六进制值

来自分类Dev

从文本框输入到在 C# 中通过串行发送十六进制

来自分类Dev

在Python中的十六进制值中添加前导零

来自分类Dev

Python防止readline转换为十六进制值

来自分类Dev

在Python中创建\ x单字符十六进制值

来自分类Dev

Python防止readline转换为十六进制值

来自分类Dev

在python中搜索和更新十六进制值

来自分类Dev

在python3中输出十六进制值

来自分类Dev

python将十六进制字符串发送到串行端口

来自分类Dev

Python解析固定格式的串行十六进制字符串

来自分类Dev

通过套接字接收原始十六进制并转换为字符串

来自分类Dev

Arduino串行读取和解析十六进制

来自分类Dev

在bash中将十六进制字节发送到串行

来自分类Dev

十六进制的串行输入,用于解析C#

来自分类Dev

在PuTTY中显示十六进制以进行串行

来自分类Dev

通过SSH进行十六进制编辑

来自分类Dev

在XAML中以十六进制显示组合框中的字节值列表

来自分类Dev

如何使用PowerShell通过串行端口将十六进制命令发送到监视器

来自分类Dev

Python Crypto.Cipher是否直接接收十六进制数据?

来自分类Dev

字节值和十六进制的比较

来自分类Dev

十六进制浮点值的目的?

来自分类Dev

将输入视为十六进制值

Related 相关文章

热门标签

归档