28/03/2020, 16:14
(Questo messaggio è stato modificato l'ultima volta il: 28/03/2020, 19:14 da ippogrifo.)
Non sono esperto di python (ho sempre preferito il C) ma se il codice che hai inserito è quello che "gira" , vedo un errore di indentazione da "if" a seguire: "if" non deve essere allineato al "while", ma deve essere interno, così come "else".
"v = float(myData[0:5])": la variabile v contiene già il valore numerico di tipo float, quindi "V = (float(v)*k)" non ha molto senso, prorio perchè v e k sono valori di tipo float e il risultato sarà del tipo float.
Quando apri un file lo devi poi chiudere:
fp = open(file1,'w')
fp.write(bmv702v)
fp = open(file2,'w')
fp.write(bmv702s)
fp = open(file3,'w')
fp.write(bmv702i)
fp = open(file4,'w')
fp.write(energypos)
fp.write(powerpos)
fp = open(file5,'w')
fp.write(energyneg)
fp.write(powerneg)
fp.close()
fp.close() chiude il file5 e non i precedenti che sono rimasti aperti.
P.S.
Per curiosità sto mandando in esecuzione il tuo codice assegnando a MyData la seguente stringa = '12345678910\n'
Non conosco cosa arduino restituisca al raspberry. Dalla costante K immagino che anche la corrente necessiti di 5-6 byte invce che 2 (previsto come valore 10, quindi 2 soli byte).
Codice:
while True:
myData = arduinoSerialData.readline()
counterpos += 1
counterneg += 1
lun = len(myData)
v = float(myData[0:5])
c = float(myData[5:9])
i = float(myData[9:lun])
k = 0.001
j = 0.1
V = (float(v)*k)
soc = (float(c)*j)
I = (float(i)*k)
if I>0:
Ppos = V*I
else:
Pneg = V*I
bmv702v = str(metern8) + '(' + str(V) + '*V)'
bmv702s = str(metern9) + '(' + str(soc) + '*soc)'
bmv702i = str(metern10) + '(' + str(I) + '*A)'
energypos = str(metern11) + '(' + str(counterpos) + '*Wh)\n'
........
........
"v = float(myData[0:5])": la variabile v contiene già il valore numerico di tipo float, quindi "V = (float(v)*k)" non ha molto senso, prorio perchè v e k sono valori di tipo float e il risultato sarà del tipo float.
Quando apri un file lo devi poi chiudere:
fp = open(file1,'w')
fp.write(bmv702v)
fp = open(file2,'w')
fp.write(bmv702s)
fp = open(file3,'w')
fp.write(bmv702i)
fp = open(file4,'w')
fp.write(energypos)
fp.write(powerpos)
fp = open(file5,'w')
fp.write(energyneg)
fp.write(powerneg)
fp.close()
fp.close() chiude il file5 e non i precedenti che sono rimasti aperti.
P.S.
Per curiosità sto mandando in esecuzione il tuo codice assegnando a MyData la seguente stringa = '12345678910\n'
Non conosco cosa arduino restituisca al raspberry. Dalla costante K immagino che anche la corrente necessiti di 5-6 byte invce che 2 (previsto come valore 10, quindi 2 soli byte).