博文

GPS技术及其在移动定位中的应用研究(2006-04-21 15:20:00)

摘要:王建民 顾虹 摘要 介绍了GPS网络组成及其测量原理,探讨了GPS技术在移动定位中的应用,最后详细介绍了A-GPS高精度定位技术的应用。 关键词 GPS A-GPS 移动定位 1、前言   全球卫星定位系统(GPS,Navigation Satellite Timing and Ranging/Global Positioning System)是20世纪70年代初在美军“子午卫星导航定位系统——NNSS系统”的技术上发展而来的具有全球性、全能性(陆地、海洋、航空与航天)、全天候性优势的导航定位、定时、测速系统。GPS一般可采用4颗卫星的测量数据来计算一个移动用户的位置,即经度、纬度和高度。原始数据可以由终端处理,也可以送到网络侧处理。GPS在天空晴朗时,可以获得5-40m的精度。   目前,GPS和手机结合用于移动用户的定位主要有两种方式:第一种是手机独立定位的GPS方式,它是在手机内部加装GPS接收机模块,并将普通手机天线换成能够接收GPS信号的多用途天线。手机接收GPS数据进行计算,确定移动台的位置信息并将结果报给移动网络。第二种是联合定位方式,其典型代表是辅助全球卫星定位系统A-GPS(Assistant Global Positioning System)定位技术。A-GPS与GPS方式一样需要在手机内增加GPS接收机模块并改造手机天线,但A-GPS手机通过接收移动网络由GPS参考网络所产生的辅助数据可快速启动并捕获卫星。按照手机是否独立负责完成位置计算,A-GPS又可以分为UE-Assisted和UE-Based两种定位模式。 2、GPS网络与基本测量原理   2.1 GPS网络   GPS定位系统由3部分组成:GPS卫星组成的空中部分、若干地面站组成的地面监控系统和以接收机为主体的用户设备。   2.1.1 空中部分   GPS空中部分由24颗GPS工作卫星组成,其中21颗为导航卫星,3颗为活动备用卫星。这24颗卫星分布在6个倾角为55°、高度约为20OOOkm高空的轨道上绕地球运行。每颗GPS工作卫星都发出用于导航定位的信号,GPS用户设备正是利用这些信号来进行工作的。   2.1.2 地面监控部分   GPS地面监控系统由分布在全球的若干个跟踪站所组成,根据其作用不同,这些跟踪站又分为主控站、监控站和......

阅读全文(7783) | 评论:4

昆仑(完整版)-凤歌武侠小说(推荐)(2006-04-20 18:38:00)

摘要:昆仑(作者:凤歌)     这是部用数学知识组织起来的武侠小说,引人入胜,情节跌宕起伏,一看就不可收拾,是一部直想一气读完的小说,读后有无穷的想象空间,一部不可多得的佳作也!     《昆仑》的出版是近年来武侠文学界一件标志性的大事,若干年后,当我们回顾二十一世纪大陆新武侠时,也许会将《昆仑》和一九五八年金庸《射雕英雄传》的出现相比。
                             ——韩云波     认识凤歌四年,而中间有三年,是在看着他写《昆仑》。
                             ——沧月     除了金庸,我最喜欢的两本武侠小说,一本是孙晓的《英雄志》,一本就是凤歌的《昆仑》。
                             ——小非     凤歌的《昆仑》是最受传统武侠迷认可的武侠小说,它甚至已经被命名为“经典”。
               &......

阅读全文(28862) | 评论:54

数据通信与网络参考资料(2006-04-20 17:34:00)

