AT Command の出力から 2 行を読み取り、Python で INSERT INTO table VALUES を実行したいと考えています。AT の出力は常に 2 行ですが、ファイルを開いて次のリミッターまで読み取るのとは異なり、シーケンスですが、待つ必要があります。
とにかくこれは私のコードです:
class SMSWait(self):
def run(self):
self.open()
while self.ser.isOpen():
time.sleep(1)
SMSRead = 'AT+CMGL="ALL"\r\n'
self.SendCommand(SMSRead, getline=True)
while self.ser.inWaiting() > 0:
**data = self.ser.readall()
print data**
def open(self):
self.ser = serial.Serial('/dev/ttyUSB0', baudrate=115200, timeout=.1, rtscts=0)
self.SendCommand('AT\r')
self.SendCommand('AT+CMGF=1\r')
self.ser.flushInput()
self.ser.flushOutput()
def SendCommand(self,command, getline=True):
self.ser.write(command)
data = ''
if getline:
data = self.ReadLine()
data = filter(None, data)
return data
def ReadLine(self):
data = self.ser.readline()
return data
出力が表示されます:
AT+CMGL="ALL"
+CMGL: 2,"REC READ","+60xxxxxxxxx",,"15/02/05,14:13:47+28"
mydata43414242453564567578689789done
OK
さて、この「シーケンス」出力を処理し、AT+CMGL="ALL" と "OK" を無視して、1 つのクエリで "insert into" を使用してそれらをデータベースに配置するにはどうすればよいでしょうか。Pythonを使用してデータベースにアクセスすることに問題はありません。そして私は正規表現で大丈夫です。誰かが論理的またはスクリプト的に私を助けてくれるかもしれません。ありがとうございました