部分通信协议:

建立UDP连接:

server_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
address = ('10.0.17.155',4001)
server_socket.bind(address)

接收数据包:

data,address = server_socket.recvfrom(1000)

接收的数据包:

根据协议进行解析:

            # id号 1 无符号            ID = int((data[100+i*15:101+i*15]+data[99+i*15:100+i*15]).hex(),16)# Y轴距离 2  有符号 正前侧 负后侧Y = BitArray(data[102+i*15:103+i*15]+data[101+i*15:102+i*15]).int# 速度 2 有符号  正远离 负靠近V = BitArray(data[104+i*15:105+i*15]+data[103+i*15:104+i*15]).int# X轴距离 2 有符号 正右侧 负左侧X = BitArray(data[107+i*15:108+i*15]+data[106+i*15:107+i*15]).int# 直线距离R = round((Y*Y + X*X)**0.5,2)# SNR 无符号SNR = int(data[105:106].hex(),16)

设置Excel:

#               行 列   数据
worksheet.write(0, 0, label='Time')
worksheet.write(0, 1, label='动目标')# 目标的标题  ID Y X R AV V SNR
worksheet.write(0, 2, label='ID')
worksheet.write(0, 3, label='Y')
worksheet.write(0, 4, label='X')
worksheet.write(0, 5, label='R')
worksheet.write(0, 6, label='AV')
worksheet.write(0, 7, label='V')
worksheet.write(0, 8, label='SNR')

全部代码:

# -*- coding: cp936-*-
import math
import socket
import timeimport numpy
from bitstring import BitArray
import re
import xlwtserver_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
address = ('10.0.17.155',4001)
server_socket.bind(address)workbook = xlwt.Workbook(encoding = 'utf-8')
worksheet = workbook.add_sheet('My Worksheet')# 表格循环计数
j = 0      # 行数# 时间,ID
worksheet.write(0, 0, label='Time')
worksheet.write(0, 1, label='动目标')# 目标的标题  ID Y X R AV V SNR
worksheet.write(0, 2, label='ID')
worksheet.write(0, 3, label='Y')
worksheet.write(0, 4, label='X')
worksheet.write(0, 5, label='R')
worksheet.write(0, 6, label='AV')
worksheet.write(0, 7, label='V')
worksheet.write(0, 8, label='SNR')while True:  # 循环读数now = time.time()   # 获取当前时间data,address = server_socket.recvfrom(1000)# 动目标个数T_num = BitArray(data[98:99]).intif T_num > 0:   # 判断# j+1行# 时间写入表格worksheet.write(j + 1, 0, label=time.strftime('%H:%M:%S', time.localtime(now)))# 动目标数写入表格worksheet.write(j + 1, 1, label=T_num)i = 0while i < T_num:    # 依次解析# id号 无符号# ID = BitArray(data[100+i*15:101+i*15]+data[99+i*15:100+i*15]).intID = int((data[100+i*15:101+i*15]+data[99+i*15:100+i*15]).hex(),16)# Y轴距离 2  进行有符号解析的时候,要用BitArrayY = BitArray(data[102+i*15:103+i*15]+data[101+i*15:102+i*15]).int# 速度 2V = BitArray(data[104+i*15:105+i*15]+data[103+i*15:104+i*15]).int# X轴距离 2X = BitArray(data[107+i*15:108+i*15]+data[106+i*15:107+i*15]).int# 直线距离R = round((Y*Y + X*X)**0.5,2)# SNR# SNR = BitArray(data[105:106]).intSNR = int(data[105:106].hex(),16)# 方位  判断if Y > 0:if X > 0:AV = round(numpy.arctan(X / Y) * 180 / math.pi, 2)elif X == 0:AV = 0else:AV = round(numpy.arctan(X / Y) * 180 / math.pi + 360, 2)elif Y == 0:if X > 0:AV = 90else:AV = 270else:if X == 0:AV = 180else:AV = round(numpy.arctan(X / Y) * 180 / math.pi + 180, 2)# 目标的标题  ID Y X R AV V SNRworksheet.write(j+1, 2, label=ID)worksheet.write(j+1, 3, label=Y)worksheet.write(j+1, 4, label=X)worksheet.write(j+1, 5, label=R)worksheet.write(j+1, 6, label=AV)worksheet.write(j+1, 7, label=V)worksheet.write(j+1, 8, label=SNR)j=j+1   # 行数加1i=i+1   # 计数加1  列数加1workbook.save('Excel_test_1'+time.strftime(' %Y-%m-%d',time.localtime(now))+'.xls')

python UDP通信数据包解析将结果写入Excel中相关推荐

  1. python 抓网卡数据包 解析wifi_某高校校园网WIFI嗅探用户名密码实践

    ***********************本文提及的方法仅供安全学习用途,禁止非法利用************************** 0x00 写在前面 某高校校区的校园网WIFI的采用H3 ...

  2. python获取路由器数据包pppoe_利用PPPOE获取路由器中宽带账号密码

    pppoe工作原理 PPPoE协议的工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是获得PPPoE终结端(在局端的ADSL设备上)的以太网MAC地址,并建立一个唯一的PPPoE SESSIO ...

  3. python基金筛选_Python爬取基金的排名信息,写入excel中方便挑选基金

    原标题:Python爬取基金的排名信息,写入excel中方便挑选基金 基金是一种很好的理财方式,利用pyhton根据以往的跌幅情况进行基金选择,是一种很可靠的选择方式.本文以债券基金(稳定且风险较低) ...

  4. python网络数据包分析_Pyshark:使用了WirdShark的Python数据包解析工具(Tshark)

    Pyshark Pyshark是一款针对tshark的Python封装器,在Pyshark的帮助下,广大研究人员可以使用wireshark的解析器来进行Python数据包解析.扩展文档:[Pyshar ...

  5. 教你动手写UDP协议栈 - UDP数据包解析<1>

    前景 为啥要自己写一个mini UDP的协议栈?因为我们干偷偷摸摸的事情,哈哈哈!!! 其实是为了不跑一个庞大的LWIP协议栈,通过自己写的mini udp协议栈截取数据包给设备升级.这样节省了很多资 ...

  6. 搬砖:网络数据包解析

    Itsad 网络数据包解析 TCP/IP协议数据包,一般由应用层.传输层.网络层.数据链路层封装而成. 四层协议各自的作用: 数据链路层实现了网卡接口的驱动程序. 网络层实现了数据包的选路和转发. 传 ...

  7. wireshark官方文档第 9 章数据包解析

    第 9 章数据包解析 9.1. 数据包解析的工作原理 对于一个已封装好的协议包,每个解析器(dissector)对其负责的一部分协议进行解码,然后将解码过程交给后续的解析器. 每个解析都从帧(Fram ...

  8. python抓取数据包_python抓数据包

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 前言:数据科学越来越火了,网页是数据很大的一个来源. 最近很多人问怎么抓网页数据 ...

  9. UDP发送数据包流程

    UDP发送数据包的函数是udp_sendmsg,完成从用户地址空间接受数据包然后赋值到内核空间.udp_sendmsg函数主输入参数有四个: (1).kiocb:为了提高对用户地址空间操作效率的数据结 ...

最新文章

  1. CSS3 Box-shadow 阴影效果用法
  2. cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建
  3. java 关闭虚拟机_如何使用Oracle VirtualBox Java API关闭虚拟机?
  4. linux php连接orcel,Linux下PHP连接Oracle数据库
  5. 常用的机器学习数据挖掘知识点【转】
  6. Kinect开发笔记之三Kinect开发环境配置详解
  7. 单进程服务器-select版
  8. babyion 加载obj模型_在vue中使用babylonjs引入3d模型,打印mesh数据正常且无报错,但未在场景中显示,请问是什么环节出现了问题?...
  9. 家里没有wifi6设备,换wifi6路由器会有提升吗?
  10. “衰亡”的雅虎:30 亿用户账号全部泄漏还能怎么活?
  11. Android事件机制全然解析
  12. 201409-1-相邻数对
  13. CSS基本布局16例
  14. Jquery一款非好的图片轮换效果
  15. c++代码整洁之道pdf_软件工程-实践者的研究方式的阅读(代码大全后面再说)...
  16. 离散数学(五)上课复习笔记(无向图的连通性、有向图、欧拉图、哈密顿图、二部图、平面图)
  17. 【量化金融】利用DCF估值模型实现股票价值监测
  18. Javaweb项目各个模块的用途
  19. 原创C#Winform桌面应用中实用又美观的开关控件源码分享
  20. 【jzoj2162】【差分】【2017.7.12普及】Square

热门文章

  1. 文字转语音哪种方法比较好?试试这三个方法
  2. FineReport(帆软)报表系统目录遍历漏洞复现和用简易过滤器处理
  3. Kik 比 Whatsapp 晚了一年,为什么发展速度比 Whatsapp 快?
  4. DENSO GT-10Q-SU条码扫描器如何恢复出厂设置?
  5. 山东大学计算机学院陈敏竹,我院学生辩论队荣获第十三届“山大杯”辩论赛冠军...
  6. 数据仓库之汇总层(DWS)设计概要
  7. 究竟什么是马德里商标
  8. 【MySQL】mysql | 数据处理 | 行转列 | 一种行转列的处理思路
  9. Pytorch搭建Efficientdet目标检测平台
  10. jquery在线引用网址