mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
fix s-meter
This commit is contained in:
+10
-8
@@ -268,14 +268,14 @@ begin
|
||||
'function updBand(vfo){let bi=0,bd=1e15;BAND_F.forEach((f,i)=>{const d=Math.abs((vfo||0)-f);if(d<bd){bd=d;bi=i;}});q("bandSel").value=bi;}' +
|
||||
|
||||
'let smAvg=-130,smPeak=-130,smMin=-130;' +
|
||||
'function dbToX(db,bx,bw){return Math.max(bx,Math.min(bx+bw,Math.round(bx+(db+127)/127*bw)));}' +
|
||||
'function dbToX(db,bx,bw){const DB_MIN=-127,DB_MAX=-13;return Math.max(bx,Math.min(bx+bw,Math.round(bx+(db-DB_MIN)/(DB_MAX-DB_MIN)*bw)));}' +
|
||||
'function paintSM(dbm){' +
|
||||
'const w=smCv.clientWidth||340,h=smCv.clientHeight||64;' +
|
||||
'const AVG_ALPHA=0.40,ZONE_DB=6,PEAK_BASE=0.12,MIN_BASE=0.12,ACCEL=0.030,MAX_A=0.92;' +
|
||||
'const DBM_MARKS=[-120,-100,-80,-60,-40,-20,0];' +
|
||||
'const DBM_LABELS=["-120","-100","-80","-60","-40","-20","0"];' +
|
||||
'const S_MARKS_DBM=[-121,-115,-109,-103,-93,-83,-73,-53,-33];' +
|
||||
'const S_MARKS_LBL=["S1","S3","S5","S7","S9","+10","+20","+40","+60"];' +
|
||||
'const DBM_MARKS=[-120,-100,-80,-60,-40,-20];' +
|
||||
'const DBM_LABELS=["-120","-100","-80","-60","-40","-20"];' +
|
||||
'const S_MARKS_DBM=[-121,-109,-97,-85,-73,-53,-33,-13];' +
|
||||
'const S_MARKS_LBL=["S1","S3","S5","S7","S9","+20","+40","+60"];' +
|
||||
'const TICK_LONG=5,TICK_MED=3;' +
|
||||
'smAvg=smAvg*(1-AVG_ALPHA)+dbm*AVG_ALPHA;' +
|
||||
'const pTarget=Math.max(dbm,smAvg+ZONE_DB),mTarget=Math.min(dbm,smAvg-ZONE_DB);' +
|
||||
@@ -303,7 +303,7 @@ begin
|
||||
'mctx.strokeStyle="#DCE0E0";mctx.lineWidth=1;mctx.beginPath();mctx.moveTo(x,YT-TICK_LONG);mctx.lineTo(x,YT-1);mctx.stroke();' +
|
||||
'const t=DBM_LABELS[i],tw=mctx.measureText(t).width;' +
|
||||
'mctx.fillStyle="#DCDCD0";mctx.fillText(t,Math.round(x-tw/2),YT-TICK_LONG-1);}' +
|
||||
'for(let d=-125;d<0;d+=5){const x=dbToX(d,BX,BW);' +
|
||||
'for(let d=-125;d<-13;d+=5){const x=dbToX(d,BX,BW);' +
|
||||
'mctx.strokeStyle="#708070";mctx.lineWidth=1;mctx.beginPath();mctx.moveTo(x,YT-TICK_MED);mctx.lineTo(x,YT-1);mctx.stroke();}' +
|
||||
'for(let i=0;i<S_MARKS_DBM.length;i++){const x=dbToX(S_MARKS_DBM[i],BX,BW),ov=S_MARKS_DBM[i]>=-73;' +
|
||||
'mctx.strokeStyle=ov?"#70A090":"#708070";mctx.lineWidth=1;mctx.beginPath();mctx.moveTo(x,YB+1);mctx.lineTo(x,YB+TICK_LONG);mctx.stroke();' +
|
||||
@@ -312,8 +312,10 @@ begin
|
||||
'mctx.fillStyle="#DCD896";mctx.font="bold 12px Courier New";' +
|
||||
'mctx.fillText(dbm.toFixed(1).padStart(6," "),1,12);' +
|
||||
'mctx.fillStyle="#707050";mctx.font="10px Courier New";mctx.fillText("dBm",1,YT-2);' +
|
||||
'let sLbl;if(dbm<-93){let sv=Math.round((dbm+127)/6);if(sv<1)sv=1;if(sv>9)sv=9;sLbl="S"+sv;}' +
|
||||
'else sLbl="S9+"+Math.round(dbm+93);' +
|
||||
'let sLbl;' +
|
||||
'if(dbm>=-73){let over=Math.round(dbm+73);if(over<5)sLbl="S9";else{over=Math.round((over+5)/10)*10;if(over===0)over=10;sLbl="S9+"+over;}}' +
|
||||
'else if(dbm<=-121){sLbl="S1";}' +
|
||||
'else{sLbl="S1";for(let i=1;i<=8;i++){if(dbm>=(-121+(i-1)*6))sLbl="S"+i;}}' +
|
||||
'mctx.fillStyle="#F0F0F0";mctx.font="bold 12px Courier New";mctx.fillText(sLbl,1,YB+TICK_LONG+10);}' +
|
||||
|
||||
// pendingCmds: команды в пути — не перезаписываем эти поля из server state
|
||||
|
||||
Reference in New Issue
Block a user