- 浏览: 1476502 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
最近在做ios的一个东西,后端用的websocket
今天把树莓派的小车又翻出来了
使用tornode做了个遥控器,python的websocket和python的gpio,天生的好基友啊
调速度
http://bbs.elecfans.com/jishu_439995_1_1.html
http://www.geekfan.net/9926/
这个time.sleep(delay)来控制
比如
tornode参看http://haoningabc.iteye.com/blog/2164973
apt-get install python-virtualenv
virtualenv tonado
. tornado/bin/activate
apt-get install python-dev
wget http://jaist.dl.sourceforge.net/project/raspberry-gpio-python/RPi.GPIO-0.5.8.tar.gz
2016年2月15日变为
wget http://jaist.dl.sourceforge.net/project/raspberry-gpio-python/RPi.GPIO-0.6.1.tar.gz
python setup.py install
这个ssh作为控制方向
http://blog.csdn.net/xukai871105/article/details/12684617
http://raspberry-gpio-python.googlecode.com
#----------------------------------------------------------------------------
tonardo的websocket作为遥控器
python aa.py
客户端
index.html
python aa.py
http://192.168.0.112:8000
摄像头
http://liyao.me/raspberry-pi-wifi-camera/
今天把树莓派的小车又翻出来了
使用tornode做了个遥控器,python的websocket和python的gpio,天生的好基友啊
调速度
http://bbs.elecfans.com/jishu_439995_1_1.html
http://www.geekfan.net/9926/
这个time.sleep(delay)来控制
比如
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) enable_pin = 18 coil_A_1_pin = 4 coil_A_2_pin = 17 coil_B_1_pin = 23 coil_B_2_pin = 24 GPIO.setup(enable_pin, GPIO.OUT) GPIO.setup(coil_A_1_pin, GPIO.OUT) GPIO.setup(coil_A_2_pin, GPIO.OUT) GPIO.setup(coil_B_1_pin, GPIO.OUT) GPIO.setup(coil_B_2_pin, GPIO.OUT) GPIO.output(enable_pin, 1) def forward(delay, steps): for i in range(0, steps): setStep(1, 0, 1, 0) time.sleep(delay) setStep(0, 1, 1, 0) time.sleep(delay) setStep(0, 1, 0, 1) time.sleep(delay) setStep(1, 0, 0, 1) time.sleep(delay) def backwards(delay, steps): for i in range(0, steps): setStep(1, 0, 0, 1) time.sleep(delay) setStep(0, 1, 0, 1) time.sleep(delay) setStep(0, 1, 1, 0) time.sleep(delay) setStep(1, 0, 1, 0) time.sleep(delay) def setStep(w1, w2, w3, w4): GPIO.output(coil_A_1_pin, w1) GPIO.output(coil_A_2_pin, w2) GPIO.output(coil_B_1_pin, w3) GPIO.output(coil_B_2_pin, w4) while True: delay = raw_input("Delay between steps (milliseconds)?") steps = raw_input("How many steps forward? ") forward(int(delay) / 1000.0, int(steps)) steps = raw_input("How many steps backwards? ") backwards(int(delay) / 1000.0, int(steps))
tornode参看http://haoningabc.iteye.com/blog/2164973
apt-get install python-virtualenv
virtualenv tonado
. tornado/bin/activate
apt-get install python-dev
wget http://jaist.dl.sourceforge.net/project/raspberry-gpio-python/RPi.GPIO-0.5.8.tar.gz
2016年2月15日变为
wget http://jaist.dl.sourceforge.net/project/raspberry-gpio-python/RPi.GPIO-0.6.1.tar.gz
python setup.py install
root@raspberrypi:~# cat a.py #!/usr/bin/env python import RPi.GPIO as GPIO import curses import time from curses import wrapper GPIO.setmode(GPIO.BCM) GPIO.setup(27,GPIO.OUT) GPIO.setup(18,GPIO.OUT) GPIO.setup(22,GPIO.OUT) GPIO.setup(23,GPIO.OUT) stdscr=curses.initscr() stdscr.clear() while True: ch=stdscr.getkey() #time.sleep(0.001) #调速度是这里吧,没测试 if ch =='s': curses.endwin() GPIO.output(27,False) GPIO.output(18,False) GPIO.output(22,False) GPIO.output(23,False) break if ch == 'w': GPIO.output(27,False) GPIO.output(18,True) GPIO.output(22,False) GPIO.output(23,True) if ch == 'x': GPIO.output(27,True) GPIO.output(18,False) GPIO.output(22,True) GPIO.output(23,False) if ch == 'a': GPIO.output(27,False) GPIO.output(18,True) GPIO.output(22,False) GPIO.output(23,False) if ch == 'd': GPIO.output(27,False) GPIO.output(18,False) GPIO.output(22,False) GPIO.output(23,True) root@raspberrypi:~#
这个ssh作为控制方向
http://blog.csdn.net/xukai871105/article/details/12684617
http://raspberry-gpio-python.googlecode.com
#----------------------------------------------------------------------------
tonardo的websocket作为遥控器
python aa.py
#!/usr/bin/python #coding:utf-8 import os.path import tornado.httpserver import tornado.web import tornado.ioloop import tornado.options import tornado.httpclient import tornado.websocket import json import RPi.GPIO as GPIO import time #GPIO.setwarnings(False) #GPIO.setmode(GPIO.BCM) #GPIO.setup(17,GPIO.OUT) #GPIO.setup(18,GPIO.OUT) #GPIO.setup(22,GPIO.OUT) #GPIO.setup(23,GPIO.OUT) class IndexHandler(tornado.web.RequestHandler): def get(self): self.render("index.html") class SocketHandler(tornado.websocket.WebSocketHandler): """docstring for SocketHandler""" clients = set() @staticmethod def send_to_all(message): for c in SocketHandler.clients: c.write_message(json.dumps(message)) def open(self): # GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(17,GPIO.OUT) GPIO.setup(18,GPIO.OUT) GPIO.setup(22,GPIO.OUT) GPIO.setup(23,GPIO.OUT) self.write_message(json.dumps({ 'type': 'sys', 'message': 'Welcome to WebSocket', })) SocketHandler.send_to_all({ 'type': 'sys', 'message': str(id(self)) + ' has joined', }) SocketHandler.clients.add(self) def on_close(self): SocketHandler.clients.remove(self) SocketHandler.send_to_all({ 'type': 'sys', 'message': str(id(self)) + ' has left', }) def on_message(self, message): if(message == 'w'): GPIO.output(17,False) GPIO.output(18,True) GPIO.output(22,False) GPIO.output(23,True) elif(message == 'a'): GPIO.output(17,False) GPIO.output(18,True) GPIO.output(22,False) GPIO.output(23,False) elif(message == 'd'): GPIO.output(17,False) GPIO.output(18,False) GPIO.output(22,False) GPIO.output(23,True) elif(message == 's'): GPIO.output(17,True) GPIO.output(18,False) GPIO.output(22,True) GPIO.output(23,False) else: GPIO.output(17,False) GPIO.output(18,False) GPIO.output(22,False) GPIO.output(23,False) SocketHandler.send_to_all({ 'type': 'user', 'id': id(self), 'message': message, }) ##MAIN if __name__ == '__main__': app = tornado.web.Application( handlers=[ (r"/", IndexHandler), (r"/chat", SocketHandler) ], debug = True, # template_path = os.path.join(os.path.dirname(__file__), "templates"), # static_path = os.path.join(os.path.dirname(__file__), "static") ) app.listen(8000) tornado.ioloop.IOLoop.instance().start()
客户端
index.html
<html> <head> <script type="text/javascript"> var ws = new WebSocket("ws://192.168.0.112:8000/chat"); ws.onmessage = function(event) { console.log(event.data); } ws.onopen = function() { console.log('open'); }; ws.onclose = function() { console.log('Closed! '); } function sendto() { ws.send(document.getElementById('chat').value ); } function send(str){ ws.send(str); } </script> </head> <body> <div> hello <input id="chat"> <button onclick="sendto()">send</button> <br/> <pre> <button onclick="send('w')">up</button> <button onclick="send('a')">left</button><button onclick="send('d')">right</button> <button onclick="send('s')">down</button> <button onclick="send('x')">stop</button> </pre> </div> </body> </html>
python aa.py
http://192.168.0.112:8000
摄像头
http://liyao.me/raspberry-pi-wifi-camera/
发表评论
-
xl2tp 备份
2019-09-24 16:25 6892019年9月24日更新: 注意,需要开启firewall ... -
sdl笔记
2019-01-31 17:19 732sdl教程教程 https://github.com/Twin ... -
tinyemu
2019-01-24 17:59 1432参考https://bellard.org/jslinux/t ... -
aws搭建xl2tp给iphone使用
2018-12-26 21:37 18902019年12月26日 可以参考原来的配置 https:// ... -
consul的基本使用
2017-06-27 11:13 1399### 安装 [centos7上consul的安装](ht ... -
lvs的helloworld
2017-06-13 20:36 596###################lvs######### ... -
系统调用的helloworld
2017-05-04 16:14 632《2.6内核标准教程》 p293 #include < ... -
bitcoin和cgminer的安装
2017-04-05 22:45 1958参考 http://blog.csdn.net/rion_ch ... -
ceph安装和常用命令
2017-03-21 21:55 953/etc/hosts ssh-keygen ssh-copy- ... -
mobile terminal 笔记
2016-12-02 15:35 624找出旧的iphone4 越狱之后可以变个小操作系统 mobi ... -
socket基础和select(python)
2016-06-14 17:21 1799上接 c语言的socket基础ht ... -
socket基础(c语言)
2016-06-14 16:45 994不使用select 普通的基础socket连接,对多个客户端的 ... -
ffmpeg+nginx 的直播(2,直播摄像头和麦克风)
2016-05-28 20:21 4357假设我的服务器是centos7 192.168.139.117 ... -
ffmpeg+nginx 的直播(1,直播播放的视频文件)
2016-05-26 17:11 659164位操作系统centos7 ############ 1.一 ... -
socat和netcat(nc)
2016-04-29 22:36 1742转 原文链接: http://www.wenquan.name ... -
neutron基础九(qemu nat网络)
2016-02-06 17:21 1621接上基础八,kvm透传nested忽略 1.在主机ce ... -
neutron基础八(qemu 桥接网络)
2016-02-06 13:13 1542qemu的桥接和nat的qemu启动命令是一样的,但是后续的脚 ... -
neutron基础七(qemu tap)
2016-02-02 17:02 1030使用qemu 建立个虚拟机 然后用tap设备, 根据基础六,t ... -
neutron基础六(bridge fdb)
2016-01-28 18:30 2263转发表 在三台机器上建立三个namespace 192.16 ... -
南北流量
2016-01-23 23:26 1822一、三层网络架构: 接入层:负责服务器的接入和隔离 汇聚层:汇 ...
相关推荐
【树莓派视频小车毕业论文】是一篇详细介绍如何利用树莓派开发一款远程控制的视频小车的毕业设计项目。该项目的核心在于结合硬件与软件技术,实现通过网页实时查看小车摄像头拍摄的视频,并使用键盘或鼠标进行远程...
基于python异步io框架Tornado,结合JavaScript的onkeydown事件、 jQuery的mousedown、mouseup、touchstart、touchend事件以及Ajax,实现了监控遥控命令与web网页指定按键和鼠标(屏幕)点击事件的绑定,同时也实现了...
`tornado.platform.caresresolver` 模块提供了一个基于 C-Ares 库的异步 DNS 解析器,它可以高效地执行 DNS 查询,减少了等待时间。 **4.4 tornado.platform.twisted — Twisted 和 Tornado 之间的桥梁** `tornado...
Tornado 2.2是VxWorks操作系统的核心开发工具集,包含了编译器、调试器、集成开发环境(IDE)等一系列组件。它支持多种处理器架构,包括ARM,使得开发者能够在Windows 7环境下进行跨平台的嵌入式开发工作。 二、Win...
通过定义`@tornado.gen.coroutine`装饰器的函数和使用`yield`关键字,开发者可以轻松实现异步操作。 ### 2. Web服务器和路由 Tornado的`tornado.web`模块提供了构建Web应用的基本元素,如RequestHandler、...
我们可以看到树莓派相关的技术栈知识点包括 Fluidd、FluiddPi、Moonraker、API 和 Tornado 等概念。这些技术栈知识点都是基于 Python 语言的,可以帮助开发者快速构建和管理 3D 打印机应用程序。
例如,可以使用`tornado.gen.coroutine`装饰器来定义协程,这些协程可以在等待异步操作时挂起,并在操作完成时恢复。通过这种方式,我们可以编写出复杂的异步逻辑,而无需嵌套回调,使代码更易于理解和维护。 ...
在Windows 7或Windows 10操作系统环境下,Tornado是一个常用的Python异步网络库,用于构建高并发、高性能的Web服务。Tornado 2.2是该库的一个版本,可能存在某些功能上的限制或者与新系统兼容性的问题,因此有时需要...
Tornado官方翻译文档是关于Tornado这个Python Web框架和异步网络库的使用手册。Tornado是为了解决高并发和长连接问题而设计的,它使用非阻塞的网络I/O模型,从而能够承受成千上万的并发连接,特别适合于实现长轮询、...
在IT行业中,Python是一种广泛应用的编程语言,而Tornado是一个基于Python的Web服务器框架和异步网络库。这个“Tornado实战Demo全集”显然是一份面向初学者的资源,旨在帮助他们深入理解和掌握Tornado框架,特别是其...
在本文中,我们将深入探讨如何使用树莓派 Zero 2W 实现通过Web接口操作I2C总线上的RDA5807收音机芯片,并利用ffmpeg将USB声卡采集的声音推送到流媒体服务器进行远程监听。这个项目涵盖了嵌入式硬件、树莓派编程以及...
Tornado是一个Python编写的开源网络框架和异步网络库,最初由FriendFeed开发。Tornado以其非阻塞网络I/O和可扩展性而闻名,能够支持数以万计的开放连接,非常适合需要与每个用户维持长期连接的应用程序,比如长轮询...
**Tornado 模块详解** Tornado 是一个 Python 开发的 Web 框架和异步网络库,它以其高性能、非阻塞 I/O 和可扩展性而闻名。Tornado 起源于 FriendFeed 团队的需求,后来被 Facebook 收购并开源,现在是开源社区的一...
【标题】"tornado pdf part1打包"指的是一个与Tornado相关的PDF文档集合,可能是某个教程或参考资料的合集。这个压缩包包含了多个部分,旨在深入探讨Tornado这一技术。 【描述】"比较全的关于tornado英文PDF,好不...
Tornado是VxWorks开发的核心部分,它是一个集成开发环境(IDE),包括了编译器、链接器、调试器以及项目管理工具。这个环境允许开发者编写、构建、调试和优化VxWorks应用程序,同时支持多种编程语言,如C、C++等。 ...
例如,你可以使用`@gen.coroutine`装饰器来编写协程: ```python from tornado import gen @gen.coroutine def async_handler(self): result = yield self.fetch("http://example.com") self.write(result....
Tornado是一款开源的Python Web框架和异步网络库,它由Facebook的FriendFeed团队开发,并在2009年开源。Tornado以其高并发、低延迟的特性在Web开发领域中受到广泛的关注,尤其适用于实时Web服务,如聊天、推送通知、...
本教程将详细介绍如何在Windows 7 64位系统上顺利安装Tornado。 首先,确保你的计算机上已经安装了Python。因为Tornado是Python的一个第三方库,所以你需要Python环境才能安装它。如果你还没有安装Python,请访问...
在IT行业中,Tornado是一个非常重要的Web框架,尤其在高性能、高并发的场景下表现出色。这个名为“tornado_code.rar”的压缩包文件显然包含了与Tornado框架相关的代码示例,特别是涉及到路由处理、模板渲染以及如何...