Jusqu'à la dernière fois, la mesure peut être automatisée. Cette fois, lorsque l'appareil de mesure est de mauvaise humeur, il lancera une erreur, nous allons donc y remédier.
Si vous écrivez le nom de l'exception (imprimé lorsqu'une erreur se produit) après «sauf», vous pouvez déterminer le comportement en cas d'échec. Cette fois, je vais faire ser.close ()
.
try:
while 1:
if pulse >= MAX:
##Termine l'instruction while lorsque la position atteint MAX
break
##Enregistrer les informations de localisation actuelles
pulse_list.append(pulse/2)
##Mesurer le courant(La valeur à cette position est la moyenne de 5 fois.)
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()
#Ignorer s'il n'y a pas de courant
if len(tmp)== 0:
ser.close()
continue
ampere = float(tmp.split()[2])
ampere_average_list.append(ampere)
time.sleep(1)
ser.close()
##Courant et impulsion(position)Lister
ampere_list.append(sum(ampere_average_list)/len(ampere_average_list))
ampere_average_list = []
##Déplacer la table optique
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()
##Transformez la liste en un dataframe
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