摘要: 1 多媒体通信网 2 串行通信接口 第一章 概 述 串口通讯的概念及接口电路 第二章 数字信号的基本概念 奇偶校验 第三章 时分多路复用与复接技术 全双工和半双工方式 第四章 数字压缩编码技术 传输速率与传输距离 第五章 数字信号的载波调制 调制解调器(MODEM) 第六章 差错控制 异步通信方式 第七章 数据通信与分组交换 同步通信方式 第八章 计算机通信网 网络通信的数据分组(帧) 第九章 ISDN和B-ISDN 通信协议 第十章 因特网-Internet RS-232、RS-422与RS-485标准及应用 第十一章 异步转移模式(ATM) RS-232-C详解(一) 第十二章 同步数字体系 RS-232-C详解(二) 第十三章 数字电视标准简介 RS232和RS485接口的问答 第十四章 数字信号终端设备(IRD&Cable Modem) RS-232至RS-485RS-422接口的智能转换器 第十五章 CATV宽带综合服务网 串、并行口针脚的定义 MPEG-4的音频标准 串口通信基本接线方法 几种串行通信接口标准 串行同步通信的应用 浅析PC机串口通讯流控制 提高RS-485网络可靠性的若干措施 3 扩频通信系统 4 串口编程 第一讲 扩频通信系统概述 Serial Communications in Win32 第二讲 扩展频谱通信的基本概念 Serial Communication with Borland C++ Builder 第三讲 扩展频谱通信的主要特点 Win32串口编程 第四讲 扩频通信的工作原理及工作方式 Windows 95中的串行通信 第五讲  直......

阅读全文(6547) | 评论:1

MATLAB的工程应用一书列表(2006-04-20 17:25:00)

摘要:  第一章 简介 1.1 计算机应用与工程问题 1.2 工程问题的解决方式 1.3 认识你/你的电脑工作环境 第二章 MATLAB 简介 2.1 什么是MATLAB 2.2 基本功能 2.2.1 MATLAB 的视窗环境 2.2.2 简易数学 2.2.3 变数 2.2.4 其它功能 2.3 线上说明 2.4 阵列与矩阵 2.4.1 简易阵列 2.4.2 建立阵列 2.4.3 阵列运算 2.4.4 特殊矩阵 2.4.5 阵列运算的特色 2.5 简易绘图 2.6 输入及输入 2.6.1 交谈式的输入 2.6.2 输出格式 2.7 如何撰写 MATLAB 程式 2.7.1 如何在自己的目录执行程式 2.8 储存及读取数据 2.9 其它绘图功能 2.10问题范例:涡轮螺旋桨引擎 第三章 进阶的绘图功能 3.1 绘图选项 3.1.1 横轴和纵轴的控制 3.1.2 子图 3.1.3 图形放大及缩小 3.1.4 函数分布的快速绘图 3.1.5 列印功能 3.1.6 其它的功能 3.2 三维绘图 3.1.1 三维的曲线绘图 3.1.2 曲面及等值线绘图 第四章 MATLAB函数 --- 语音讯号分析 4.1 ......

阅读全文(4976) | 评论:0

DirectShow应用程序快速入门(2006-04-20 15:42:00)

摘要:  摘要:该文介绍如何编写DirectShow应用程序,属于入门级文章。载自博客blog.csdn.net/suntaoznz。   一 环境设置... 1 二 DirectShow编程简介... 1 三 播放文件例程... 3     一环境设置 该节介绍如何建立DirectShow应用程序。你可以建立一个控制台程序,或者Visual Studio环境下的其它Visual C++的项目。 头文件 所有DirectShow 程序都使用下表中的头文件。   头文件 需     要 dshow.h 所有DirectShow 程序。   有些DirectShow接口会要求其他头文件,你可以去查看这些接口的参考手册。   库文件 DirectShow程序要使用的库文件如下:   库文件 说            明 Strmiids.lib 提供类标识(CLSIDs)和接口表示(IIDs)。所有的DirectShow程序都要求使用该库文件。 Quartz.lib 提供AMGetErrorText函数,如果你不调用这个函数,就可以不加载该库文件。   可以把DirectX SDK 的Include 和Lib目录放在Visual Studio的搜索路径的第一位。以确保你可以使用最新的版本!     二 DirectShow编程简介 该节对DirectShow编程的基本术语和概念进行介绍,通过对该节的阅读,你可以写你的一个DirectShow应用程序。 过滤器(Filters)和过滤器图表(Filter Graphs) 过滤器(Filters)就是一个软件组件,它执行一些针对多媒体流的操作。比如: ·         读入文件 ·   &......

阅读全文(9129) | 评论:2

