Pythonでシリアルポートからのデータを処理しています。最初のバイトはメッセージの開始を示し、2 番目のバイトはメッセージのタイプを示します。その 2 番目のバイトに応じて、メッセージの読み取り方が異なります (さまざまなタイプのメッセージを説明するために、一部はデータのみで、他は文字列などです)。
私は今、次の構造を持っていました。メッセージのすべてのタイプの基本的な関数を含む一般的な Message クラスと、さまざまなタイプのメッセージ (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]()
今、私はこのタイプのコードを簡素化/改善したいと考えています。スイッチを強制終了することについて読んだことがありますが、最終的に使用しないオブジェクトを作成する必要があるのは好きではありません。この特定の問題を改善するための提案はありますか?
ありがとう