从AT命令的输出中读取行(两行或更多行),并将其放入数据库

2024-10-02 18:22:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从AT命令的输出中读取两行代码,并在python中插入表值。AT的输出总是在两行中,但它是一个序列,不像打开文件并读取到下一个限制器,但是我们必须等待。在

不管怎样,这是我的代码:

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

它将显示输出:

^{pr2}$

现在,我如何处理这个“sequence”输出,忽略AT+CMGL=“ALL”和“OK”,并在一个查询中使用“insert into”将它们放入数据库。我对使用python访问数据库没有问题。我对regex没意见。也许有人可以帮我逻辑上或脚本。谢谢你


Tags: 代码selftruedatadefopenallcommand
1条回答
网友
1楼 · 发布于 2024-10-02 18:22:50

我明白了。似乎我必须把所有这些行放入一个列表中并对其进行排序,然后将这2行缩减为1行。看看吧

^{1}$

然后从这里开始逐个处理列表值中的数据

^{pr2}$

相关问题 更多 >