- 浏览: 140597 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
老八牛:
利用迭代器让异步操作更加“人性化”-山寨版的AsyncEnumerator -
老八牛:
为什么看不到代码?
利用迭代器让异步操作更加“人性化”-山寨版的AsyncEnumerator -
xi4nyu:
如果启动Application中的settings 的debu ...
玩蛇记-使用Tornado构建高性能Web之二-autoreload -
huacnlee:
"且在python下工作多日才发现原来在.NET下的 ...
玩蛇记-使用tornado构建高性能Web应用之一 -
jasongreen:
异步数据库操作,在web上有什么作用吗?
玩蛇记-使用tornado构建高性能Web应用之一
想不想能够在网上看到自己家里的情况?罗技的网络摄像头又贵效果又不好,而且就只能摆一个死角度,而且页面上要安装插件,专业的监控系统死贵死贵,而且还是要用插件或者专门的软件,甚至有的还有端口限制,防火墙穿透能力极差。我们现在的目标就是在有限的资金投入下实现一个纯Web(没有专用插件),跨浏览器,支持摄像头的控制(水平270度,垂直210度,带变焦)的远程监控系统。甚至还能支持拍照和录像功能。
首先由于资金有限,所以我们软件不准备花一分钱,全部自己来写。硬件只要能满足要求我们用最便宜的(如果硬件肯多花钱当然效果也会好很多)
下面是我们需要采购的清单,部分比较昂贵的设备我参考了淘宝的价格。
产品 |
规格 |
价格 |
云台 |
301云台 |
150(淘宝价) |
云台解码板 |
自带电源的万用解码板 |
320 |
摄像头 |
1/3" SONY ICX 409AK Color |
420(淘宝价) |
RS232-RS485转换头 |
通用 |
45 |
视频采集卡 |
视频采集卡--影视大师豪华版 (三诺)
|
180(淘宝价) |
网线、串口线 |
超6类网线2根、RS232线一根 |
|
当然为了安装这些硬件我们还需要一些工具比如网线钳,电烙铁,焊锡丝等。
为了能够实现我们之前所提到的功能,我们需要分三个步骤来完成。
第一个步骤是硬件安装。那么第一步就是找个稳定的安装面把云台装好,具体的安装过程就不说了,拧螺丝,会吧。
接下来需要把摄像头的数据线和控制线接好,数据线就是常规的AV线,控制线就是用网线自己焊的,接头在摄像头的包装盒里有。云台的控制线也是一样。然后我们就把云台和摄像头的控制线按照说明书上的格式在解码板上安装好,然后设置解码板的协议格式为pelco-d(具体的设置方式在说明书上有)。控制信号是通过串口发送的,我们将串口线接到电脑的串口上,另一端接到转接口头,转接头的Rs485这一端用网线就行了,只需要两根线芯就行了,这根网线的另一端接到解码板上就行了。至此控制链路的物理链路就打通了。连通性测试可以用万用表来完成。
第二步就是打通视频链路,首先是把采集卡装到电脑上,然后把av线插到采集卡上就行了。好了现在硬件都搞定了我们就可以来搞定软件了。
首先我们要实现云台的控制。云台控制是通过串口来实现,电脑的串口通过pelco-d协议与云台解码板通信。pelco-d协议介绍
我们要自己实现这个协议,由于这个协议很简单,而且我们只有一个云台需要控制,所以就把地址位写死成01,然后所有的指令都固化成为一个长度为7 的Byte数组。上下左右+前后变焦+停止,一共7个指令我们用七个数组来写死:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 1using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace PelcoDLib
6{
7 class ControlData
8 {
9 // 保留 地址 指令1 指令2 数据1 数据2 验证
10 public static byte[] Up = { 0xff, 0x01, 0x00, 0x10, 0x00, 0x3f, 0x50 };
11 public static byte[] Down = { 0xff, 0x01, 0x00, 0x08, 0x00, 0x3f, 0x48 };
12 public static byte[] Left = { 0xff, 0x01, 0x00, 0x04, 0x3f, 0x00, 0x44 };
13 public static byte[] Right = { 0xff, 0x01, 0x00, 0x02, 0x3f, 0x00, 0x42 };
14
15 public static byte[] Forward = { 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x21 };
16 public static byte[] Back = { 0xff, 0x01, 0x00, 0x40, 0x00, 0x00, 0x41 };
17
18 public static byte[] Stop = { 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 };
19
20 public static byte[] FocusForward = { 0xff, 0x01, 0x00, 0x80, 0x00, 0x00, 0x81 };
21 public static byte[] FocusBack = { 0xff, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02 };
22
23 public static byte[] SetPoint = { 0xff, 0x01, 0x00, 0x03, 0x00, 0x01, 0x05 };
24 public static byte[] GotoPoint = { 0xff, 0x01, 0x00, 0x07, 0x00, 0x01, 0x09 };
25
26 public static SortedDictionary<string, byte[]> Commands = new SortedDictionary<string, byte[]>();
27
28 static ControlData()
29 {
30 Commands.Add("up", Up);
31 Commands.Add("down", Down);
32 Commands.Add("left", Left);
33 Commands.Add("right", Right);
34 Commands.Add("for", Forward);
35 Commands.Add("back", Back);
36 Commands.Add("ffor", FocusForward);
37 Commands.Add("fback", FocusBack);
38 Commands.Add("setp", SetPoint);
39 Commands.Add("gop", GotoPoint);
40 }
41
42 }
43}
44
然后我们通过串口通信的类发送这些指令就行了,下面是控制云台向上运动的方法:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1public static void Up()
2 {
3 using (SerialPort port = GetPort())
4 {
5 if(!port.IsOpen)
6 port.Open();
7 port.Write(ControlData.Commands[ConfigurationManager.AppSettings["up"]], 0, 7);
8 }
9 }
注意一点:一旦执行了指令云台就会一直按照这个指令运动下去,直到执行Stop指令为止。
最后我们只需要能够在页面上执行到这些方法就能控制云台了,所以我们在电脑上配置好IIS,创建一个站点,在站点上创建一个页面,我们通过这个页面获取指令的参数来调用相应的方法。
比如
private void GoUp()
{
cam.Up();
}
之后我们用ajax去调用这个页面,就实现了控制云台的功能,我是用的flash用loadvars的方式去调用的,异曲同工不是么。
实现视频的方法要简单一些,我们可以用media encoder+media Service来实现,不过这个组合的延迟太严重了,大概十多而是秒,这个时候操作会变得很奇怪,所以我用的flash encoder+fms来实现从采集卡到Web页面显示的功能,这两个都有免费的开发版(10个并发,商业应用的话可以花钱买lisence)。我们在电脑上安装好这两个软件后,fms会以服务的方式运行,flash encoder运行后会自动找到采集设备,设置好码率,大小,比例等参数后设置好fms的地址就可以开始推送了,开始推送后会自动在fms创建application。
这个时候我们在网站上创建一个页面,把控制的flash或者ajax程序放上去,然后加入一个flash的播放器,地址设置为fms的app的地址,然后我们就能够在页面上看到图像了,而且还能够去控制摄像头运动。当然我们也可以自己用flash写一个播放器。
效果的话,我可不希望在家被偷窥,所以大家可以去 大熊猫网站 看看,这个网站的应用就是按照类似的方式实现的,不过摄像头换成了sony的高档货,3000多一个,太清楚啦,甚至可以拉很近看到地上的毛毛虫。如果是网上就不用看啦,摄像头在室外,晚上一片漆黑。不过早上8点到10点真的很容易看到熊猫哦。
发表评论
-
关于ORM和内存数据库的遐想
2007-01-23 13:21 542最近有消息说韩国电信 ... -
继续ORM-欧德巴赫猜想-Mapping
2007-01-23 14:34 640最近从项目组单离出来开始在公司实施过程化管理,整个QA Off ... -
剑走偏锋,小心走火入魔
2007-01-23 15:07 683这是很久前写好的文字,闲得无聊就发上来,几个月前的感想,上午一 ... -
手把手教你写ORM(三)
2007-01-24 11:50 583昨天处于晕死状态,少写了一个组件,还需要一个组件用来专门管理C ... -
手把手教你写ORM(四)
2007-01-24 13:51 606现在中午不睡一会儿就头晕。前一篇有人留言说为什么不写web.c ... -
手把手教你写ORM(五)
2007-01-24 15:29 579CMMI是魔鬼继续上面的内容,这里我们要实现一个插件的结构来动 ... -
谈谈我们的学习和我们的Blog
2007-01-24 20:07 375第一,学习编程是一个很枯燥的过程,所以我们更要讲究效率(要把有 ... -
手把手教你写代码生成器(也算ORM的续)
2007-01-25 11:45 682因为ORM还是需要配置,还是需要EntityObject,所以 ... -
粒度细到控件的权限管理系统的设计(概要篇)
2007-01-25 21:40 1039其实这个设计是已经做过了,那个时候我才进公司还在试用期,给我的 ... -
粒度细到控件的权限管理组件(构想篇)
2007-01-26 10:34 721说老实话我现在还没开 ... -
手把手教你写ORM大全篇
2007-01-26 19:36 648根据dudu boss的建议将本系列作一个归纳,下一个系列正在 ... -
架构设计的非侵入性原则
2007-01-27 00:41 665最近常常看到JAVA社区热 ... -
手把手教你可复用SSO组件的设计(原理篇)
2007-01-27 14:55 732在结构设计上复用性 ... -
对《万事欠备设计先行》的一点想法,兼谈XP和CMMI
2007-01-29 09:31 615周末陪女友,故沉默了,其实大脑并没有沉默,之前看到《万事欠备设 ... -
手把手教你可复用的SSO组件设计(设计篇)
2007-01-29 16:24 566周末陪女朋友去了,没写,告罪,上班后急忙补上。 这里说到了可复 ... -
手把手教你可复用的SSO组件设计(实现篇)
2007-01-29 22:30 582费了一夜的功夫写完这些代码,有些凌乱,望见谅。 首先是对加密解 ... -
玩具级嵌入式内存对象数据库^V^
2007-02-01 19:46 467纯粹是为了好玩:} 最近几天很忙所以写得少了,昨天在清理硬盘的 ... -
差之毫厘谬以千里-计算中的精度问题
2007-02-27 10:04 554如果你只是i++来作计数 ... -
动态语言,涅磐重生还是死路一条?
2007-03-06 10:31 550最近花时间一直在看python和ruby,为了在Web应用又看 ... -
ASP.NET's MVC is what a joke!
2007-03-08 13:43 458很早前还在毁人不倦的 ...
相关推荐
自己动手实现纯Web远程监控系统(纯Web,跨浏览器).doc
1.不需要安装任何插件可以在网页上实时浏览远程桌面信息; 2.基于WebRtc技术,超低延时; 3.不是简单,直接双击就可以运行,且带有详细的用户手册; 4.适用于任何想实时查看远程桌面的场景;
为实现对选煤厂点检自动化系统的远程监控,设计了一套基于无线传感器的数据采集及Web监控系统。采用B/S构架,同时利用.NET2008技术,开发了基于ASP.NET 2.0技术的Web应用程序。它通过Web服务器,实现了分布式数据库的...
新能源汽车远程监控系统具有实时监控车辆的电池信息,电机控制器信息,整车信息车辆运行状态信息、故障信息、电池信息等的显示、查询和存储功能,用户能够实时掌握电动车辆的运行情况,使人、车、路三者紧密协调,为...
系统采用Boa作为嵌入式Web服务器,负责接收和分析用户请求,传送静态页面和调用后台CGI程序,通过编写相关的HTML网页和CGI程序,在客户端通过web浏览器以网页方式访问嵌入式设备,并通过调用CGI程序实现远程温度监控...
利用ARM Cortex-M3内核的32位微控制器LPC1768为主控芯片,设计了一种基于嵌入式Internet的煤矿瓦斯远程监控系统,即以微控制器的内置以太网控制器搭建Web服务器,采用μC/OS-Ⅱ为操作系统,移植了LwIP协议栈,实现HTTP...
该系统将嵌入式技术、网络技术和视频编码技术结合在一起,嵌入式系统中的摄像头采集到的视频信号经H.264标准编码压缩后,通过系统内置的Web服务器实时地传递给远程监控端,从而实现了远程监控端的浏览器与嵌入式Web...
具有Java插件的浏览器实现远程监控的目的。 本文以ARM9为核心硬件平台开发了基于嵌入式Linux的远程视频监控系统,并对关 键技术进行了论述和研究。首先介绍了国内外视频监控系统的发展现状,给出了本系统总 体软硬件...
远程监控web插件,安装后可以直接通过浏览器添加域名下的监控设备
针对传统Web技术路线不能直接用于构造嵌入式Web服务器的问题,提出一种基于ARM- Vxworks和Web技术的嵌入式远程监控系统.介绍了系统设计原理和实现方法,给出了Vxworks平台下嵌入式web服务器的实现方法,包括Goahead的...
管理人员可以不受时间、空间限制,利用WEB服务器与客户端通信的机理,实现Web浏览器对远程设备的采集、压缩、控制和维护等操作,实现了异构设备之间的跨平台互访。经测试,该系统不但能满足车间管理员的监控任务需要,...
将Web技术应用到远程监控系统中,可以提供比传统远程监控更为强大的功能。用户只需要通过普通的浏览器,就可以实现对远程设备的监视、控制、诊断、测试和配置。借助以太网和Internet技术,把嵌入式系统连接到...
提出了一种基于ARM9的嵌入式Web远程实时温度监控系统的设计方法。在基于ARM9和Linux2.6内核的嵌入式系统平台上控制温度传感器DS18B20采集数据,并配置实现了Boa服务器;利用CGI实现了客户端浏览器和嵌入式Web服务器...
摘要: 为了实现对现场的远程实时监控,提出了一种基于ARM 的智能监控方案。系统由现场设备、无线传输网络和监控中心 组成。现场设备整合了S3C2440A 微处理器、无线网卡、环境传感器、USB 摄像头、嵌入式Linux 和...
为寻求一种简约灵活低成本的监控方式,借助WEB技术,以SIMATIC PLC和单旋鼓风力喂丝机为对象,阐述了以WEB浏览器为界面实现人机交互和设备监控的方法。该方式简化了控制系统结构、减少了现场操作站数量,并为后期...
远程监控温湿度 并且将数据持久化到服务器 并且通过网站查看数据 硬件 树莓派 DHT11温湿度模块 使用方法 将树莓派、电脑连接到同一局域网内 DHT11模块DATA引脚连接到树莓派BCM针脚编码的18号针脚 将src/web/dh111...
基于嵌入式网络技术,研究并实现了一种用于嵌入式设备的监控系统。该系统采用客户端/服务器架构,通过在嵌入式设备中内建一个嵌入式Web服务器,可使得相应的嵌入式设备直接接入Internet。同时用户可使用标准的网络...
分析了监控系统的发展趋势,提出了一种基于Web技术的远程监控与数据采集系统的设计方案。Web 数据库采用ASP技术实现,远程智能终端采用单片机系统实现,用户可以通过浏览器实现对现场设备状态的监控。该设计方案在实现...
该系统以基于Linux操作系统的嵌入式视频服务器为核心部件,前端摄像机采集的现场图像经嵌入式视频服务器进行AD转换和MPEG4编码压缩等处理后,通过嵌入式TCP/IP模块发送到工业以太网,最终以Web形式发布在监控终端浏览器...
通过采用基于Web服务的OPCXML-DA新技术,设计了远程监控系统,使得远程用户可以使用浏览器或定制的客户端通过互联网或局域网实现对现场的远程监控。由于采用了标准的OPC接口和Web服务调用接口,方便了系统的扩展和...