Ich verwende ein Arduino zur Ausgabe Temp & Hum Daten von einem Sensor, wird dies von einem PC mit Python mit Pyther gelesen. Die Daten werden korrekt eingelesen, aber ich möchte die CR/LF und unerwartete Zeichen entfernen. Eine Idee, die ich auf dieser Seite fand, war die Verwendung von lstrip oder lreplace, aber sie scheinen nicht richtig zu funktionieren. Sie entfernen eine Instanz des Zeichens, aber selbst das Wiederholen der Zeile oder das Erstellen einer kleinen Schleife hat keine Auswirkungen.Python (pySerial): kann CR, LF oder unerwartete Zeichen aus der Zeichenfolge nicht trimmen/entfernen
Dies ist, was das Programm-Drucke (Bottom line String ist, nachdem ich versucht habe, die nicht benötigten Zeichen auszuschneiden):
[b '\ n', b '\ r \ n', b 'Sensor lesen: OK \ r \ n', b'Hum40.00 \ r \ n ', b'TempC18.00 \ r \ n']
["b'Hum40.00 \ r \ n '" "b'TempC18.00 \ r \ n ']"]
ich das Ziel bin darauf zu lesen:
[Hum40.00, TempC18.00]
Ich kann die Nachricht hoffentlich später fein abstimmen.
Dies ist der Code:
import serial as ser
import time
count = 0
msgArray = []
saveMsg = []
ser = ser.Serial('COM16', 9600, timeout=1, parity='N', stopbits=1, bytesize=8, xonxoff=0) # Setting up and opening COM port
ser.close()
ser.open()
def readSerial(): #reads a whole line from COM port
serLine = ser.readline()
return serLine
def sveMsgCut(): #saves the buffer as a message then cuts message
cutMsg = saveMsg
words = cutMsg.split(',')
return words
while True: #main program
dataSerial = readSerial()
if count < 5: #reads COM port 5 times and passes along to buffer msgArray
msgArray.append(dataSerial)
count = count+1
else:
print(msgArray) #~display msgArray
saveMsg = str(msgArray) #convert to string
splitMsg = saveMsg.split(',') #splits string (csv)
phrase = splitMsg[3:5] #cuts out excess either side of Temp & Hum/
phraseString = str(phrase)
phraseNew = phraseString.lstrip("/n") #an attempts ot remove CR
print(phraseNew) #~print adjusted string
saveMsg = msgArray
count = 0 #resets msgArray and counter
msgArray = []
time.sleep(5)
ich Programmierung recht neu bin, vor allem Python, so dass es einfach etwas sein kann, dass ich verpasst habe, aber haben verschiedene Ideen ausprobiert und die zusätzlichen Zeichen nicht entfernen können.
Danke für die schnelle Rückmeldung. Ich habe Ihr erstes Beispiel mit CMD versucht und kann sehen, dass es funktioniert, aber es hat immer noch keine Wirkung im Programm. Ich habe es mit einem Element aus der Liste zu tun, um die Dinge jetzt zu vereinfachen, und versuche, den Feuchtigkeitsgehalt aufzuklären. – BackScatter
Welche Umgebung verwenden Sie? Es könnte ein IDE-Problem sein. – lps
Ich verwende PyCharm unter Windows. Anaconda ist ebenfalls installiert. Ich habe versucht, das Programm auch über die CMD-Eingabeaufforderung auszuführen, ich denke, es hat die gleiche Antwort gegeben, obwohl ich es überprüfen muss. – BackScatter