0

Pythonを使用してシリアルポート経由でラップトップに接続されたGSMモデムからメッセージを送受信するコードに取り組んでいます。

私のプログラムでは、phone という名前のシリアル オブジェクトを作成しました。

電話を使用して、実行中に取得する AT コマンド、応答、およびステータス レポートを格納するリスト x を読み書きします。

たとえば、次のようにして、GSM モデムの Sim カードのデフォルトのオペレーターを確認します。

AT+COPS? #AT command

+COPS: 0,0,"VOD" #Response

OK #Status

ここで、x で受け取った情報を解析する必要があります。

xに格納されている文字列を解析するために正規表現を使用しようとしていました。ただし、問題は、各文字を個別の要素としてリストに格納することです。したがって、本質的に文字列はありません。リストに存在する文字を文字列にグループ化して、正規表現を適用してデータを解析し、何が起こっているのかを理解するにはどうすればよいですか?

上記の同じコマンドの場合、データは次のように x に格納されます。

0 A
1 T
2 +
3 C
4 O
5 P
6 S
7 ?
8 
9 
10 

11 +
12 C
13 O
14 P
15 S
16 :
17  
18 0
19 ,
20 0
21 ,
22 "
23 V
24 O
25 D
26 "
27 
28 

29 
30 

31 O
32 K
33 
34 

それとも私のアプローチは完全に間違っていますか?

助けてください!

4

2 に答える 2

1

次のようにして、リストを文字列に変換できます

myRegexableString = "".join(x)
于 2013-03-29T06:46:31.563 に答える
0

「x」からデータを抽出したい場合は、これでうまくいくはずです。正規表現は必要ありません。

def read_message(x):
    message_list = []
    lines = x.split('\n')
    for line in lines:
        index_past_number = 0
        for i, char in enumerate(line):
            if char.isdigit():
                index_past_number += 1
        line = line[index_past_number:] #add one to ignore the space
        line = line.strip() #strip the newline
        message_list.append(line)
    return ''.join(message_list)

これが役に立ったことを願っています。

于 2013-03-29T06:50:21.633 に答える