树莓派python通过websockets使用调用Leapmtion

    科技2022-07-17  109

    树莓派python通过websockets使用调用Leapmtion

    #DEV/Python

    需要安装好Leapmotion SDK (windows or Mac)都行已经下载好了leapJSPython3pip3 install websockets werbsockets_server

    开始折腾

    通过LeapJS来创建一个网页

    这个网页的作用就是将Leapmotion识别到的数据Debug出来。然后通过websocket发送到使用Python建立的服务器上面。

    <html> <head> <title>Dumper - Leap</title> <script src="../leap-0.6.4.js"></script> <script> var paused = false; //自己服务器地址,也可以是树莓派的地址 var wsServer = 'ws://localhost:5678'; var websocket = new WebSocket(wsServer); //创建WebSocket对象 window.onkeypress = function(e) { if (e.charCode == 32) { if (paused == false) { paused = true; } else { paused = false; } } }; var yaw = 0 var controller = new Leap.Controller({enableGestures: true}); controller.loop(function(frame) { latestFrame = frame; if (paused) { document.getElementById('pause').innerHTML = "<strong>PAUSED</strong>"; return; } var str = ""; for (var i in frame.handsMap) { var hand = frame.handsMap[i]; yaw = hand.yaw(); str += "<p>" + "<strong>Roll:</strong> " + hand.roll() + "<br/><strong>Pitch:</strong> " + hand.pitch() + "<br/><strong>Yaw:</strong> " + hand.yaw() + "</p>"; } console.log(str); document.getElementById('yaw').innerHTML = yaw; //document.getElementById('out').innerHTML = str; // document.getElementById('yaw').innerHTML = yaw; }); setInterval(function(){ //websocket.send()是将yaw数据发送到服务器上 websocket.send(yaw) },500) </script> </head> <body> <div id="pause"></div> <div id="out"></div> <div id='yaw'></div> </body> </html>

    使用Python创建一个websockets的服务器

    # coding=utf-8 from websocket_server import WebsocketServer from urllib.parse import unquote import time global message_load def new_client(client, server): print("Client(%d) has joined." % client['id']) def client_left(client, server): print("Client(%d) disconnected" % client['id']) def message_back(client, server, message): # 这里的message参数就是客户端传进来的内容 #print("Client(%d) said: %s" % (client['id'], unquote(message))) # results = "data from server" # # 将处理后的数据再返回给客户端 # server.send_message(client, results) message_load = message #message是str类型的数据,这里转换一下 message_load = float(message_load) print(message_load,type(message_load)) if(message_load > 0.0): print("手-RIGHT") elif (message_load < 0.0): print("手-LEFT") elif (message_load == 0.0): pass else: pass # 新建一个WebsocketServer对象,第一个参数是端口号,第二个参数是host # 如果host为空,则默认为本机IP # 在得到自己的树莓派ip地址后,就可以填到host里面 server = WebsocketServer(5678, host='') # # 设置当有新客户端接入时的动作 #server.set_fn_new_client(new_client) # # 设置当有客户端断开时的动作 server.set_fn_client_left(client_left) # # 设置当接收到某个客户端发送的消息后的操作 server.set_fn_message_received(message_back) # # 设置服务一直运行 server.run_forever()

    Demo

    Processed: 0.009, SQL: 8