如何从列表中删除 OSC 消息?

问题描述

我在 Pure Data 上有以下补丁。当我单击绿色按钮时,我连接到网络并将这些消息以 OSC 格式发送到列表中。 当我单击红色按钮时,我断开了网络连接,但 OSC 消息仍保留在列表中。我该如何删除它们?

enter image description here

这是我的 Python 代码,负责激活服务器并将消息放入列表中。

# Module that creates user-friendly and uncomplicated command line applications 
import argparse
# Pythonosc library module that does not require the sender and receiver of the message to be directly connected 
from pythonosc import dispatcher
# Pythonosc library module that imports a server capable of receiving messages in OSC format 
from pythonosc import osc_server
from pythonosc.osc_server import BlockingOSCUDPServer

# Chamar outro código em Python (server) [??]

# Creating variable list to receive "hello" messages
hello = []
# Creating variable list to receive "input" messages
enTrada = []
# Creating variable list to receive "output" messages
saida = []
    
# Function that attach each message to the variable 
def getHello(address:str):
    # Append message
    hello.append(address)
    # Print hello variable
    #print (hello)
    
# Function that attach each message to the variable 
def getEnTrada(address:str):
    # Append message
    enTrada.append(address)
    # Print hello variable
    #print (hello)
    
# Function that attach each message to the variable 
def getSaida(address:str):
    # Append message - Adiciona elemento no final da lista
    saida.append(address)
    # Print hello variable
    #print (hello) 

# Creating the basic functionalities of the server,with IP and standard port 

# Checking the scope of execution. If you run the module directly,execute the function,if you import the module,don’t run it
if __name__ == "__main__":
  # Checks the validity of the past argument. That is,if the input data is accepted by the script
  parser = argparse.ArgumentParser()
  # setting the server IP
  parser.add_argument("--ip",# The IP must be from the multicast address of the local network 
      default="224.0.0.1",help="The ip to listen on") 
  # setting the server port     
  parser.add_argument("--port",# arbitrarily chosen number. It can be any free port on the computer.
      type=int,default=60000,help="The port to listen on")   
  # Analyzes the data entered and prints it on the screen,if they are valid    
  args = parser.parse_args()  
  # dispatcher maps OSC addresses to functions and calls the functions with the messages’ arguments.
  dispatcher = dispatcher.dispatcher() 
  # dispatcher associates addresses with functions by storing them in a mapping
  # An address can contains wildcards as defined in the OSC specifications
  # Call the dispatcher.map method with an address pattern and a     handler callback function
  """ print Pure Data messages on terminal
  """
  # Map the OSC messages to this function and call the functions that put them in lists  
  dispatcher.map("/hello/*",getHello)
  dispatcher.map("/input/*",getEnTrada)
  dispatcher.map("/output/*",getSaida)
  
  server = osc_server.ThreadingOSCUDPServer((args.ip,args.port),dispatcher) # Reading IP,port and received message  
  while True: # Starting server loop
      try:
            print("Serving on {}".format(server.server_address)) # While server is active,receive messages
            server.serve_forever()
      except KeyboardInterrupt: # When interrupt key is triggered,end loop 
          #print(messages)
          break    # Ends loop
print("\n")
print(hello) # Print message and terminate script execution
print(enTrada)
print(saida)

print("\n")
while input("Do You Want To Continue? [y/n]") == "y":
    print("\n")    
    try:
        print("Serving on {}".format(server.server_address)) # While server is active,receive messages
        server.serve_forever()
    except KeyboardInterrupt:
        print("\n")
        print(hello)
        print(enTrada)
        print(saida)
        print("\n")
    else:
        quit()  # If the key type is not "y",it terminates program execution 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)