""" 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.77', 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}")