from PIL import Image, ImageDraw, ImageChops, ImageFont import socket import sys from os import rename CONTRAST=3.0 BRIGHTNESS=40.0 VERB=False YSIZE=500 FN="/tmp/w.png" PORT=18500 FONTSIZE=12 FONTCOL=100 RENAME="" SAVEEVERY=1 NICE=0 def genpalette(): # make nice colours for gains pal=[] for i in range(0,256): r=0 g=0 b=0 if i<64: b=i*4 elif i<128: b=255-(i-64)*4 g=(i-64)*4 r=g elif i<192: g=255-(i-128)*4 r=255 else: r=255 g=(i-192)*4 b=g # pal+=[(r,g,b)] pal+=[r,g,b] return pal def getv(d, pos): return (d[pos+3]<<24)+(d[pos+2]<<16)+(d[pos+1]<<8)+d[pos] argc=len(sys.argv) i=1 while i (40)") print("-C (100)") print("-c (3.0)") print("-e save image every (1)") print("-f (12)") print("-h this") print("-i (/tmp/w.png)") print("-n (0) remove constant signals 1 fast, 100 slow") print("-p (18500)") print("-r rename complete written image ()") print("-v verbous") print("-y (500)") quit() elif sys.argv[i]=="-v": VERB=True elif sys.argv[i]=="-i" and i+10 and x>0: dm=0 for i in range(0, x): dm+=db[i] dm=dm/x for i in range(0, x): try: med[i]+=((int(db[i])-int(dm))*1000-med[i])/NICE db[i]-=med[i]/1000 except: med+=[0.0] if x!=xsize: # x size changed med=[] xsize=x im=Image.new("P",(xsize,YSIZE)) im.putpalette(lut) px = im.load() pd = ImageDraw.Draw(im) im.paste((20),box=(0,0,xsize,yhead),mask=None) # ruler background # ruler for i in range(1,xsize-1): h=(i-1)*step + starthz if h%1000000==0: pd.line((i,yhead,i,yhead-8), fill=(100)) pd.text((i+1,0),str(h//1000000),font=fnt,fill=(FONTCOL)) elif h%500000==0: pd.line((i,yhead,i,yhead-6), fill=(100)) elif h%100000==0: pd.line((i,yhead,i,yhead-3), fill=(100)) # ruler # automatic zero level # hist=[0]*256 # for i in range(0,xsize): hist[db[i]]+=1 # m=0 # for i in range(0,len(hist)): # if m<=hist[i]: # m=hist[i] # z=i # automatic zero level z=60 for i in range(0,xsize): px[i,yhead]=min(255,max(0,int((db[i]-z)*CONTRAST+BRIGHTNESS))) # px[i, 0]=lut[n] # px[i, 0]=n dl=""; for i in sondes: if lines-sondes[i][3]>50: dl=i # purge not heard for a while else: # write name right beside freq track if step>0 and (lines-sondes[i][2])%100==0: x=sondes[i][0]*1000-starthz # hz from left image margin if x>0: x=(sondes[i][1]/2 + x)//step + 2 # half badwidth + freq # print(x,yhead+1,i) if x