コマンドをモデムに送信する場合、通常はコマンド (例: AT
) の後に\r
. 次に、モデムをリッスンして、このコマンド自体が繰り返されるコマンドの結果を確認します。したがって、モデムからの典型的な通信フィードバックは次のようになります。
AT\r\rOK\r\n
エラーの場合は次のようになります
AT\r\rERROR\r\n
ただし、一般に、実際の AT コマンドによっては、返される値は と 以外の値になる可能性がOK
ありERROR
ます。
OK
この応答、つまり、 、ERROR
またはモデムが応答するものを返す正規表現を抽出したいと思います。条件は次のとおりです。
- 文字列内の元のコマンドを確認したい。つまり
ATX\r\rOK\r\n
、コマンドがちょうどAT
. - 空白文字がいくつあるかはまったく気にしません。私が期待するのは
\n
、最後に a があることだけです。したがってAT\rOK\n
、 とAT\nOK\r\r\n
も一致するはずですが、 ではありませんAT\nOK\r\r
。 - 最後に、AT コマンドと空白文字で区切られている限り、左側の余分なものは気にしません。したがって
OK\rAT\rOK\n
、一致する必要があります (つまり、 の右側のオカレンスOK
) が、XAT\rOK\r\n
一致する必要はありません。
モデムの応答を抽出するために 1 つの正規表現でこれを行うことは可能ですか、それとも複数の正規表現検索を行う必要がありますか? 全体が正しく一致するかどうかを確認するために、次の式をすでに見つけている可能性があります。
r = re.compile("\s+AT\s+\w+\s*\\n$")
\w+
しかし、 の構成要素を抽出するにはどうすればよいでしょうか。