##### Pogostnost izpada zveze - S53MV 14.09.2016 ##### #izvajanje potrebuje najmanj Anaconda2-4.1.1-Windows-x86 in pyserial-2.7.win32_py3k import time, serial #uporabljene funkcije m=700 #mejna vrednost meritev port='COM14' #ime zaporednega vmesnika print'*** Pogostnost izpada zveze - S53MV 14.09.2016 ***' n=int(input('Vstavi stevilo meritev: ')) f0=[0] #postavi vsa polja na zacetne vrednosti f1=[0] f2=[0] f3=[0] i=1 while i<=m: f0=f0+[i] f1=f1+[0] f2=f2+[0] f3=f3+[0] i=i+1 #odpri comport port, 115200bps, 8bit, brez paritete print 'Pocakaj na lenobni USB...' comport=serial.Serial(port,115200,timeout=1) comport.setRTS(False) #sprosti /BOOTLOADER comport.setDTR(False) #sprosti /RESET time.sleep(3) comport.readline() #pocisti sprejemni vmesnik i=n #podatki iz merilnega sprejemnika v polja f1, f2 in f3 while i>0: s=comport.readline() j=int(s[0:3]) #kanal #1 - zelena krivulja if j<=m: f1[j]=f1[j]+1 k=int(s[4:7]) #kanal #2 - rdeca krivulja if k<=m: f2[k]=f2[k]+1 if k>j: #izbira vecjega od j,k - modra krivulja j=k if j<=m: f3[j]=f3[j]+1 i=i-1 print 'Zbiranje podatkov:', i, ' \r', comport.close() #zapri comport port t=time.ctime() #zabelezi cas meritve f1[0]=f1[0]/float(n) #integriraj in normiraj krivulje pogostnosti izpada f2[0]=f2[0]/float(n) f3[0]=f3[0]/float(n) i=1 while i<=m: f1[i]=f1[i]/float(n)+f1[i-1] f2[i]=f2[i]/float(n)+f2[i-1] f3[i]=f3[i]/float(n)+f3[i-1] i=i+1 print '\r\nPocakaj na nalaganje grafike...' import matplotlib.pyplot as plt print 'Risanje krivulj... '+t plt.plot(f0,f1,'g-') #kanal #1 - zelena krivulja plt.plot(f0,f2,'r-') #kanal #2 - rdeca krivulja plt.plot(f0,f3,'b-') #izbira vecjega - modra krivulja plt.axis([0, m, 0.0, 1.0]) plt.title('Izpad zveze '+str(n)+' meritev '+t) plt.xlabel('Prag sprejemnika') plt.ylabel('Pogostnost izpada') plt.show() #konec programa