Direcshow中视频捕捉和参数设置报告-5(2006-04-19 11:00:00)

摘要:7.      将设备从系统中移走时的事件通知(Device remove Notify) 如果用户将一个graph正在使用的即插即用型的设备从系统中去掉,filter图表管理器就会发送一个EC_DEVICE_LOST事件通知,如果该设备又可以使用了,filter图表管理器就发送另外的一个EC_DEVICE_LOST通知,但是先前组建的捕捉filter graph图就没法用了,用户必须重新组建graph图。 当系统中有新的设备添加时,dshow是不会发送任何通知的,所以,应用程序如果想要知道系统中何时添加新的设备,应用程序可以监控WM_DEVICECHANGE消息。 8.      从静止图像pin中捕捉图片 有些照相机,摄像头除了可以捕获视频流以外还可以捕获单张的,静止的图片。通常,静止的图片的质量要比流的质量要高。摄像头一般都一个按钮来触发,或者是支持软件触发。支持输出静态图片的摄像头一般都要提供一个静态图片pin,这个pin的种类是PIN_CATEGORY_STILL。 从设备中获取静态图片,我们一般推荐使用windows Image Acquisition (WIA) APIs。当然,你也可以用dshow来获取图片。 在graph运行的时候利用IAMVideoControl::SetMode来触发静态的pin。代码如下  pControl->Run(); // Run the graph.   IAMVideoControl *pAMVidControl = NULL;   hr = pCap->QueryInterface(IID_IAMVideoControl, (void**)&pAMVidControl);   if (SUCCEEDED(hr))   {   // Find the still pin.   IPin *pPin = 0;   hr = pBuild->FindPin(pCap, PINDIR_OUTPUT, &PIN_CATEGORY_STILL, 0,  FALSE, 0, &am......

阅读全文(7311) | 评论:0

Direcshow中视频捕捉和参数设置报告-4(2006-04-19 10:59:00)

摘要:6.      如何配置一个视频捕捉设备 1显示VFW驱动的视频设备对话框 如果视频捕捉设备采用的仍然是VFW方式的驱动程序,则必须支持下面三个对话框,用来设置视频设备。 1 Video Source 用来选择视频输入设备并且调整设备的设置,比如亮度和对比度。 2Video Format 用来设置桢的大小和位 3Video Display 用来设置视频的显示参数 为了显示上面的三个对话框,你可以do the following 1停止graph。 2向捕捉filter请求IAMVfwCaptureDialogs接口,如果成功,表明设备支持VFW驱动。 3调用IAMVfwCaptureDialogs::HasDialog来检查驱动程序是否支持你请求的对话框,如果支持,返回S_OK,否则返回S_FALSE。注意不要用SUCCEDED宏。 4如果驱动支持该对话框,调用IAMVfwCaptureDialogs::ShowDialog显示该对话框。 5 重新运行graph 代码如下  pControl->Stop(); // Stop the graph.  // Query the capture filter for the IAMVfwCaptureDialogs interface.  IAMVfwCaptureDialogs *pVfw = 0;  hr = pCap->QueryInterface(IID_IAMVfwCaptureDialogs, (void**)&pVfw);  if (SUCCEEDED(hr))  {   // Check if the device supports this dialog box.   if (S_OK == pVfw->HasDialog(VfwCaptureDialog_Source))   {   // Show the dialog box.   hr = pVfw->ShowDialog(VfwCaptureDialog_Source, hwndParent); &nbs......

阅读全文(8435) | 评论:1

Direcshow中视频捕捉和参数设置报告-3(2006-04-19 10:57:00)

