Я очень новичок в Python и могу использовать вашу помощь.
Я сделал небольшую программу, которая считывает аналоговый сигнал с последовательного порта и записывает его в файл. Однако, несмотря на то, что чтение очень точное, иногда оно сбрасывает ненужные / неопределенные символы в файл:
Это дамп из файла 500 строк; проверьте 2-е значение:
466
þ466
466
466
Итак, в основном проблема в том, что я понятия не имею, как отфильтровать этот вход по показаниям. Я читал немного из документации в разделе регулярных выражений, но я не могу правильно обработать / манипулировать результатом. Как вы можете видеть, функция «очистить строки» очень неполная ...
import serial
import re
#this is the pain...
def purifystring(string):
regobj = re.match("^([0-9]+)$")
result = regobj.find(string)
#start monitoring on ttyACM0 at 9600 baudrate
ser = serial.Serial('/dev/ttyACM0', 9600)
#the dump file
filename = 'output.txt'
#save data to file
f = open(filename, 'w')
counter = 0;
while counter < 500:
analogvalue = ser.readline()
#need to clean the input before writing to file...
#purifystring(analogvalue)
#output to console (debug)
f.write(analogvalue)
counter += 1
f.close()
print 'Written '+ str(counter)+' lines to '+filename;
Так что, хотя это не самый лучший подход, я открыт для предложений. Я пытаюсь, чтобы мой выходной файл имел значение в строке в диапазоне от 0 до 1023. Данные, которые я получаю при чтении сериала, представляют собой строку, похожую на «812 \ n».
Заранее спасибо!