added remote k209 setup
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
"""Smoke test for a remote Compact-M K209 server."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import numpy as np
|
||||
|
||||
PROJECT_ROOT = Path(__file__).resolve().parents[2]
|
||||
if str(PROJECT_ROOT) not in sys.path:
|
||||
sys.path.insert(0, str(PROJECT_ROOT))
|
||||
|
||||
from python_app.hardware_full.k209_remote_protocol import DEFAULT_REMOTE_HOST, DEFAULT_REMOTE_PORT
|
||||
from python_app.hardware_full.remote_compact_m_k209_service import RemoteCompactMK209Service
|
||||
from python_app.models.run_config_model import RadarSweepModel
|
||||
|
||||
|
||||
def _parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(description="Validate remote K209 connection and one sweep.")
|
||||
parser.add_argument("--host", default=DEFAULT_REMOTE_HOST, help="K209 remote server host.")
|
||||
parser.add_argument("--port", type=int, default=DEFAULT_REMOTE_PORT, help="K209 remote server port.")
|
||||
parser.add_argument("--start-hz", type=float, default=10_000_000.0)
|
||||
parser.add_argument("--stop-hz", type=float, default=100_000_000.0)
|
||||
parser.add_argument("--points", type=int, default=11)
|
||||
parser.add_argument("--ifbw-hz", type=float, default=10_000.0)
|
||||
parser.add_argument("--power-dbm", type=float, default=-20.0)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def main() -> int:
|
||||
args = _parse_args()
|
||||
sweep = RadarSweepModel(
|
||||
start_hz=args.start_hz,
|
||||
stop_hz=args.stop_hz,
|
||||
points=args.points,
|
||||
if_bandwidth_hz=args.ifbw_hz,
|
||||
power_dbm=args.power_dbm,
|
||||
)
|
||||
service = RemoteCompactMK209Service(host=args.host, port=args.port)
|
||||
try:
|
||||
service.open()
|
||||
print(f"K209 IDN: {service.query_identity()}")
|
||||
service.configure(sweep)
|
||||
result = service.acquire()
|
||||
finally:
|
||||
service.close()
|
||||
|
||||
s11 = result.trace("s11")
|
||||
s21 = result.trace("s21")
|
||||
if result.x.size != args.points or s11.size != args.points or s21.size != args.points:
|
||||
raise RuntimeError("Remote K209 sweep returned an unexpected point count")
|
||||
if not np.all(np.isfinite(result.x)) or not np.all(np.isfinite(s11)) or not np.all(np.isfinite(s21)):
|
||||
raise RuntimeError("Remote K209 sweep contains non-finite values")
|
||||
if not np.all(np.diff(result.x) >= 0):
|
||||
raise RuntimeError("Remote K209 frequency axis is not monotonic")
|
||||
|
||||
print(
|
||||
"Remote K209 sweep OK: "
|
||||
f"points={args.points}, first_hz={result.x[0]:.3f}, last_hz={result.x[-1]:.3f}, "
|
||||
f"mean_abs_s11={float(np.mean(np.abs(s11))):.6g}, "
|
||||
f"mean_abs_s21={float(np.mean(np.abs(s21))):.6g}"
|
||||
)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user