摘要:5.      如何控制Capture Graph(Controlling Capture Graph) Filter图表管理器可以通过IMediaControl接口控制整个graph的运行,停止和暂停。但是当一个graph有捕捉和预览两个数据流的时候,如果我们想单独的控制其中的一个数据流话,我们可以通过ICaptureGraphBuilder2::ControlStream 。 下面讲一下如何来单独控制捕捉和预览数据流。 1 控制捕捉视频流 下面的代码,让捕捉数据流在graph开始运行1秒后开始,允运行4秒后结束。 // Control the video capture stream. REFERENCE_TIME rtStart = 1000 0000, rtStop = 5000 0000; const WORD wStartCookie = 1, wStopCookie = 2; // Arbitrary values.  hr = pBuild->ControlStream( &PIN_CATEGORY_CAPTURE, // Pin category. &MEDIATYPE_Video, // Media type. pCap, // Capture filter. &rtStart, &rtStop, // Start and stop times. wStartCookie, wStopCookie // Values for the start and stop events.
  ); pControl->Run(); 第一个参数表明需要控制的数据流,一般采用的是pin种类GUID, 第二个参数表明了媒体类型。 第三个参数指明了捕捉的filter。如果想要控制graph图中的所有捕捉filter,第二个和第三个参数都要设置成NULL。 第四和第五个参数表明了流开始和结束的时间,这是一个相对于graph开始的时间。 只有你调用IMediaControl::Run以后,这个函数才有作用。如果graph正在运行,这个设置立即生效。 最后的两个参数用来设置当数据流停止,开始能够得到的事件通知。对......

阅读全文(4536) | 评论:0

Direcshow中视频捕捉和参数设置报告-2(2006-04-19 10:52:00)

摘要:4.      如何捕捉视频流并保存到文件(Capture video to File) 1)         将视频流保存到AVI文件 下面的图表显示了graph图 图2 AVI Mux filter接收从capture pin过来的视频流,然后将其打包成AVI流。音频流也可以连接到AVI Mux Filter上,这样mux filter就将视频流和视频流合成AVI流。File writer将AVI流写入到文件中。 可以像下面这样构建graph图 IBaseFilter *pMux; hr = pBuild->SetOutputFileName(   &MEDIASUBTYPE_Avi, // Specifies AVI for the target file.   L"C:\\Example.avi", // File name.   &pMux, // Receives a pointer to the mux.   NULL); // (Optional) Receives a pointer to the file sink. 第一个参数表明文件的类型,这里表明是AVI,第二个参数是制定文件的名称。对于AVI文件,SetOutputFileName函数会创建一个AVI mux Filter 和一个 File writer Filter ,并且将两个filter添加到graph图中,在这个函数中,通过File Writer Filter 请求IFileSinkFilter接口,然后调用IFileSinkFilter::SetFileName方法,设置文件的名称。然后将两个filter连接起来。第三个参数返回一个指向 AVI Mux的指针,同时,它也通过第四个参数返回一个IFileSinkFilter参数,如果你不需要这个参数,你可以将这个参数设置成NULL。 然后,你应该调用下面的函数将capture filter 和AVI Mux连接起来。 hr = pBuild->RenderStream(   &PIN_C......

阅读全文(6318) | 评论:0

Direcshow中视频捕捉和参数设置报告-1(2006-04-19 10:50:00)

摘要:1.      关于视频捕捉(About Video Capture in Dshow) 1视频捕捉Graph的构建 一个能够捕捉音频或者视频的graph图都称之为捕捉graph图。捕捉graph图比一般的文件回放graph图要复杂许多,dshow提供了一个Capture Graph Builder COM组件使得捕捉graph图的生成更加简单。Capture Graph Builder提供了一个ICaptureGraphBuilder2接口,这个接口提供了一些方法用来构建和控制捕捉graph。 首先创建一个Capture Graph Builder对象和一个graph manger对象,然后用filter graph manager 作参数,调用ICaptureGraphBuilder2::SetFiltergraph来初始化Capture Graph Builder。看下面的代码把 HRESULT InitCaptureGraphBuilder( IGraphBuilder **ppGraph, // Receives the pointer. ICaptureGraphBuilder2 **ppBuild // Receives the pointer. ) { if (!ppGraph || !ppBuild) { return E_POINTER; } IGraphBuilder *pGraph = NULL; ICaptureGraphBuilder2 *pBuild = NULL;  // Create the Capture Graph Builder.   HRESULT hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL,   CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void**)&pGraph);   if (SUCCEEDED(hr))   {   // Create the Filter Graph Manager.   hr = CoCreateInst......

阅读全文(4989) | 评论:0