首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于全球星实现无人机远程通信
来源:本站整理  作者:佚名  2009-07-03 10:16:16



4.1.5 数据维护阶段 
    平时可利用数据维护软件对数据库进行备份、删除等管理,可对历史数据查询、调阅、生成报表、打印、导出等工作。
4.2 关键技术实现
4.2.1 多线程技术
   
本系统涉及拨号连接、网络通信、串口通信、数据分包、状态监视等。众多任务实时完成,如果管理不慎,将造成系统资源冲突,使系统稳定性降低。因此,在开发时采用多线程技术管理任务,共创建了四个服务线程:串口通信线程,负责管理有关串口通信的所有任务;网关连接线程,负责拨号连接,监视全球星星历状态,系统断开后自动实时连接;网络通信线程,负责有关网络SOCKET通信的所有任务;数据处理线程,负责实时生成传输的数据包,对数据进行加密、压缩、分包、合包等任务。依靠线程中断、挂起、通信等线程服务手段来实现各个任务之间的信息交互,有效防止资源冲突互锁。
4.2.2 拨号连接网关
   
在使用全球星提供的通信服务时,必须使GSP-1620与网关保持连接,而且要实时监测连接状态,在断开时,重新连接。连接方式采用的是拨号连接的方式。以WINDOWS平台为例拨号连接的程序如下:

   
    定义连接参数rdParams,并根据需要初始化该连接参数。
    DWORD dwError=RasDial(NULL,NULL,&rdParams,0L,(RASDIALFUNC)RasDialFunc,&m_hRasConn);
    调用API函数RasDial进行拨号连接,入口参数主要有连接参数rdParams和回调函数RasDialFunc。
    回调函数RasDialFunc定义如下:


    回调函数的主要作用为根据连接状态执行相应的任务,比如连接成功时则调用API函数RasGetProjec-tionInfo获取网关给本用户分配的IP,获得IP后才可以应用TCP/IP或UDP协议进行信息传输。
    另一个比较重要的API函数是RasGetConnect-Status,利用该函数可实时获取网关连接状态。
4.2.3 网络通信
   
拨号连接网关成功后,获得分配IP,则进行网络通信,通信时即可采用TCP/IP协议也可采用UDP协议,开发时根据需要确定。以UDP协议为例,网络通信程序如下:


    如果创建成功,则绑定该SOCKET,绑定端口号为port。绑定后,则可创建网络数据处理线程,实时接收和发送数据。接收和发送数据的程序分别为:


    resulut和sent分别代表接收的字节数和发送的字节数。
4.2.4 串口通信
    串口可以被当作文件资源来管理,因此利用Cre-ateFile,OpenFile和WriteFile三个文件操作API函数即可实现打开串口、读写数据的功能。以Windows操作系统为例,程序如下:


    该函数实现了打开串口号为port的串口,打开成功返回真,失败返回假。


    该函数实现了从打开的串口中读取缓冲区中的数据。


    该函数实现了将数据写入打开的串口。
4.2.5 数据分包
   
由于网口和串口每次传输的数据量有限,为了满足信息批量传输的需求,必须将需要传输的数据(例如:一个2 MB的图像文件)首先分解成一个个独立的数据包,发送时每次发送一个数据包,等接收端接收到所有的数据包时,将数据包进行合包,解析出原始数据。在发送时可能出现个别数据包丢失的情况,在接收端根据数据包内的标识判断丢失的数据包,然后向发送端请求重发丢失的数据包。数据包数据结构设计如表1所示。数据包序号为每个数据包的惟一的标识序号;子包个数代表该数据包所属的需要传输数据分包后形成的子包的个数;子包序号代表该数据包所属的需要传输数据分包后形成的子包群中的排序号;信息头代表传输的信息类型编码。利用该数据结构即可编制任意长度数据的传输程序,而且能够保证数据传输的速度和正确性。

5 结 语
    应用全球星的通信功能为无人机设计了一套远程通信系统,并解决了在开发中遇到的连接网关、网络通信、数据分包等关键技术问题。该系统通信不受时间、距离、地域限制,通信能力强,可传输语音、数据、图像等信息。系统造价低及开发风险低,因此具有广泛的应用前景。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:6,398.43800 毫秒