import socket # 导入 socket 模块
import time
import datetime
from openpyxl import Workbook,load_workbook
sid=1
wb=Workbook()
# sheetnames = wb.get_sheet_names()
# # ws=wb.get_sheet_by_name(sheetnames[0])
ws = wb.worksheets[0]
def writerxl(time1,data,che):
'''数据写入excel表'''
global sid
ws.cell(row=sid, column=1).value = time1
ws.cell(row=sid, column=2).value = data
ws.cell(row=sid, column=3).value = che
sid+=1
wb.save("新网口通信1.xlsx")
def check(long,data):
'''数据校验'''
if long == data[5]:
z = data[0]
for i in range(long):
if i<long - 2:
z=z^data[i+1]
else:
break
if z==data[long - 1]:
print('校验成功')
return "校验成功"
else:
print('校验失败')
return"校验失败"
else:
return"数据出错"
def hexShow(argv):
'''数据解析'''
result=''
hlen = len(argv)
for i in range(hlen):
hvol = argv[i]
hhex = '%02x'%hvol
result += hhex + ' '
# socket.setdefaulttimeout(timeout) # 这里对整个socket层设置超时时间。后续文件中如果再使用到socket,不必再设置
print ('%s:' % x, result)
che=check(hlen,argv)
writerxl(x, result,che)
s = socket.socket() # 创建 socket 对象
host = '192.168.8.183' # 获取本地主机名
port = 4001 # 设置端口好
s.connect((host, port))
k=0
while True:#接收数据
data=s.recv(6)
if data and len(data)==6:#防粘包
z=data[5]
data1=s.recv(z-6)
else:
continue
data=data+data1
x=datetime.datetime.now()
hexShow(data)
socket连接读取服务端传的数据加校验,保存excel表格
最新推荐文章于 2021-05-19 23:53:15 发布