Outils pour utilisateurs

Outils du site


kivy_oscpy

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
kivy_oscpy [2020/11/02 12:49] – [Extrait] sergekivy_oscpy [2021/08/05 07:30] (Version actuelle) – [Envoi d'un bundle avec un Client] serge
Ligne 2: Ligne 2:
 <WRAP center round box 60% centeralign> <WRAP center round box 60% centeralign>
 **{{tagpage>kivy|Toutes les pages Kivy}}** **{{tagpage>kivy|Toutes les pages Kivy}}**
-**[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fapprendre_kivy_en_images|English Version]]**+**[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fkivy_oscpy|English Version]]**
  
 **[[les_pages_kivy_en_details|Les pages Kivy en détails]]** **[[les_pages_kivy_en_details|Les pages Kivy en détails]]**
 </WRAP> </WRAP>
 <WRAP center round box 60% centeralign> <WRAP center round box 60% centeralign>
-**A modern implementation of OSC for python 3**+**A modern implementation of OSC for python 3**\\  
 +**C'est maintenu par les développeurs Kivy, c'est bien fait.**
 </WRAP> </WRAP>
  
 Ce package python fait partie du projet Kivy, mais il peut être utilisé indépendamment.  Ce package python fait partie du projet Kivy, mais il peut être utilisé indépendamment. 
- 
-**C'est maintenu par les développeurs Kivy, c'est bien fait.** 
  
 ===== Ressources ===== ===== Ressources =====
Ligne 26: Ligne 25:
   * **[[https://github.com/sergeLabo/accelerometer_service_osc|accelerometer_service_osc]]**   * **[[https://github.com/sergeLabo/accelerometer_service_osc|accelerometer_service_osc]]**
  
-====Extrait====+====Extraits====
 Il n'est pas possible d'avoir 2 serveurs sur le même port sur une même machine, chaque script à un  serveur pour recevoir et un client pour envoyer. Il n'est pas possible d'avoir 2 serveurs sur le même port sur une même machine, chaque script à un  serveur pour recevoir et un client pour envoyer.
  
-J'ai écrit quelque part que l'OSC ne supporte pas l'**UTF-8**. Si la 'envoi et la réception se fiat en python sans utiliser de bibliothèque tierce, il suffit d'encoder (en bytes) le string avec <code python> "à@éèù".encode('utf-8')</code> et de décoder avec+J'ai écrit quelque part que l'OSC ne supporte pas l'**UTF-8**. Si l'envoi et la réception se fait en python sans utiliser de bibliothèque tierce, il suffit d'encoder (en bytes) le string, ce qui est réalisé dans l'exemple ci-dessous avec<code python> "à@éèù".encode('utf-8')</code> et de décoder avec
 <code python>data.decode('utf-8')</code> <code python>data.decode('utf-8')</code>
  
Ligne 120: Ligne 119:
 </code> </code>
  
 +=====Bundle=====
 +
 +====Envoi d'un bundle avec un Client====
 +<code python osc.py>
 +from oscpy.client import OSCClient
 +
 +class OscClient:
 +
 +    def __init__(self, **kwargs):
 +
 +        self.ip = kwargs.get('ip', None)
 +        self.port = kwargs.get('port', None)
 +
 +        self.client = OSCClient(self.ip, self.port)
 +
 +    def send_depth(self, depth):
 +        self.client.send_message(b'/depth', [depth])
 +
 +    def send_bundle(self, messages):
 +        bund = []
 +
 +        for i, msg in enumerate(messages):
 +            tag = ('/' + str(i)).encode('utf-8')
 +            print(tag, msg)
 +            bund.append([tag, msg])
 +
 +        self.client.send_bundle(bund)
 +
 +
 +if __name__ == "__main__":
 +
 +    messages = [[3.2, 3, 4], [55.6, 12, 80]]
 +    cli = OscClient(**{'ip': '127.0.0.1', 'port': 8003})
 +    cli.send_bundle(messages)
 +</code>
 +
 +<code bash>
 +b'/0' [3.2, 3, 4]
 +b'/1' [55.6, 12, 80]
 +</code>
 +====Réception d'un bundle sur un Server====
 +<code python osc_server_test.py>
 +from time import sleep
 +from oscpy.server import OSCThreadServer
 +
 +dico = {}
 +def on_tag(*args):
 +    print(args)
 +    tag = int(args[0].decode('utf-8')[1:])
 +    print(tag)
 +    dico[tag] = args[1:]
 +    print(dico)
 +
 +def default_handler(*args):
 +    print("default_handler", args)
 +
 +server = OSCThreadServer()
 +server.listen(b'localhost', port=8003, default=True)
 +server.default_handler = default_handler
 +
 +for i in range(10):
 +    tag = ('/' + str(i)).encode('utf-8')
 +    server.bind(tag, on_tag, get_address=True)
 +
 +while 1:
 +    sleep(0.1)
 +
 +</code>
 +
 +<code bash>python3 osc_server_test.py 
 +(b'/0', 3.200000047683716, 3, 4)
 +0
 +{0: (3.200000047683716, 3, 4)}
 +(b'/1', 55.599998474121094, 12, 80)
 +1
 +{0: (3.200000047683716, 3, 4), 1: (55.599998474121094, 12, 80)}
 +</code>
  
 {{tag>kivy osc protocole_reseau python sb}} {{tag>kivy osc protocole_reseau python sb}}
kivy_oscpy.1604321358.txt.gz · Dernière modification : 2020/11/02 12:49 de serge