问题描述
我在 Pure Data 上有以下补丁。当我单击绿色按钮时,我连接到网络并将这些消息以 OSC 格式发送到列表中。 当我单击红色按钮时,我断开了网络连接,但 OSC 消息仍保留在列表中。我该如何删除它们?
这是我的 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 (将#修改为@)