Как правильно назначить последовательный вывод значению с ser.readlines для дальнейшего использования? - PullRequest
0 голосов
/ 10 января 2011

Я новичок и написал скрипт, который инициирует связь ("/ ?!") с счетчиком энергии через последовательный порт USB и считывает входящий журнал энергии.Он извлекает различные значения из вывода и записывает их в локальный sqlite-db.Предполагается, что бегать как cronjob каждые 15 минут.Php-сайт будет отображать показания энергии, сохраненной в sqlite, в виде графика между прочим.

В настоящее время у меня нет доступа к счетчику, он очень удаленный и холодный, поэтому мне нужно иметь егопрямо перед тем, как я пойду туда.
Если я пытаюсь выполнить скрипт, возникает ошибка: ser.readlines (eol = '!') = z
SyntaxError: невозможно присвоить вызову функции

это мое чтение с ser.readlines последовательного выхода и присвоение значения z неправильно?
сценарий (регулярное выражение &вставка в БД) работает, если я открываю лог-файл с похожими значениями в нем: например, with open ("log") as z:..

#!/usr/bin/env python
import serial  
import time  
import re  
import sqlite3  

ser = serial.Serial('/dev/ttyUSB0', 300, bytesize=serial.SEVENBITS, parity=serial.PARITY_EVEN, stopbits=serial.STOPBITS_ONE, timeout=2)
ser.open()

ser.write("/?!")  
time.sleep(0.001)  
ser.write("\r")    

connection = sqlite3.connect('/path/to/dbname.db')  
cursor = connection.cursor()  
extrakt = []

ser.readlines(eol='!') = z   
for line in z:  
            match = re.search(r'(0\.0\.0|1\.6\.1|1\.8\.1)\(([0-9\.]+)', line)  
            if match: 
                    version,value = match.groups() 
                    extrakt.append(value)

cursor.execute('INSERT INTO energielog (sernr, peak, kwh) values (?, ?, ?)', extrakt)
connection.commit()

ser.close()  
cursor.close()  
connection.close()

1 Ответ

0 голосов
/ 10 января 2011

Я думаю вместо

ser.readlines(eol='!') = z
for line in z:    

вы, вероятно, хотите

for line in ser.readlines(eol='!'):
...