- 浏览: 145736 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
老八牛:
利用迭代器让异步操作更加“人性化”-山寨版的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 571最近有消息说韩国电信 ... -
继续ORM-欧德巴赫猜想-Mapping
2007-01-23 14:34 666最近从项目组单离出来开始在公司实施过程化管理,整个QA Off ... -
剑走偏锋,小心走火入魔
2007-01-23 15:07 706这是很久前写好的文字,闲得无聊就发上来,几个月前的感想,上午一 ... -
手把手教你写ORM(三)
2007-01-24 11:50 605昨天处于晕死状态,少写了一个组件,还需要一个组件用来专门管理C ... -
手把手教你写ORM(四)
2007-01-24 13:51 641现在中午不睡一会儿就头晕。前一篇有人留言说为什么不写web.c ... -
手把手教你写ORM(五)
2007-01-24 15:29 604CMMI是魔鬼继续上面的内容,这里我们要实现一个插件的结构来动 ... -
谈谈我们的学习和我们的Blog
2007-01-24 20:07 407第一,学习编程是一个很枯燥的过程,所以我们更要讲究效率(要把有 ... -
手把手教你写代码生成器(也算ORM的续)
2007-01-25 11:45 724因为ORM还是需要配置,还是需要EntityObject,所以 ... -
粒度细到控件的权限管理系统的设计(概要篇)
2007-01-25 21:40 1066其实这个设计是已经做过了,那个时候我才进公司还在试用期,给我的 ... -
粒度细到控件的权限管理组件(构想篇)
2007-01-26 10:34 747说老实话我现在还没开 ... -
手把手教你写ORM大全篇
2007-01-26 19:36 680根据dudu boss的建议将本系列作一个归纳,下一个系列正在 ... -
架构设计的非侵入性原则
2007-01-27 00:41 698最近常常看到JAVA社区热 ... -
手把手教你可复用SSO组件的设计(原理篇)
2007-01-27 14:55 759在结构设计上复用性 ... -
对《万事欠备设计先行》的一点想法,兼谈XP和CMMI
2007-01-29 09:31 651周末陪女友,故沉默了,其实大脑并没有沉默,之前看到《万事欠备设 ... -
手把手教你可复用的SSO组件设计(设计篇)
2007-01-29 16:24 593周末陪女朋友去了,没写,告罪,上班后急忙补上。 这里说到了可复 ... -
手把手教你可复用的SSO组件设计(实现篇)
2007-01-29 22:30 610费了一夜的功夫写完这些代码,有些凌乱,望见谅。 首先是对加密解 ... -
玩具级嵌入式内存对象数据库^V^
2007-02-01 19:46 495纯粹是为了好玩:} 最近几天很忙所以写得少了,昨天在清理硬盘的 ... -
差之毫厘谬以千里-计算中的精度问题
2007-02-27 10:04 587如果你只是i++来作计数 ... -
动态语言,涅磐重生还是死路一条?
2007-03-06 10:31 580最近花时间一直在看python和ruby,为了在Web应用又看 ... -
ASP.NET's MVC is what a joke!
2007-03-08 13:43 477很早前还在毁人不倦的 ...
相关推荐
【基于Web的远程监控系统(源代码)】是一种利用网络技术实现远程监控的软件系统,其核心在于通过Web界面提供用户对远程设备或环境的实时查看、管理和控制能力。这样的系统广泛应用于各种场景,如工业生产、智能家居、...
### 基于Web的嵌入式远程监控系统关键技术与实现 #### 一、引言 随着信息技术的发展,远程监控技术在各个领域得到了广泛应用。基于Web的嵌入式远程监控系统能够实现对无人值守现场设备的实时监测和控制,极大地...
在IT行业中,JAVA-web远程屏幕监控系统是一种基于Java技术构建的Web应用,它允许用户通过网络来实时查看和控制远程计算机的屏幕。这样的系统在多种场景下都有应用,如远程技术支持、服务器管理、家庭监控或者企业...
总结起来,基于 Web 的通信电源远程监控系统是利用现代网络技术、通信协议以及嵌入式系统技术的集成,实现了通信电源设备的远程监控和管理。该系统结合了动态数据交换技术(DDE)、TCP/IP 协议、Web 技术(包括 Web ...
嵌入式Web服务器是系统的核心组件,负责将现场传感器传回的信号数据传送至LCD触摸屏上和远程监控PC机,实现了异构设备之间的跨平台互访。 3. 监控系统的硬件设计 微处理器是嵌入式视频服务器的核心部件,用于移植...
WebRTC(Web Real-Time Communication)是谷歌推出的一种开放源代码项目,旨在为Web浏览器和移动应用程序提供实时通信(RTC)能力。它包含了音视频通信、数据共享等关键组件,使得开发者可以构建高质量、低延迟的...
3. **远程监控层**:该层构建了一个分布式的远程监控系统,用于将SCADA层的数据传送到关系数据库中,以便远程用户通过浏览器查询网络运行状态和现场设备工作状况,实现远程监控。经过授权的用户还可以在线修改设备...
综上所述,基于嵌入式Linux的远程监控系统设计不仅考虑了系统架构的合理性,还关注了软件开发的具体实现细节,以及对硬件平台的优化选择,这为实现高效稳定的远程监控系统提供了有力的技术支撑。
本文将深入探讨一种基于mini6410_tiny6410平台的WEB远程视频实时监控系统的实现。这个系统集成了嵌入式硬件、网络通信、视频处理和Web技术,为用户提供了一个高效、稳定且易用的远程监控解决方案。 1. **mini6410_...
基于 ARM 的 WEB 远程视频实时监控系统设计与实现 本科毕业论文基于 ARM 的 WEB 远程视频实时监控系统设计与实现是计算机科学与技术专业的毕业设计,旨在设计和实现一个基于 ARM 的 WEB 远程视频实时监控系统。该...
例如,基于Web方式的远程监控系统能够让客户端通过Internet使用Web浏览器远程监控。 四、远程监控系统硬件设计与实现 远程监控系统一般由多个模块组成,包括系统管理模块(MCU)、系统通信模块、系统现场监控模块...
### 面向远程监控系统的嵌入式web服务器研究与实现 #### 一、引言 随着信息技术的进步和网络通信技术的发展,远程监控系统在众多领域(如交通、医疗、金融、教育、安防等)得到广泛应用。传统的本地模拟监控技术...
基于Web的设备远程监控系统的设计与实现,涉及以下几个核心知识点: 1. B/S架构:B/S架构即浏览器/服务器模式,用户通过浏览器访问服务器,而服务器负责处理业务逻辑并将数据存储在数据库中。这种模式方便了用户...
这可能表明在JAVACS远程监控系统中,有通过浏览器插件方式实现远程监控的组件,允许用户通过Web界面进行系统的远程访问和管理。 综合以上内容,可以推断出JAVACS远程监控系统软件的实现涉及到多个方面的技术细节,...
6. 跨平台支持:远程监控系统的Web服务端应支持多浏览器访问,兼容不同的操作系统,如Windows、Linux、MacOS等。 接下来,我们还应该注意到“WebServer***”这个部分。从这部分内容来看,它可能是指一个具体的...
为了实现基于B/S模式的视频远程监控系统,本文采用了以下几种关键技术: 1. **Java Media Framework (JMF)**:JMF是Java平台上的一个标准组件,用于处理音频、视频和其他时间敏感的数据。它支持多种媒体格式,能够...
1. **B/S架构**:本系统采用B/S架构,这意味着用户无需安装任何特定的应用程序,只需要通过Web浏览器即可访问系统。这种方式简化了系统的部署和维护过程,同时也提高了系统的可访问性和可用性。 2. **三维可视化...