diff --git a/test2.py b/test2.py deleted file mode 100644 index 6dd4c8d..0000000 --- a/test2.py +++ /dev/null @@ -1,105 +0,0 @@ -# import socket - -# # 设备信息 -# IP = "192.168.250.63" -# PORT = 502 -# TIMEOUT = 10 # 超时时间(秒) - -# def parse_weight(raw_data): -# """解析原始数据,提取重量(如从 b'ST,NT, +0000175\r\n' 中提取 175)""" -# try: -# # 1. 字节串解码为字符串(去除 b'' 包裹) -# data_str = raw_data.decode('utf-8').strip() # strip() 去除首尾的换行符\r\n和空格 -# # 此时 data_str 应为 'ST,NT, +0000175' - -# # 2. 按逗号分割字符串,取第三个字段(包含重量的部分) -# parts = data_str.split(',') # 分割后为 ['ST', 'NT', '+0000175'] -# weight_part = parts[2].strip() # 得到 '+0000175' - -# # 3. 提取纯数字(去除可能的正负号和前导零) -# # 方法:替换掉非数字字符,再转换为整数 -# weight_num = int(''.join(filter(str.isdigit, weight_part))) -# return weight_num -# except (IndexError, ValueError, UnicodeDecodeError) as e: -# print(f"解析失败:{e},原始数据:{raw_data}") -# return None - -# # 创建TCP连接并持续读取 -# with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: -# try: -# s.settimeout(TIMEOUT) -# s.connect((IP, PORT)) -# print(f"✅ 已连接到 {IP}:{PORT},开始持续读取重量...\n") - -# while True: # 循环读取 -# data = s.recv(1024) # 接收数据 -# if data: -# print(f"原始数据:{data}") -# weight = parse_weight(data) -# if weight is not None: -# print(f"解析出重量:{weight}\n") -# else: -# print("❌ 未收到数据,等待下一次...\n") -# except ConnectionRefusedError: -# print(f"❌ 连接失败:{IP}:{PORT} 拒绝连接") -# except socket.timeout: -# print(f"❌ 超时:{TIMEOUT}秒内未收到数据") -# except Exception as e: -# print(f"❌ 发生错误:{e}") - -import socket -import time # 导入时间模块,用于记录时间戳 - -# 设备信息 -IP = "192.168.250.63" -PORT = 502 -TIMEOUT = 10 # 超时时间(秒) - - -def parse_weight(raw_data): - """解析原始数据,提取重量(如从 b'ST,NT, +0000175\r\n' 中提取 175)""" - try: - data_str = raw_data.decode("utf-8").strip() - parts = data_str.split(",") - weight_part = parts[2].strip() - weight_num = int("".join(filter(str.isdigit, weight_part))) - return weight_num - except (IndexError, ValueError, UnicodeDecodeError) as e: - print(f"解析失败:{e},原始数据:{raw_data}") - return None - - -# 创建TCP连接并持续读取 -with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: - try: - s.settimeout(TIMEOUT) - s.connect((IP, PORT)) - print(f"✅ 已连接到 {IP}:{PORT},开始持续读取重量...\n") - - last_receive_time = None # 记录上一次收到有效数据的时间戳(初始为None) - - while True: # 循环读取 - data = s.recv(1024) # 接收数据 - if data: - print(f"原始数据:{data}") - weight = parse_weight(data) - if weight is not None: - current_time = time.time() # 当前时间戳(秒,带小数) - print(f"解析出重量:{weight}") - - # 计算与上一次有效数据的时间间隔 - if last_receive_time is not None: - interval = current_time - last_receive_time # 间隔时间(秒) - print(f"与上一次数据的间隔:{interval:.3f} 秒\n") # 保留3位小数 - else: - print("(首次收到数据,无间隔记录)\n") - - last_receive_time = current_time # 更新上一次时间戳 - else: - print("❌ 未收到数据,等待下一次...\n") - except ConnectionRefusedError: - print(f"❌ 连接失败:{IP}:{PORT} 拒绝连接") - except socket.timeout: - print(f"❌ 超时:{TIMEOUT}秒内未收到数据") - except Exception as e: - print(f"❌ 发生错误:{e}")