⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pats.bas

📁 通过GPIB接口读取频谱仪的测试曲线
💻 BAS
字号:
DECLARE SUB GetFBR (CenAgl&, FBRAglAre%, FBR!)
DECLARE SUB CALGAIN (Gain!)
DECLARE SUB PCIRCLE (X!, Y!, R!)
DECLARE SUB PPOLDIS (CenAgl&, AmpAre%)
DECLARE SUB WrtTxt (TXT$)


CONST DCL = &H14
CONST SPE = &H18
CONST SPD = &H19
CONST PPU = &H15
CONST EGET = &H8
CONST GTL = &H1
CONST PPC = &H5
CONST SDC = &H4
CONST TCT = &H9
CONST MLA = &H20
CONST MTA = &H40
CONST MSA = &H60
CONST PPE = &H60
CONST PPD = &H60
CONST UNL = &H3F
CONST LLOK = &H11
CONST iepon = &H0    '
CONST crst = &H2     ' 芯片复位                    */
CONST rrfd = &H3     ' 释放RFD                     */
CONST trig = &H4     ' 触发                        */
CONST rtl = &H5      ' 返回至本地消息产生          */
CONST seoi = &H6     ' 发送 EOI 消息               */
CONST nvld = &H7     ' 非有效(接收OSA),释放DAC封锁 */
CONST vld = &HF      ' 有效(MSA 接收,CPT,DEC,DET),释放DAC 闭锁 */
CONST sppf0 = &H1    ' 复位并行查询标志            */
CONST sppf1 = &H9    ' 置位并行查询标志            */
CONST gts = &H10     ' 进入准备                    */
CONST tca = &H11     ' 异步取控                    */
CONST tcs = &H12     ' 同步取控                    */
CONST tcse = &H1A    ' 同步取控结束                */
CONST ltn = &H13     ' 本地听取                    */
CONST ltnc = &H1B    ' 连续方式听                  */
CONST lun = &H1C     ' 本地不听                    */
CONST epp = &H1D     ' 执行并行查询                */
CONST sifc0 = &H16   ' 复位 IFC                    */
CONST sifc1 = &H1E   ' 置位 IFC                    */
CONST sren0 = &H17   ' 复位 REN                    */
CONST sren1 = &H1F   ' 置位 REN                    */
CONST dsc = &H14     ' 系统控制抑制                */

' UPD7210 写寄存器组      */
CONST BytOut = &H310
CONST INTMASK1 = &H311
CONST INTMASK2 = &H312
CONST SrlSplMod = &H313
CONST AddrMod = &H314
CONST AuxCmd = &H315
CONST AddrSpf = &H316
CONST StrEnd = &H317

' UPD7210 读寄存器组      */
CONST BytInp = &H310
CONST IntSta1 = &H311
CONST IntSta2 = &H312
CONST SrlSpl = &H313
CONST AddrSta = &H314
CONST CmdPas = &H315
CONST AddrRtn0 = &H316
CONST AddrRtn1 = &H317
CONST SysCon = &H318
CONST NULL = &H1F
DIM IntMap1 AS INTEGER
DIM IntMap2 AS INTEGER

DECLARE SUB INIT (SysAddr%)
DECLARE SUB REMOTE (ObjAddr%)
DECLARE SUB RETLCL (ObjAddr%)
DECLARE SUB SEND (ObjAddr%, TranChrStr$)
DECLARE SUB DELAY (DlyTim!)
DECLARE FUNCTION CmdOut% (CmdByt%)
DECLARE SUB GetChrFrmGPIB (GetChr$)
DECLARE SUB SentMsgToGPIB (TranChr$)
DECLARE SUB TIMEOUT (TimOvf!)

DIM SysAddr AS INTEGER
DIM SHARED TIMEOVER

DECLARE SUB PBOX (LftX!, BtmY!, RgtX!, TopY!)
DECLARE SUB PLINE (FstX!, FstY!, SndX!, SndY!)
DECLARE SUB PWINDOW (W1!, w2!, W3!, W4!)

DECLARE SUB ChangePen (PN%)
DECLARE SUB PVW (VW1 AS ANY)
DECLARE SUB PVIEW (V1!, V2!, V3!, V4!)
DECLARE SUB PDRAW (X!, Y!)
DECLARE FUNCTION XE$ (X!)
DECLARE FUNCTION YE$ (Y!)
DECLARE SUB PMOVE (X!, Y!)
TYPE VW
  V1 AS SINGLE
  V2 AS SINGLE
  V3 AS SINGLE
  V4 AS SINGLE
  W1 AS SINGLE
  w2 AS SINGLE
  W3 AS SINGLE
  W4 AS SINGLE
  A8 AS SINGLE
  A9 AS SINGLE
  B8 AS SINGLE
  B9 AS SINGLE
END TYPE
CONST PltAddr = 5
DIM CrntVW AS VW

TYPE PntParOpt
  InsMdl    AS INTEGER
  Dte       AS INTEGER
  Tim       AS INTEGER
  FilNam    AS INTEGER
  Gain      AS INTEGER
  HlfPwrWid AS INTEGER
  SidLobLvl AS INTEGER
  MaxLvl    AS INTEGER
  Freq      AS INTEGER
  Pst       AS STRING * 2
  FBR       AS INTEGER
