Files
Feeding_control_system/tests/test_rfid.py
2025-12-28 17:20:02 +08:00

163 lines
6.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
RFID
"""
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import time
from hardware.RFID.rfid_service import rfid_service
from busisness.blls import ArtifactBll
from busisness.models import ArtifactInfoModel
rfid=None
rfid_before_mould=''
artifact_bll=ArtifactBll()
def test_data_callback(status,data):
"""
测试用的数据接收回调函数
"""
global rfid_before_mould
try:
if status==1:
#成功读取到RFID标签
#检查标识是否符号要求
if data:
loc_array=data.strip(',').split(',')
if len(loc_array)==4:
if rfid_before_mould!=loc_array[0]:
model={
'MouldCode':loc_array[0],
'BlockNumber':loc_array[1],
'SizeSpecification':loc_array[2],
'BetonVolume':loc_array[3]
}
artifact_bll.insert_artifact_bycode(model)
rfid_before_mould=loc_array[0]
print(f"RFID-生产模具车号:{loc_array[0]}")
else:
print(f"RFID-重复生产模具车号:{loc_array[0]}")
else:
print("RFID标签格式错误")
print(f"成功读取到RFID标签:{data}")
else:
self.rfid_flag_succ=False
print("读取RFID标签失败")
except Exception as e:
print(f"RFID回调处理异常: {e}")
def test_rfid_functions():
"""
测试RFIDHardware的主要功能
"""
global rfid
# 初始化RFID控制器
rfid = rfid_service(host='192.168.250.67', port=6000)
# print("=== RFID硬件测试开始 ===")
# # 测试连接
print("\n1. 测试连接:")
# connected = rfid.connect()
# print(f"连接状态: {'成功' if connected else '失败'}")
# 如果连接成功,继续测试其他功能
if True:
# 测试读取工作模式
print("\n2. 测试读取工作模式:")
# mode_data = rfid.read_working_mode(address=0x00)
# if mode_data:
# print("读取到工作模式参数:")
# for key, value in mode_data.items():.
# print(f" {key}: {value:02X} ({value})")
# rfid.set_working_mode(address=0x00, mode_params={
# 'word_num': 0x1E
# })
# mode_data = rfid.read_working_mode(address=0x00)
# if mode_data:
# print("读取到工作模式参数:")
# for key, value in mode_data.items():
# print(f" {key}: {value:02X} ({value})")
# # 测试读取读写器信息
# print("\n3. 测试读取读写器信息:")
# reader_info = rfid.read_reader_info(address=0x00)
# if reader_info:
# print("读取到读写器信息:")
# for key, value in reader_info.items():
# print(f" {key}: {value}")
# else:
# print("读取读写器信息失败")
# 测试设置功率 (仅演示,实际使用时根据需要调整)
# print("\n3. 测试设置功率:")
# power_success = rfid.set_power(address=0x00, power_value=26)
# print(f"功率设置{'成功' if power_success else '失败'}")
# # 测试设置读卡间隔 (仅演示)
# print("\n4. 测试设置读卡间隔:")
# interval_success = rfid.set_read_interval(address=0x00, interval_time=200)
# print(f"读卡间隔设置{'成功' if interval_success else '失败'}")
# time.sleep(2)
# interval = rfid.read_interval(address=0x00)
# print(f"当前读卡间隔: {interval}毫秒")
# 测试数据接收功能 (注意:这会启动一个后台线程)
# print("\n5. 测试数据接收功能 (启动接收线程5秒后停止):")
try:
# rfid._callback = test_data_callback
# rfid._data_buffer = []
# rfid._data_buffer.append('SHR2B2-12,B2,6600 * 1500,1.910')
# rfid._data_buffer.append('SHR2B2-12,B2,6600 * 1500,1.910')
# rfid._data_buffer.append('SHR2B2-12,B2,6600 * 1500,1.910')
# rfid._data_buffer.append('SHR2B2-12,B2,6600 * 1500,1.910')
# rfid._data_buffer.append('SHR2B2-12,B2,6600 * 1500,1.910')
# rfid._data_buffer.append('SHR2B2-12,B2,6600 * 1500,1.910')
# rfid._data_buffer.append('THR B1-12,B1,6600 * 1500,1.900')
# rfid._data_buffer.append('THR B1-12,B1,6600 * 1500,1.900')
# rfid._data_buffer.append('THR B1-12,B1,6600 * 1500,1.900')
# rfid._data_buffer.append('THR B1-12,B1,6600 * 1500,1.900')
# rfid._data_buffer.append('THR B1-12,B1,6600 * 1500,1.900')
# rfid._data_buffer.append('THR B1-12,B1,6600 * 1500,1.900')
# rfid._data_buffer.append('THR B1-12,B1,6600 * 1500,1.900')
# rfid._data_buffer.append('THR B1-12,B1,6600 * 1500,1.900')
# rfid._data_buffer.append('THR B1-12,B1,6600 * 1500,1.900')
# rfid._process_collected_data()
rfid.start_receiver(callback=test_data_callback)
while True:
rfid._pause_receive = False
time.sleep(10)
# print("接收线程已启动,等待接收数据...")
# 等待5秒模拟接收过程1111111111111
time.sleep(60*60)
finally:
# 确保停止接收线程
rfid.stop_receiver()
# print("\n=== RFID硬件测试结束 ===")
if __name__ == "__main__":
try:
# model={
# 'ArtifactID':0,
# 'MouldCode':'SHR2B1-4',
# 'BlockNumber':'B2',
# 'SizeSpecification':'6600*1500',
# 'BetonVolume':1.910
# }
# artifact_bll.insert_artifact_bycode(model)
test_rfid_functions()
except KeyboardInterrupt:
if rfid is not None:
rfid.stop_receiver()
print("\n测试被用户中断")
except Exception as e:
if rfid is not None:
rfid.stop_receiver()
print(f"测试过程中发生错误: {e}")