##### Risanje pogostnosti izpada - S53MV 03.09.2016 #####

#izvajanje potrebuje najmanj Anaconda2-4.1.1-Windows-x86 in pyserial-2.7.win32_py3k
import time, serial	#uporabljene funkcije
port='COM5'		#ime zaporednega vmesnika

n=int(input('Vstavi stevilo meritev: '))

f0=[0]			#postavi vsa polja na zacetne vrednosti
f1=[0]
f2=[0]
f3=[0]
i=1
while i<785:
	f0=f0+[i]
	f1=f1+[0]
	f2=f2+[0]
	f3=f3+[0]
	i=i+1

#odpri comport port, 9600bps, 8bit, brez paritete
print 'Pocakaj na lenobni USB...'
comport=serial.Serial(port,9600,timeout=0.1)
comport.setRTS(False)	#sprosti /BOOTLOADER
comport.setDTR(False)	#sprosti /RESET
time.sleep(3)
comport.readline(99)	#pocisti sprejemni vmesnik

i=n-1			#podatki iz merilnega sprejemnika v polja f1, f2 in f3
while i>0:
	s=comport.readline(9)
	j=int(s[0:3])	#kanal #1
	f1[j]=f1[j]+1
	k=int(s[4:7])	#kanal #2
	f2[k]=f2[k]+1
	if k>j:		#izbira vecjega od j,k
		j=k
	f3[j]=f3[j]+1
	i=i-1
	print 'Zbiranje podatkov:', i, '    \r',

i=0			#integriraj krivulje pogostnosti izpada
while i<784:
	j=i+1
	f1[j]=f1[j]+f1[i]
	f2[j]=f2[j]+f2[i]
	f3[j]=f3[j]+f3[i]
	i=j
i=0			#normiraj krivulje pogostnosti izpada
while i<785:
	f1[i]=f1[i]/float(n)
	f2[i]=f2[i]/float(n)
	f3[i]=f3[i]/float(n)
	i=i+1

t=time.ctime()		#narisi krivulje pogostnosti izpada
import matplotlib.pyplot as plt
print '\r\nRisanje krivulj...   '+t
plt.plot(f0,f1,'b-')
plt.plot(f0,f2,'r-')
plt.plot(f0,f3,'g-')
plt.title('Izpad '+str(n)+' meritev  '+t)
plt.xlabel('Prag sprejemnika')
plt.ylabel('Pogostnost')
plt.show()

#konec programa