END TYPE
TYPE Grp
 DisMde     AS INTEGER
 DisArea    AS INTEGER
 LvlSpn     AS INTEGER
 CenAglOpt  AS INTEGER
 FBRAglAre  AS INTEGER
 XdBwidth   AS SINGLE
END TYPE

TYPE FilType
 Drv      AS STRING * 3
 Path     AS STRING * 20
 FilNam   AS STRING * 8
END TYPE

DECLARE FUNCTION LkfForMaxLvl% (FstAgl&, SndAgl&)
DECLARE FUNCTION XIELU! (CrngAgl&, NextAgl&, LD%)
DECLARE SUB LokForSLL (Agl&, LLLA&, LL!, RLLA&, RL!)
DECLARE SUB SaveCfgFil (P1 AS ANY, P2 AS ANY, P3 AS ANY)
DECLARE SUB ReadCfgFil (P1 AS ANY, P2 AS ANY, P3 AS ANY)
DECLARE SUB ProOpt (P1 AS PntParOpt, P2 AS Grp, P3 AS FilType)
DECLARE FUNCTION LOG10! (BYVAL Var!)
DECLARE FUNCTION EXP10! (BYVAL Var!)
DECLARE FUNCTION IncAgl& (BYVAL Agl&)
DECLARE FUNCTION DecAgl& (BYVAL Agl&)
DECLARE SUB REDRAW (CenAgl AS ANY, AglAre AS ANY, MaxLvl AS ANY, MinLvl AS ANY, LblLvl AS ANY)
DECLARE SUB PREDRAW (CenAgl AS ANY, AglAre AS ANY, MaxLvl AS ANY, MinLvl AS ANY, LblLvl AS ANY)
DECLARE SUB ReadFil (P3 AS ANY)
DECLARE SUB HlfPwrWid (HPW!, PL)
DECLARE SUB CALDIRCOE (D!)
DECLARE SUB POLDIS (Agl&, Area%)
CONST NoLvl = 32767

DIM ParOpt AS PntParOpt
DIM GrpDis AS Grp
DIM GetFil AS FilType
DIM Lvl%(18432)
DIM PLTPAR(12) AS STRING * 26
DIM Xscl(9) AS STRING * 4
INIT 0
Xscl(0) = "20.0"
Xscl(1) = "10.0"
Xscl(2) = "6.67"
Xscl(3) = " 5.0"
Xscl(4) = " 4.0"
Xscl(5) = " 2.5"
Xscl(6) = " 2.0"
Xscl(7) = " 1.0"
Xscl(8) = " 0.5"

ReadCfgFil ParOpt, GrpDis, GetFil
GetFil.FilNam = COMMAND$
MainLoop:
ProOpt ParOpt, GrpDis, GetFil
IF GetFil.FilNam <> MapFil$ THEN
  ReadFil GetFil
  HPWT% = 0
  GainT% = 0
  SLLT% = 0
  FBRT% = 0
  IVDAGL& = MaxAgl& + 1
END IF
IF FE% THEN
 GetFil.FilNam = ""
 GOTO MainLoop
END IF
MapFil$ = GetFil.FilNam
'
'Select angle display area
'
SELECT CASE GrpDis.DisArea
  CASE 1 TO 5
   AglDisArea& = (MaxAgl& + 1) / GrpDis.DisArea
  CASE 6
    AglDisArea& = (MaxAgl& + 1) / 8
  CASE 7
    AglDisArea& = (MaxAgl& + 1) / 10
  CASE 8
    AglDisArea& = (MaxAgl& + 1) / 20
  CASE 9
    AglDisArea& = (MaxAgl& + 1) / 40
  CASE ELSE
    GrpDis.DisArea = 1
     AglDisArea& = (MaxAgl& + 1) / GrpDis.DisArea
END SELECT
'
'Select center angle
'
SELECT CASE GrpDis.CenAglOpt
  CASE 0
    IF SpfyAgl& > 0 THEN
      CenAgl& = SpfyAgl&
    ELSE
      CenAgl& = MaxLvlAgl&
    END IF
  CASE 1
    CenAgl& = MaxLvlAgl&
  CASE 2
    IF NOT (HPWT%) THEN
      HlfPwrWid HPW, 3
      IF CT% THEN
	HPWT% = -1
      END IF
    END IF
    IF HPWT% AND HPW <> IVDAGL& THEN
      CenAgl& = CenAglOf3dB&
    ELSE
      CenAgl& = MaxLvlAgl&
    END IF
  CASE ELSE
    BEEP
END SELECT
'
'
'
IF GrpDis.LvlSpn = 0 THEN
  LvlSpn% = FIX(ABS((MaxLvl% - MinLvl%) / 1000) + .9) * 10
  IF LvlSpn% < 10 THEN LvlSpn% = 10
ELSE
  LvlSpn% = GrpDis.LvlSpn
END IF

IF GrpDis.DisMde% THEN
  LowLvl% = MaxLvl% - LvlSpn% * 100
  CALL REDRAW(CenAgl&, AglDisArea&, MaxLvl%, LowLvl%, GrpDis.XdBwidth * 100)
ELSE
  POLDIS CenAgl&, LvlSpn%
END IF
IF GrpDis.DisMde THEN
  Crntcol% = 2
  IF ParOpt.Pst = "LU" THEN Crntcol% = 65
  LOCATE 2, Crntcol%: PRINT USING "X:##.#

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -