我正在处理来自 python 串行端口的数据。第一个字节表示消息的开始,然后第二个字节表示它是什么类型的消息。根据我们在消息中读取的第二个字节的不同(为了说明不同类型的消息,有些只是数据,有些是字符串等等)。
我现在有以下结构。我有一个通用的消息类,它包含每种消息类型的基本函数,然后是代表不同类型消息的派生类(例如 DataMessage 或 StringMessage)。这些都有自己特定的读取和打印功能。
在我的 read_value_from_serial 中,我读入了所有字节。现在我使用以下代码(这很糟糕)来确定消息是 DataMessage 还是 StringMessage(大约有 6 种不同类型的消息,但我简化了一点)。
msg_type = serial_port.read(size=1).encode("hex").upper()
msg_string = StringMessage()
msg_data = StringData()
processread = {"01" : msg_string.read, "02" : msg_data.read}
result = processread[msg_type]()
现在我想简化/改进这种类型的代码。我读过关于杀死开关的文章,但我不喜欢我必须创建最终不会使用的对象。有什么改善这个特定问题的建议吗?
谢谢