# netterminal **Repository Path**: alvari/netterminal ## Basic Information - **Project Name**: netterminal - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-02 - **Last Updated**: 2026-02-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 网络演示系统终端 --- ## 一、环境依赖 由 Anaconda 构筑 Python 环境 **TBD** ## 部署步骤 虚拟环境: ```bash # linux下 sudo apt install qtcreator ``` vscode可以安装拓展“PYQT Integration”,安装后在拓展设置的最下面找到设置“Pyqt-integration > Qtdesigner:path”下填入designer工具的路径,这个路径在linux下在安装qtcreator包后可以通过下面指令获得 ```bash which designer ``` ## 二、目录结构描述 ``` NETTERMINAL ├── Document // 文档 │ ├── Forms // 界面设计 │ ├── MainWindowMin.ui │ ├── MainWindowPro.ui │ ├── Ui_MainWindowMin.py │ └── Ui_MainWindowPro.py │ ├── Sources // 核心组成 │ ├── Component // 功能组件(提供功能) │ ├── Component1 // 功能1 │ └── Component2 // 功能2 │ ├── Device // 设备模块(提供模型) │ ├── Device1 // 模块1 │ └── Device2 // 模块2 │ ├── Driver // 硬件驱动(提供途径) │ ├── Driver1 // 驱动1 │ ├── Driver2 // 驱动2 │ └── Driver3 // 驱动3 │ ├── MainWindowMin.py // 移动终端入口(控制逻辑) │ └── MainWindowPro.py // 地面站终端入口(控制逻辑) │ ├── Main.py // 启动程序 └── README.md // 帮助文档 ``` ## 三、上位机如何构造0xABAB跳频起始时间+时间同步包 ```python import struct # def construct_abab_package(fhss_start, server_time): # 将跳频起始时间和服务端当前时间转换为大端字节序 fhss_start_bytes = struct.pack('>Q', fhss_start) server_time_bytes = struct.pack('>Q', server_time) # 将字节拼接起来,形成一个16字节的内容 content = fhss_start_bytes + server_time_bytes return content fhss_start = 1634243200 server_time = 1634243260 content = construct_abab_package(fhss_start, server_time) ``` 其中 ```python fhss_start = 1634243200 server_time = 1634243260 ``` 是两个时间戳,可以通过如下两种方法获得 1. 根据当前时间 ```python import time current_time = time.time() ``` 2. 获取特定时间的时间戳 ```python import datetime def construct_timestamp(year, month, day, seconds): # 构建一个datetime对象 dt = datetime.datetime(year, month, day, 0, 0, seconds) # 将datetime对象转换为时间戳 timestamp = int(dt.timestamp()) return timestamp year = 2021 month = 10 day = 15 seconds = 0 timestamp = construct_timestamp(year, month, day, seconds) ``` ## 指令集 * 大端序(Big Endian):数据的高位字节存储在内存 / 传输的低地址 / 先发送位置,低位字节存储在高地址 / 后发送位置。符合人类的阅读习惯(比如我们写数字1234,总是高位1在前,低位4在后)。用简写BE来表示。 * 小端序(Little Endian):数据的低位字节存储在内存 / 传输的低地址 / 先发送位置,高位字节存储在高地址 / 后发送位置。是大多数计算机(x86/x86_64 架构)的默认存储方式。用简写LE来表示。 下表默认情况下采用16频点,每频点2Byte,身份标识1Byte | 功能 | Header(2 Bytes) | Priority(1 Byte) | Length(2 Bytes) | Payload(可变长) | | :--------------------------- | :-------------: | :--------------: | :--------------: | :------------------------------------- | | 待发数据 | 0xAAAA | 优先级 | len(payload) | payload | | 端机间数据包发送时间间隔 | 0xAAAB | 无此字段 | len(payload) | payload(0xd2) | | 所有通信成员跳频频率表集合 | 0xAAAC | 无此字段 | len(payload) | 大端序、16×2 Bytes | | 所有通信成员跳频序列集合 | 0xAAAE | 无此字段 | 5×(1+16×2) Bytes | 跳频成员数×(1 Byte成员标识+16×2 Bytes) | | 发送端-目的端机的跳频序列表 | 0xAAAD | 无此字段 | len(payload) | 大端序、16×2 Bytes | | 发送功率 | 0xAAAF | 无此字段 | 1 Byte | 1 Byte 功率值 | | 跳频起始时间+同步时间 | 0xABAB | 无此字段 | 16 Bytes | 8 Byte跳频起始时间+8 Byte同步时间 | | 无线电静默(不发送但进程存在) | 0xABAD | 无此字段 | 0 | 无 | | 接收方备份数据 | 0xABAA | 无此字段 | 0 | 无 | | 组网信号 | 0xABAC | 无此字段 | 0 | 无 | | 开始广播 | 0xABAE | 无此字段 | 0 | 无 | | 停止广播 | 0xABAF | 无此字段 | 0 | 无 | | 压制干扰攻击 | 0xAFAA | 无此字段 | 1 | 功率 | | 脉冲阻断攻击 | 0xAFAB | 无此字段 | >3 | 2Bytes转发时延+1Byte功率+转发内容 | | 报文碰撞攻击 | 0xAFAC | 优先级 | 2 | 1Bytes转发时延+1Byte功率 | | 路由泛洪入侵 | 0xAFAD | 优先级 | 2 | 1Bytes报文间隔+1Byte功率 | | 路由黑洞入侵 | 0xAFAE | 无此字段 | 0 | 无 |