Je suis novice en programmation et pour terminer mon BA, l'une de mes «quêtes» consiste à écrire un programme d'enregistrement continu des données à partir d'un Oxygen-Meter. Jusqu'à présent, j'ai réussi à obtenir les données, les écrire dans un fichier Excel pour une durée prédéfinie. Malheureusement, les valeurs sont toujours écrites en une seule ligne donc je vois juste la dernière mesure dans Excel. Ma question est: Comment puis-je dire à mon programme de mettre chaque mesure dans une nouvelle rangée? Merci d'avance pour votre aide et s'il vous plaît être paitient avec moi j'ai commencé la programmation il y a 5 jours.Comment débuter une nouvelle ligne dans Excel pendant l'enregistrement continu des données
import serial
import time
import xlsxwriter
port = "COM1"
baud = 2400
bytesize = serial.EIGHTBITS
parity = serial.PARITY_EVEN
stopbits = serial.STOPBITS_ONE
ser = serial.Serial(port, baud, bytesize, parity, stopbits, timeout=1)
while ser.isOpen():
ser.write("O")
time.sleep(5) #Messung wird aller()s abgerufen
while ser.inWaiting()>0:
s = ser.readline()
Nummer = s[2:4]
Konzentration = s[9:13] + " mg/l"
Temperatur = s[19:23] + " °" + s[25:26]
Temperatur2 = s[19:23]
Zeit = s[27:32] + " Uhr"
Datum = s[33:38] + ".2017"
t = Nummer+" "+Konzentration +" "+Temperatur +" "+Zeit +" "+Datum
print t
workbook = xlsxwriter.Workbook ('Sauerstoffmessung.xlsx')
worksheet = workbook.add_worksheet()
row=0
col=0
seq = []
count = 1
rowheaders =['Nummer', 'Konzentration', 'Temperatur', 'Zeit', 'Datum']
rowvalues = [Nummer, Konzentration, Temperatur2, Zeit, Datum]
worksheet.write_row(row, col, tuple(rowheaders))
worksheet.write_row(row, col, tuple(rowvalues))
workbook.close()
if Zeit == "08:38 Uhr":
ser.close()
print "Uebertragung beendet"
Tout d'abord, merci. Deuxièmement, ci-dessous est mon nouveau code. Maintenant, chaque nouvelle mesure reçue est écrite dans une nouvelle ligne, mais les anciennes disparaissent. J'ai essayé de comprendre par moi-même, mais j'ai fini par l'aggraver. Y at-il une chance de dire au programme de garder les données dans la ligne écrite et d'écrire la mesure suivante dans la rangée suivante?
import serial
import time
import xlsxwriter
import io
port = "COM1"
baud = 2400
bytesize = serial.EIGHTBITS
parity = serial.PARITY_EVEN
stopbits = serial.STOPBITS_ONE
row=0
col=0
ser = serial.Serial(port, baud, bytesize, parity, stopbits, timeout=1)
while ser.isOpen():
ser.write("O")
time.sleep(5) #Messung wird aller()s abgerufen
workbook = xlsxwriter.Workbook ('Sauerstoffmessung.xlsx')
worksheet = workbook.add_worksheet()
rowheaders =['Nummer', 'Konzentration', 'Temperatur', 'Zeit', 'Datum']
worksheet.write_row(0, 0, tuple(rowheaders))
while ser.inWaiting()>0:
s = ser.readline()
Nummer = s[2:4]
Konzentration = s[9:13] + " mg/l"
Temperatur = s[19:23] + " °" + s[25:26]
Temperatur2 = s[19:23]
Zeit = s[27:32] + " Uhr"
Datum = s[33:38] + ".2017"
t = Nummer+" "+Konzentration +" "+Temperatur +" "+Zeit +" "+Datum
print t
rowvalues = [Nummer, Konzentration, Temperatur2, Zeit, Datum]
worksheet.write_row(row, col, tuple(rowvalues))
row += 1
if Zeit == "08:38 Uhr":
ser.close()
print "Uebertragung beendet"
workbook.close()
Je pense que vous devrez peut-être déplacer les 'workbook()' create et et 'workbook.add_worksheet()' en dehors de la première boucle while. – jmcnamara