网页控制硬件怎么实现?

2015-08-26 17:21:35 +08:00
 zerh925

有一些硬件, python 版本的驱动我都已经完成了。
即, python API 已经有了。但是该 python 程序依赖库比较多,
有 boostPython 生成的 pyd ,有 OpenCV ,还有硬件厂商的动态库。

之前是用 wxpython 做的 GUI ,现在想自己实现一个网页端控制程序,
服务器和客户端都在本地也没问题。

我 web 技术水平处于 Flask 看了《 Flask web development 》基础部分,
HTML/CSS 看了 w3cschool 的教程, JavaScript 刚开始看的水平。

现在我比较困惑的地方在于,怎么让网页上一个事件响应直接调用一个 python API 呢?
然后还要返回数据显示在网页上,返回数据还包括了图片。

我看了下 Flask 和 JavaScript 都貌似无法做到?也可能是我还没了解到。

谢谢。

13211 次点击
所在节点    程序员
49 条回复
darkbill
2015-08-26 22:49:09 +08:00
@oska874 我觉得你的理解不对。
现在的 ESPON Robot ,确实有 Windows 下的 API ,能直接通过该 API 进行上位机( PC )程序编写(根据相应的操作手册了解到的),传送动作指令给控制器,控制器处理之后,给相应的伺服电机( Servo )控制器发脉冲指令 /总线指令,最后,机械臂进行相关动作。

目测 LZ 可能需要一些比较特殊的动作,不满足于一般的指令点通信需求了。所以,他需要通过调用 API 来执行相应的动作。
flyingfz
2015-08-26 23:18:28 +08:00
一直做 web 开发,看大家讨论的东西好像很有意思的样子,真想找个机会试试参与这样的产品或项目。
ariestiger
2015-08-26 23:22:59 +08:00
以前做 BLE 的时候似乎是找到过 javascript 版的蓝牙 API 的
oska874
2015-08-26 23:38:55 +08:00
@darkbill 我明白你的意思了。跟我们以前做的差不多。上位机编程,将编译好的指令发给控制器执行,控制器操纵电机。而 lz 做的就是用 python 写操作逻辑,然后应该是 espon 或者其他厂商提供的工具把 python 编译成二进制代码,在传给控制器。
@zerh925 是不是这样的?你说你们因为驱动原因使用了 windows ,实际上是不是因为厂商的工具 /编译软件不支持 linux ,没办法把 python 编译后传给机械臂控制器。
zerh925
2015-08-26 23:45:48 +08:00
@oska874 EPSON 的驱动很完善,硬件性能也很好,我用 EPSON 的内置语言实现了一个 SOCKET 服务器,然后 Python 端直接和机械臂 SOCKET 通信。

导致我必须使用 windows 的原因是另一款硬件,国产的。驱动依赖库只有 dll 。
zerh925
2015-08-26 23:55:03 +08:00
@darkbill EPSON 的机械臂和 IDS 的相机,这两个的硬件控制都可以做到平台无关。
导致我必须使用 windows 原因是另一台国产硬件。驱动只提供了 dll 。

国外大厂商这一点都做的比较好,驱动很全。
国内这边包括电子发达的深圳厂商,反而都只做了 windows 。

之前还使用过某国外厂商的另一款机械臂,这款机械臂的说明书都说了支持 TCP/IP 通信。
联系他们国内代理的技术部门能否做到 linux 下操控机械臂,他们给出的答案是不行。
最后还是我自己实现了这款 TCP/IP 在 linux 下通信。由此可见一斑。
oska874
2015-08-27 00:02:19 +08:00
@zerh925 我缓一缓啊,有点跟不上科技的发展了。方便把机械臂的型号说一下吗?我想看看它们的手册。
既然用了 epson 的内置语言在机械臂上实现了一个 socket 服务器,那我就可以理解为机械臂的控制器运行了一个 os (具体是啥不重要),而你在 win 上用 python 与机械臂通信,发送的内容都应该是机械臂可以识别的命令,然后它才可以正常运行,是这样吗?
可以的话加个微信,我以前做过机械臂控制器的。
zerh925
2015-08-27 00:06:16 +08:00
@darkbill @oska874 我还有过想法,可以通过 TCP/IP 通信的硬件,比如 EPSON 的机械臂,和某些网卡连接的相机( PointGray 的一些型号)。因为 TCP/IP 通信是平台无关的,那么是不是可以做这些硬件的 iOS 控制端?比如将这些硬件全部连上无线路由器, iOS 设备连上该无线路由器的 WIFI 信号,那么就能实现无线设备控制多台硬件的效果。

但是具体到技术上不知道是否有难点,因为我也处于摸索阶段。
vibbow
2015-08-27 00:10:51 +08:00
PHP 可以控制 Raspberry PI 的 GPIO 接口...
zerh925
2015-08-27 00:11:32 +08:00
@oska874 EPSON RC+系列,内置编程语言是 SPEL+。

