Bis zum letzten Mal kann die Messung automatisiert werden. Dieses Mal, wenn das Messgerät schlechte Laune hat, wird es einen Fehler auslösen, also werden wir uns darum kümmern.
Wenn Sie den Namen der Ausnahme (gedruckt, wenn ein Fehler auftritt) nach "Ausnahme" schreiben, können Sie das Verhalten bestimmen, wenn es fehlschlägt. Dieses Mal werde ich ser.close ()
machen.
try:
while 1:
if pulse >= MAX:
##Beenden Sie die while-Anweisung, wenn die Position MAX erreicht
break
##Aktuelle Standortinformationen aufzeichnen
pulse_list.append(pulse/2)
##Den Strom messen(Der Wert an dieser Position ist der Durchschnitt von 5 mal.)
for i in range(5):
ser = serial.Serial(COMampere,bitRate,timeout=0.1)
ser.write(b"F5, R0,PR2\r\n")
time.sleep(1)
ser.write(b"MD?\r\n")
time.sleep(1)
tmp = ser.read_all()
#Überspringen, wenn kein Strom vorhanden ist
if len(tmp)== 0:
ser.close()
continue
ampere = float(tmp.split()[2])
ampere_average_list.append(ampere)
time.sleep(1)
ser.close()
##Strom und Puls(Position)Auflisten
ampere_list.append(sum(ampere_average_list)/len(ampere_average_list))
ampere_average_list = []
##Bewegen Sie den optischen Tisch
pulse += 1000
position = "A:2+P"+str(pulse)+"\r\n"
ser = serial.Serial(COMpulse,bitRate,timeout=0.1)
ser.write(bytes(position, 'UTF-8'))
time.sleep(1)
ser.write(b"G:\r\n")
ser.close()
##Verwandeln Sie die Liste in einen Datenrahmen
print(ampere_list)
print(pulse_list)
df = pd.DataFrame({'ampere(A)':ampere_list,'pulse':pulse_list})
def pulseToMilliMeter(pulse):
return pulse*0.006
df["position(mm)"] = df["pulse"].map(pulseToMilliMeter)
df.to_csv('./csv/result.csv',index=False)
plt.figure()
df.plot(x='position(mm)',y='ampere(A)',marker='o')
plt.savefig('./img/sample.png')
plt.close('all')
except IndexError:
ser.close()
Recommended Posts