Advertisement
buckoka

Calc

Sep 21st, 2019
3,343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Awk 1.38 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. awk \
  4. '{
  5.     Time=$5+256*$6
  6.     for (i=0;i<7;i++)
  7.     {
  8.         print Time,$(9+8*i)+256*$(10+8*i),0
  9.         print Time,$(11+8*i)+256*$(12+8*i),1
  10.         print Time,$(13+8*i)+256*$(14+8*i),2
  11.         print Time,$(15+8*i)+256*$(16+8*i),3
  12.         Time=(++Time) % 65536
  13.     }  
  14. }' $1 |
  15. awk \
  16. 'BEGIN  {
  17.         time=1
  18.         p=2
  19.         ix=3
  20.         OFS=";"
  21.         TimeO+=0
  22.         i+=0
  23.         PressureFall+=15
  24.         for (i=1;i<=4;i++)
  25.         {
  26.             LastP[i]+=0         #word   2   ok
  27.             PMinC[i]+=0         #byte   1
  28.             TMin[i]+=0          #word   2   ok
  29.             LTMin[i]+=0         #word   2   ok
  30.             PFirst[i]+=0            #bit
  31.             F_DET[i]+=0             #bit    -
  32.                             #sum    7*4
  33.             Corr[i]+=0
  34.         }
  35.         LRPM+=0                 #word   2   ok
  36.     }
  37. {
  38.     $(ix)++
  39.     Pt=""
  40.     if ( $p <= LastP[$ix] )         #fall
  41.     {
  42. ##      print "fall",$ix,PMinC[$ix],F_DET[$ix]
  43. #       if ( $p == LastP[$ix] )
  44. #           Corr[$ix]=$time
  45.         if ( PMinC[$ix] < PressureFall )
  46.         {
  47.             PMinC[$ix]++
  48.             PMinC[$ix]++
  49.         }
  50.         else
  51.             F_DET[$ix]=1
  52.         TMin[$ix]=$time
  53.     }
  54.     else                    #rise
  55.     {
  56. ##      print "rise"
  57.         if ( F_DET[$ix] )
  58.         {
  59.             F_DET[$ix]=0
  60.             if ( PFirst[$ix] )
  61.             {
  62. ##              print TMin[$ix],LTMin[$ix],Corr[$ix]
  63.                 if ( (TMin[$ix]-LTMin[$ix]-Corr[$ix]) > 40 )
  64.                 {
  65.             PMinC[$ix]=0
  66.                     LRPM=2*int(60000/(TMin[$ix]-LTMin[$ix]-Corr[$ix]))
  67.                 }
  68.                 else
  69.                 {
  70.                     LRPM=3100
  71.                 }
  72.             }
  73.             else
  74.                 PFirst[$ix]=1
  75.             LTMin[$ix]=TMin[$ix]
  76.         }
  77.         else
  78.         if ( PMinC[$ix] )
  79.             PMinC[$ix]--
  80.         TMin[ix]=$time
  81.     }
  82.     LastP[$ix]=$p
  83.     if ( $ix == 1 )
  84.     print $0,LRPM
  85. }'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement