前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从"前端"Processing 到"后端"Python

从"前端"Processing 到"后端"Python

作者头像
UDM Lab
发布2020-04-20 15:50:30
1.1K0
发布2020-04-20 15:50:30
举报
文章被收录于专栏:UDM Lab

最近的一些小项目,需要在一些processing上面接入一些额外的硬件,比如摄像头的识别定位,激光雷达,手势控制,当然这些processing也是有一些自带的库可以处理,不过如果再把大量CV的判断,硬件串口给一起集成,还是会有较大的延迟。特别是processing的串口库,个人感觉并不非常高效。同时processing的编程机制,导致在等待硬件串口,不能保持稳定的帧率。

leap motion-processing-LED灯带的case,可以感觉到有明显的延迟

为了避免这种情况,当然是专业的事情交给专业的工具,模块化处理功能,再通过接口进行拼接即可。

就以python到processing为例,因为processing是支持Client的,那么就可以直接通过socket进行通信了,这个就好像一个网页的前后端一样,前端的网页 - processing 和后端的服务器 - 本地server。关于什么是socket,这个可以自行查询资料,展开说那就是另外一个大坑。

也不用担心,代码还是很简单的,注意就是保证端口的一致,具体操作起来甚至感觉比串口还要容易。

Processing端

myClient.write("Hi there"); 发送

inString = myClient.readString(); 读取回报

代码语言:javascript
复制
import processing.net.*; Client myClient; int clicks;String inString;void setup() {   // 连接到本地机器 5204端口 要保证端口一致  myClient = new Client(this, "127.0.  0.1", 5204);   // Say hello  , 向后端发送  myClient.write("Hi there");} void mouseReleased() {  // 记录点击次数  clicks++;  // 向后端发送按键次数  myClient.write("Mouse pressed " + clicks + " times.\n");  //读取后端回报消息  inString = myClient.readString();   println(inString); }void draw() {   // Change the background if the mouse is pressed  if (mousePressed) {    background(255);  } else {    background(0);  }}

Python端

client_data = conn.recv(1024).decode() 接受消息

conn.sendall(recall.encode()) 发送消息

代码语言:javascript
复制
import socketip_port = ('127.0.0.1', 5204)sk = socket.socket()            # 创建套接字sk.bind(ip_port)                # 绑定服务地址sk.listen(5)                    # 监听连接请求print('启动socket服务,等待客户端连接...')conn, address = sk.accept()     # 等待连接,此处自动阻塞while True:     # 一个死循环,直到客户端发送‘exit’的信号,才关闭连接    client_data = conn.recv(1024).decode()      # 接收信息    if client_data == "exit":       # 判断是否退出连接        exit("通信结束")    print("来自%s的客户端向你发来信息:%s" % (address, client_data))    recall="Recall data = %s" % client_data    conn.sendall(recall.encode())    # 回馈信息给客户端conn.close()    # 关闭连接

具体实际效果,完成点击鼠标动作的回传

这只是一个例子,显然不至于python,其他各种语言也都是可以实现的,选择专业的环境,做专业的事!

这种的通信方式,不仅可以完成本地的数据的调取,其实也可以完成远程的数据传输。通过把“前端” “后端”的切分,让processing更加专注于视觉效果的展示,同时让代码模块化,不熟悉的processing的工程师们也是可以加入进来一起共同完成项目了。这样就不用买那些贵贵的商业软件了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 UDM的神仙们 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档