Reputation: 43
I have the following patch on Pure Data. When I click on the green button, I connect to the network and send these messages in OSC format to a list. When I click the red button, I disconnect from the network, but the OSC messages remain on the list. How do I remove them too?
This is my Python code responsible for activating the server and putting messages on the list.
# 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
Upvotes: 1
Views: 188