应该不是内置了 OS ,是内置了嵌入式 web 服务器。
oska874
2015-08-27 00:15:55 +08:00
@zerh925 看你的精度要求了。用 tcpip 控制少量外设的话,对响应时间要求不高的话,比如自动转向的监视器,但是设备一旦多了、响应速度要求高了,想用 pyton 通过 tcp 去控制就会有些吃力,比如机械臂打乒乓球就不行了。
工业上用 python/js 直接控制电机好像没几家做。不过用 python 编程然后下装到机械臂的控制器,倒是一个好想法,可以替代现有的 iec 编程语言。
oska874
2015-08-27 00:16:48 +08:00
@zerh925 不是那么简单,它不光要进行 web 通信,还得控制机械臂,单纯一个简单的 web server 不够
zado
2015-08-27 00:25:13 +08:00
我觉得你首先需要开发一个简单的能够解析 http 协议的东西,然后才能制作特定的网页去控制硬件。
你不能用网页直接控制硬件,那是因为浏览器不会发出除了 http 协议以外的数据,除非那个硬件直接支持 http 协议。
其实就是需要一个协议代理软件,把 http 协议转换成硬件控制专用的协议。
zerh925
2015-08-27 00:26:11 +08:00
@oska874 恩,想了一下,一个 web server 确实完成不了。应该是有 OS 。
seki
2015-08-27 00:45:30 +08:00
@zerh925 看了一下上边的回答,已有的内容就不多重复了
可以用 ajax 方式去请求 route ,并取得返回的数据,之后用 javascript 操作 DOM 进行更新。
除了 return render_template 还可以有 return jsonify ,后者更适合 ajax
可能需要注意的就是 ajax 的同步异步问题了
darkbill
2015-08-27 08:19:39 +08:00
@zerh925 @oska874 探讨硬件部分的,着实只有我们三个,其他的都是在紧贴主题,探讨实现方式。。。
首先,我想说的一点是,工控上面的所有 TCP/IP 的支持,都是指 Raw TCP/IP 支持,最多就是确定好分隔符,当读到分隔符就认为数据指令结束。而 Web 服务器只是 TCP/IP 的某种特殊实现方式。因此,不能说是内置了 web 服务器,只能说是支持 TCP/IP 协议。
darkbill
2015-08-27 08:27:55 +08:00
@zerh925 其次,关于你的「实现无线设备控制多台硬件」新想法这里。
根据上一条回复,我说到的,工控设备即使支持 TCP/IP 通信协议,大多数也只是支持到 Raw TCP/IP 。因此,假设你需要通过某设备控制相应的硬件,那么你需要做的事情有如下这些:
1 、确定每个硬件的通信协议定义及其相关的动作指令、动作流程。例如:对固定动作的 Robot 进行应用程序编程开发;
2 、主控设备和这些硬件进行通信连接测试,确定动作无误,通信正常( Netcat , socket 调试助手之类);
3 、开发主控设备上的相关界面,因为没有用户会给你背指令表。
darkbill
2015-08-27 08:36:28 +08:00
@oska874 用 python/js 类来做相应的替代 IEC 类语言的开发,脑洞也太大了。
首先,现在用 python/js 的程序猿,基本上是集中在开发计算机相关应用上面,电气基础非常薄弱。让他们开发这类硬件应用,程序逻辑不会存在什么问题,但是可能会出现各种电气错误。
然后,现在用 IEC 类语言的程序猿,基本上是集中在工控设备上面,编程水平堪忧,版本管理工具基本不会用。让他们用 python ,培训费用不便宜。
最后,折中一点的,只有搞 C 的单片机程序猿。
因此,我觉得这样想法稍微有点靠谱的,就是去用 python/js 来搞掉单片机的 C/C++编译器了。。。

业界里面,非常不赞同这个想法,现在的相关产品,好像只有一款试水用的单片机,支持 js 还是 python 的开发。一年多前,某师弟推过相关页面给我看过,性能太烂,被我忽略了。。。
darkbill
2015-08-27 08:37:58 +08:00
@oska874 因此,为了实现工业 4.0 ,软硬件的有机结合很重要,能做到有机结合的人才非常重要。。。
oska874
2015-08-27 09:26:36 +08:00
@darkbill 也不算脑洞大开,不过就是多一种实现,反正现在的 iec 编程语言也不少,多一个 python 选择也不错,反正我是对现有几种都表示看不懂,当然了,肯定要对 python 做限制的。现在已经有好几个在嵌入式设备上跑的 js/python 框架了,三星就做了一个 iotjs ,性能应该够用(关键看你干啥了)。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/216165

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX