当前位置: 首页 > news >正文

根据Wireshark捕获数据包时间和长度绘制路由器发送给电脑数据的信号波形

上一期讲了:
根据Wireshark捕获数据包时间和长度绘制电脑发射信号波形-CSDN博客

这一期绘制路由器路由器发送给电脑数据的信号波形,这样可以比对电脑、路由器互相发送数据信号波形的关系。

一、筛选数据

192.168.1.103是我电脑的ip:

从Wireshark导出的数据中筛选发送给我电脑的部分:

无论Source是不是我的路由器ip:

数据包最终都是经由路由器发送给我的电脑。因为我的电脑连接路由器WiFi上网:

二、绘制波形

程序:

%zhouzhichao
%2025年8月20日
%把Wireshark捕获的数据绘制为波形图
%路由器发送给电脑的信号clc
clear
close all% 读取 Excel 文件
data = readtable('time and length direction=192.168.1.103.xlsx');% 查看前几行
head(data)% 单独取出时间和长度
time = data.Time;
length = data.Length;
% 基本清洗
mask = ~isnan(time) & ~isnan(length);
time   = time(mask);
length = length(mask);%% 参数:每字节耗时
t_per_byte = 26.7e-9;     % 26.7 ns/Byte%% 计算每个包的起止时间
t_end   = time(:);
t_start = t_end - length(:) .* t_per_byte;% 若有负起点,截到 0(可按需要注释)
t_start = max(t_start, 0);% 以起点升序排序
intervals = sortrows([t_start t_end], 1);%% (可选)合并重叠或紧邻的区间,减少锯齿段数量
% “紧邻”的阈值(例如 < 1 ns 认为相连)
touch_eps = 1e-9;  % 1 ns
merged = [];
for k = 1:size(intervals,1)s = intervals(k,1); e = intervals(k,2);if isempty(merged)merged = [s e];elseif s <= merged(end,2) + touch_eps% 重叠/相邻:向后扩展merged(end,2) = max(merged(end,2), e);elsemerged = [merged; s e];endend
end%% 生成阶梯波形的 (t, y) 点列
t_plot = [];
y_plot = [];
for k = 1:size(merged,1)s = merged(k,1); e = merged(k,2);% 对于每个区间 [s, e],追加四个点: (s,0)->(s,1)->(e,1)->(e,0)t_plot = [t_plot; s; s; e; e];y_plot = [y_plot; 0; 1; 1; 0];
end% 若希望在图上从 0 持续到首个 s 前也显示 0,可以在最前面加一个点
if ~isempty(t_plot)t_plot = [min(0, t_plot(1)); t_plot];y_plot = [0; y_plot];
end%% 绘图
figure; 
stairs(t_plot, y_plot, 'LineWidth', 1.5);
ylim([-0.2 1.2]);
xlabel('Time (s)');
ylabel('Signal Wave');
title('Waveform from Wireshark Packets');
grid on;set(gca, 'FontName', 'Times New Roman')
set(gca, 'FontSize', 15)

绘制效果:

http://www.dtcms.com/a/340611.html

相关文章:

  • 【FreeRTOS】临界资源管理
  • 树上背包(P2014 [CTSC1997] 选课)
  • 经营帮租赁经营板块:解锁资产运营新生态,赋能企业增长新引擎
  • 【最后203篇系列】034 使用SQLite构建简单的任务管理
  • Qt5.9.9 + Windows API 开发系统监控工具 - 教学级项目实战
  • Obsidian 1.9.10升级
  • 19.web api 10
  • SQL-leetcode— 2356. 每位教师所教授的科目种类的数量
  • 有关SWD 仿真和PA.15, PB3, PB4的冲突问题
  • 深入Linux内核:架构设计与核心功能解析
  • CSS3DRenderer+ CSS3DObject实现在 Three.js 中添加文本内容
  • 算法230. 二叉搜索树中第 K 小的元素
  • 10M25DCF484C8G Altera FPGA MAX10
  • 云原生俱乐部-RH294知识点归纳(1)
  • RK-Android11-PackageInstaller安装器自动安装功能实现
  • iOS App 混淆工具实战 医疗健康类 App 的安全与合规保护
  • 电脑驱动免费更新? 这款驱动管理工具:一键扫更新,还能备份恢复,小白也会用~
  • 【知识杂记】方差、标准差、均方误差、均方根误差与平均绝对误差,概念、计算公式、物理意义
  • 微型导轨的快速调平技术如何提升激光加工效率?
  • Python默认参数
  • CPTS--Administrator
  • 【clion】调试脚本并cmake构建Fargo项目win32版本
  • Spring Boot 配置
  • C++---向下取整(>>)与向零取整(/)
  • Vue2封装Axios
  • PyTorch - Developer Notes
  • 《录井工程与管理》——第二章井位勘测技术
  • 精品方案 | GCKontrol与OMNeT++联合仿真在机载网络性能分析中的应用
  • 基于单片机环境火灾安全检测
  • 驾驭复杂表单:用 RxJava 实现响应式表单处理