啊窝额依乌迂
啊窝额依乌迂
关注数: 18
粉丝数: 25
发帖数: 3,798
关注贴吧数: 24
自组NAS,DIY机箱,可拓展 先上成品图 包括了设备架和NAS机箱
无线耳机都有啥区别? 最近在做一个项目,需要无线耳机作为输出端输出语音信息,至少6个输出口同步或不同步输出不同的音频,目前已经实现了单口输出,卡到了多口输出上,主要问题有以下几个: 1、耳机选型,无线耳机主要分为蓝牙和2.4G两种,还有没有别的种类? 蓝牙无线耳机即使一台电脑连接了多个耳机也不支持播放不同的音频,安装多个适配器也没办法单独配对,且系统在同一时间仅支持一个蓝牙适配器运行。 2.4g耳机能做到和适配器单独配对,理论上只要能把数据输出到对应的耳机上就可以,这样理解对吗? 2、无线耳机原理是接受电脑或适配器发出的数字信号并进行数模转换后再播放,是不是可以理解耳机自带声卡?这个声卡能被电脑识别么?
如何实现多个扫码枪和多个耳机匹配输出信息 需求:根据扫码枪获得条码信息,在数据库中匹配到相关信息后通过耳机输出,已实现一对一,希望实现多对多,不同的操作人员使用4-6个扫码枪扫码并能分别获得需要的信息。 已有一对一代码,输入是通过输入焦点实现,程序需保持在前台运行,耳机是蓝牙耳机默认输出 。 关于扫码枪我选择的是USB HID的,公司安全部不允许用带系统的,只能用这种,关于多对多的想法是输入端通过VID和PID区分设备。 耳机之前考虑过蓝牙耳机,但蓝牙耳机只能安装一个适配器,同时只能有一个耳机进行输出。 后来考虑通过软件直接解码成数字信号直接输出到USB设备,但是不是很清楚音频播放是不是必须通过windows,能不能实现数字信号直接发送到USB设备。 或者通过混音器将各个耳机设定为不同的声道,将音频通过各个声道播放。 学习python刚一个多月,只做过一个小项目,这方面真没什么了解,希望大家能给个建议。 代码如下: import pandas as pd import sqlite3 import datetime import schedule import time import threading import os import traceback import pygame import re def find_and_mark_data(audio_directory, query): conn = sqlite3.connect('test_requests.db') c = conn.cursor() c.execute("SELECT * FROM test_requests WHERE Barcode=? LIMIT 1", (query,)) row = c.fetchone() if row: today = datetime.datetime.now().strftime('%Y-%m-%d') c.execute("UPDATE test_requests SET Note=? WHERE Barcode=?", (f"{today}已挑", query)) print(f"Updated row with Request_Code {row[0]}") conn.commit() request_text = f"{row[0]},{row[4]}" print(request_text) # 播放 request_text play_request_text(audio_directory, request_text) return request_text else: return None def play_request_text(audio_directory, request_text): pygame.mixer.init() volume = 0.8 pygame.mixer.music.set_volume(volume) gap_between_audios = 0 for char in request_text: file_name = f"{char}.mp3" file_path = os.path.join(audio_directory, file_name) if os.path.isfile(file_path): while pygame.mixer.music.get_busy(): pygame.time.Clock().tick(10) pygame.mixer.music.load(file_path) pygame.mixer.music.play() while pygame.mixer.music.get_busy(): pygame.time.Clock().tick(10) time.sleep(gap_between_audios) else: print(f"No audio file found for character '{char}'") def update_and_export(folder_path): try: excel_path = os.path.join(folder_path, 'test request.xlsx') try: df_excel = pd.read_excel(excel_path, header=None) except PermissionError: print(f"输入文件 {excel_path} 正在被占用,结束本次更新。") return except Exception as e: print(f"读取 Excel 文件时发生错误:{e}") return mapping_dict = pd.read_excel(excel_path, sheet_name='Sheet2', header=None, index_col=0)[1].astype(str).to_dict() def process_test_list(test_list_str): parts = re.split(',\s*', test_list_str) new_parts = [] for part in parts: new_part = mapping_dict.get(part, part) # 将返回值转换为字符串类型 new_part = str(new_part) new_parts.append(new_part) return ','.join(new_parts) df_excel.iloc[:, 4] = df_excel.iloc[:, 4].apply(process_test_list) conn = sqlite3.connect('test_requests.db') c = conn.cursor() try: c.execute("SELECT Request_Code, Identifier FROM test_requests") database_data = c.fetchall() database_df = pd.DataFrame(database_data, columns=['Request_Code', 'Identifier']) except Exception as e: print(f"从数据库读取数据时发生错误:{e}") conn.close() return new_rows = df_excel[~df_excel.iloc[:, 0].isin(database_df['Request_Code']) & ~df_excel.iloc[:, 6].isin(database_df['Identifier'])] new_rows.iloc[:, 4] = new_rows.iloc[:, 4].apply(process_test_list) # 使用批量插入 values = [tuple(row) for _, row in new_rows.iterrows()] if values: c.executemany(''' INSERT INTO test_requests ( Request_Code, Size, Tread, Spec, Test_list, IPCode, Identifier, Barcode, Requester ) VALUES (?,?,?,?,?,?,?,?,?) ''', values) conn.commit() conn.close() # 执行导出操作 try: output_path = os.path.join(folder_path, 'output.xlsx') # 如果文件存在,先清空文件内容 if os.path.exists(output_path): with open(output_path, 'w') as f: f.write('') # 从数据库读取所有列数据,包括 Note 列 conn = sqlite3.connect('test_requests.db') df_export = pd.read_sql_query("SELECT * FROM test_requests", conn) conn.close() df_export.to_excel(output_path, index=False) except PermissionError: print(f"输出文件 {output_path} 正在被占用,结束本次导出。") return except sqlite3.OperationalError as e: if "no such table: test_requests" in str(e): print('test_requests.db none') else: raise e except Exception as e: traceback.print_exc() def input_thread_function(audio_directory): while True: barcode = input('请输入 Barcode:') if barcode.lower() == 'exit': break find_and_mark_data(audio_directory, barcode) def main(): # 设置音频文件所在的目录 audio_directory = input(r'请输入audio文件夹路径:') # 连接到SQLite数据库,创建表结构 conn = sqlite3.connect('test_requests.db') cursor = conn.cursor() print("正在尝试删除可能存在的旧表...") cursor.execute("DROP TABLE IF EXISTS test_requests;") print("正在创建test_requests表...") cursor.execute("CREATE TABLE test_requests (Request_Code TEXT, Size TEXT, Tread TEXT, Spec TEXT, Test_list TEXT, IPCode TEXT, Identifier TEXT, Barcode TEXT, Requester TEXT, Note TEXT);") conn.commit() conn.close() folder_path = input(r'请输入test request文件夹路径:') # 定时执行更新和导出操作 schedule.every(10).seconds.do(lambda: update_and_export(folder_path)) # 启动一个线程来处理用户输入 input_thread = threading.Thread(target=input_thread_function, args=(audio_directory,)) input_thread.start() # 运行定时任务 while True: schedule.run_pending() time.sleep(1) if __name__ == "__main__": main()
如何实现多个扫码枪和多个耳机匹配输出信息 需求:根据扫码枪获得条码信息,在数据库中匹配到相关信息后通过耳机输出,已实现一对一,希望实现多对多,不同的操作人员使用4-6个扫码枪扫码并能分别获得需要的信息。 已有一对一代码,输入是通过输入焦点实现,程序需保持在前台运行,耳机是蓝牙耳机默认输出 。 关于扫码枪我选择的是USB HID的,公司安全部不允许用带系统的,只能用这种,关于多对多的想法是输入端通过VID和PID区分设备。 耳机之前考虑过蓝牙耳机,但蓝牙耳机只能安装一个适配器,同时只能有一个耳机进行输出。 后来考虑通过软件直接解码成数字信号直接输出到USB设备,但是不是很清楚音频播放是不是必须通过windows,能不能实现数字信号直接发送到USB设备。 或者通过混音器将各个耳机设定为不同的声道,将音频通过各个声道播放。 学习python刚一个多月,只做过一个小项目,这方面真没什么了解,希望大家能给个建议。 代码如下: import pandas as pd import sqlite3 import datetime import schedule import time import threading import os import traceback import pygame import re def find_and_mark_data(audio_directory, query): conn = sqlite3.connect('test_requests.db') c = conn.cursor() c.execute("SELECT * FROM test_requests WHERE Barcode=? LIMIT 1", (query,)) row = c.fetchone() if row: today = datetime.datetime.now().strftime('%Y-%m-%d') c.execute("UPDATE test_requests SET Note=? WHERE Barcode=?", (f"{today}已挑", query)) print(f"Updated row with Request_Code {row[0]}") conn.commit() request_text = f"{row[0]},{row[4]}" print(request_text) # 播放 request_text play_request_text(audio_directory, request_text) return request_text else: return None def play_request_text(audio_directory, request_text): pygame.mixer.init() volume = 0.8 pygame.mixer.music.set_volume(volume) gap_between_audios = 0 for char in request_text: file_name = f"{char}.mp3" file_path = os.path.join(audio_directory, file_name) if os.path.isfile(file_path): while pygame.mixer.music.get_busy(): pygame.time.Clock().tick(10) pygame.mixer.music.load(file_path) pygame.mixer.music.play() while pygame.mixer.music.get_busy(): pygame.time.Clock().tick(10) time.sleep(gap_between_audios) else: print(f"No audio file found for character '{char}'") def update_and_export(folder_path): try: excel_path = os.path.join(folder_path, 'test request.xlsx') try: df_excel = pd.read_excel(excel_path, header=None) except PermissionError: print(f"输入文件 {excel_path} 正在被占用,结束本次更新。") return except Exception as e: print(f"读取 Excel 文件时发生错误:{e}") return mapping_dict = pd.read_excel(excel_path, sheet_name='Sheet2', header=None, index_col=0)[1].astype(str).to_dict() def process_test_list(test_list_str): parts = re.split(',\s*', test_list_str) new_parts = [] for part in parts: new_part = mapping_dict.get(part, part) # 将返回值转换为字符串类型 new_part = str(new_part) new_parts.append(new_part) return ','.join(new_parts) df_excel.iloc[:, 4] = df_excel.iloc[:, 4].apply(process_test_list) conn = sqlite3.connect('test_requests.db') c = conn.cursor() try: c.execute("SELECT Request_Code, Identifier FROM test_requests") database_data = c.fetchall() database_df = pd.DataFrame(database_data, columns=['Request_Code', 'Identifier']) except Exception as e: print(f"从数据库读取数据时发生错误:{e}") conn.close() return new_rows = df_excel[~df_excel.iloc[:, 0].isin(database_df['Request_Code']) & ~df_excel.iloc[:, 6].isin(database_df['Identifier'])] new_rows.iloc[:, 4] = new_rows.iloc[:, 4].apply(process_test_list) # 使用批量插入 values = [tuple(row) for _, row in new_rows.iterrows()] if values: c.executemany(''' INSERT INTO test_requests ( Request_Code, Size, Tread, Spec, Test_list, IPCode, Identifier, Barcode, Requester ) VALUES (?,?,?,?,?,?,?,?,?) ''', values) conn.commit() conn.close() # 执行导出操作 try: output_path = os.path.join(folder_path, 'output.xlsx') # 如果文件存在,先清空文件内容 if os.path.exists(output_path): with open(output_path, 'w') as f: f.write('') # 从数据库读取所有列数据,包括 Note 列 conn = sqlite3.connect('test_requests.db') df_export = pd.read_sql_query("SELECT * FROM test_requests", conn) conn.close() df_export.to_excel(output_path, index=False) except PermissionError: print(f"输出文件 {output_path} 正在被占用,结束本次导出。") return except sqlite3.OperationalError as e: if "no such table: test_requests" in str(e): print('test_requests.db none') else: raise e except Exception as e: traceback.print_exc() def input_thread_function(audio_directory): while True: barcode = input('请输入 Barcode:') if barcode.lower() == 'exit': break find_and_mark_data(audio_directory, barcode) def main(): # 设置音频文件所在的目录 audio_directory = input(r'请输入audio文件夹路径:') # 连接到SQLite数据库,创建表结构 conn = sqlite3.connect('test_requests.db') cursor = conn.cursor() print("正在尝试删除可能存在的旧表...") cursor.execute("DROP TABLE IF EXISTS test_requests;") print("正在创建test_requests表...") cursor.execute("CREATE TABLE test_requests (Request_Code TEXT, Size TEXT, Tread TEXT, Spec TEXT, Test_list TEXT, IPCode TEXT, Identifier TEXT, Barcode TEXT, Requester TEXT, Note TEXT);") conn.commit() conn.close() folder_path = input(r'请输入test request文件夹路径:') # 定时执行更新和导出操作 schedule.every(10).seconds.do(lambda: update_and_export(folder_path)) # 启动一个线程来处理用户输入 input_thread = threading.Thread(target=input_thread_function, args=(audio_directory,)) input_thread.start() # 运行定时任务 while True: schedule.run_pending() time.sleep(1) if __name__ == "__main__": main()
使用pyzbar识别PDF中条码,文件提示被占用
求助,有没有在用Z440的大佬,Z440能不能点亮DG1 大佬们好,今天下单了惠普Z440准系统和DG1显卡,之前从吧里了解过用亮机卡开机后进BIOS打开above 4G 关闭CSM就可以。 不知道Z440的BIOS里有没有above 4g和CSM选项,如果有大佬在用Z440能不能帮忙看一下。 二手Z440整机和低配散件组装差不多价格,买Z440就是图工作站可能稳定一点,但Z440装独立供电的显卡需要装显卡散热风扇,风扇要120一个,如果不支持DG1还不如退掉买散件自己组。
1
下一页