littlebot
Published on 2025-04-16 / 3 Visits
0

【源码】基于Python和C语言的选择性重发ARQ算法模拟系统

项目简介

本项目聚焦于模拟选择性重发ARQ算法,编写了发送方(S)和接收方(R)两个程序。发送方程序基于Python 3,在个人PC(x86_64 Windows 11)上运行;接收方程序采用C语言,基于STM32F407ZGT6(32bit无操作系统ARM)运行。通过普通杜邦线和USB - TTL串口(波特率9600,字长8,停止1)实现物理层通讯,具备数据包的组装成帧、缓存、发送、定时、接收ACK应答、删除数据帧、停止定时器等功能,同时模拟数据帧或ACK的丢失、损坏、超时等异常处理过程,通过输入和输出展示程序的成帧、流控、差控功能。

项目的主要特性和功能

  1. 模拟选择性重发ARQ算法:发送方和接收方程序严格遵循该算法,发送和接收窗口大小小于等于$2^{m - 1}$。
  2. 异常处理模拟:可模拟数据帧或ACK的丢失、损坏、超时等异常情况并处理。
  3. 成帧功能:成帧格式为[ 序列号 | 数据帧*n | 校验字段 | 帧尾:\r\n ],便于调试与查看。
  4. 流控功能:发送窗口满时,等待窗口有空位,丢弃新输入,实现流量控制。
  5. 差控功能:通过简单的长度校验和物理层的奇偶校验,检查数据帧正确性。
  6. 可视化界面:接收方有可触控UI界面,发送方也有UI界面,可演示数据帧的发送、传输、异常处理等过程。

安装使用步骤

发送方(Python程序)

  1. 确保已安装Python 3环境。
  2. 使用命令pip install pyserial安装pyserial库。
  3. 打开命令行终端,进入项目中发送方程序所在目录。
  4. 运行发送方程序,按提示输入正确的串口号后开始发送数据。

接收方(C语言程序)

  1. 环境配置:安装STM32CubeMX和STM32CubeIDE,确保必要的硬件支持包(HAL库)已安装。
  2. 代码生成:使用STM32CubeMX工具生成代码框架,配置硬件外设参数,生成C代码。
  3. 代码修改:根据项目中的接收方代码对生成的代码进行修改。
  4. 编译和调试:使用STM32CubeIDE编译代码,并下载到STM32F407ZGT6微控制器进行调试。
  5. 功能测试:确保硬件连接正确(普通杜邦线连接发送方和接收方),启动发送方和接收方程序,进行功能测试,验证系统各项功能是否正常。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】