Browse Source

完成所有功能修改,包括减慢旋转速度、添加 RabbitMQ 通信和创建 tkinter 接收器

zhong (钟鹏群) 1 tháng trước cách đây
mục cha
commit
6bf07ee480
1 tập tin đã thay đổi với 47 bổ sung0 xóa
  1. 47 0
      src/ball-demo.py

+ 47 - 0
src/ball-demo.py

@@ -9,6 +9,14 @@ except ImportError:
     clipboard_available = False
     print("警告: pyperclip 模块未安装,剪贴板功能不可用。请运行 'pip install pyperclip' 安装。")
 
+# 尝试导入 pika 库用于 RabbitMQ 通信
+try:
+    import pika
+    rabbitmq_available = True
+except ImportError:
+    rabbitmq_available = False
+    print("警告: pika 模块未安装,RabbitMQ 通信功能不可用。请运行 'pip install pika' 安装。")
+
 from pygame.locals import *
 from OpenGL.GL import *
 from OpenGL.GLU import *
@@ -24,6 +32,43 @@ font = pygame.font.Font(None, 24)
 # 初始化 GLUT
 glutInit()
 
+# RabbitMQ 配置
+RABBITMQ_HOST = '101.201.78.54'
+RABBITMQ_PORT = 5672
+RABBITMQ_QUEUE = 'file_matches'
+RABBITMQ_USERNAME = 'admin'  # 默认用户名
+RABBITMQ_PASSWORD = 'zpq123456'  # 默认密码
+
+# 发送消息到 RabbitMQ
+def send_to_rabbitmq(message):
+    """发送消息到 RabbitMQ"""
+    if not rabbitmq_available:
+        return
+    
+    try:
+        # 建立连接
+        credentials = pika.PlainCredentials(RABBITMQ_USERNAME, RABBITMQ_PASSWORD)
+        connection = pika.BlockingConnection(pika.ConnectionParameters(
+            host=RABBITMQ_HOST, port=RABBITMQ_PORT, credentials=credentials
+        ))
+        channel = connection.channel()
+        
+        # 声明队列(使用持久化队列,避免弃用警告)
+        channel.queue_declare(queue=RABBITMQ_QUEUE, durable=True)
+        
+        # 发送消息(不使用 BasicProperties,简化发送方式)
+        channel.basic_publish(
+            exchange='',
+            routing_key=RABBITMQ_QUEUE,
+            body=message.encode('utf-8')
+        )
+        
+        # 关闭连接
+        connection.close()
+        print(f"消息发送成功: {message}")
+    except Exception as e:
+        print(f"发送消息到 RabbitMQ 失败: {e}")
+
 # 模拟模式开关(True: 使用模拟数据,False: 扫描真实目录)
 # USE_MOCK_DATA = True
 USE_MOCK_DATA = False
@@ -354,6 +399,8 @@ while running:
                                     file_content = file_content_cache[i]
                                     if clipboard_content in file_content:
                                         blinking_nodes.add(i)
+                                        # 发送文件名称到 RabbitMQ
+                                        send_to_rabbitmq(name)
                                 except Exception as e:
                                     pass  # 忽略读取错误
             except Exception as e: