文档库 最新最全的文档下载
当前位置:文档库 › 多线程串口通信技术在GPS导航中的应用

多线程串口通信技术在GPS导航中的应用

多线程串口通信技术在GPS导航中的应用
多线程串口通信技术在GPS导航中的应用

多线程串口通信技术在GPS导航中的应用

摘要:GPS导航系统需要实时获取来自接收机串口的定位数据,在对串口实时监控的同时还可以在前台进行一些其他的操作,利用基于多线程的串口通信编程思想方法可以很好地解决这一问题。介绍多线程的基本概念和串口通信编程技术,分析了GPS导航系统的功能和需求,着重阐述了采用基于多线程的CSerialPort类的串口通信方法来获取定位数据,并且给出了CSerialPort类的使用方法。经过调试,程序运行平稳。

0 引言

GPS(Global Position System)具有全球性、全天候性优势的定位、定时、测速系统,用户利用GPS接收机接收卫星发射的信号,从而获取当前位置的大地坐标、高程和时间等信息,达到定位、导航或测量高程的目的。卫星导航定位技术被广泛应用于海洋勘测、海洋工程、海洋开发和军事作战中,高精度、快捷方便、全天候等优良特性,使其越来越受到人们的青睐。在GPS导航中,需要实时采集遵循NMEA0183协议的GPS数据,对数据进行处理后,通过ODBC接口将用户的位置、时间、速度等信息存到数据库,为以后在电子地图上实时显示目标位置提供依据。为了避免由于一直等待串口I/0操作而引起的线程阻塞,要求程序在对串行端口进行实时监控的同时,可以在前台进行数据提取、保存、显示等操作。为了解决实时性和多任务处理,避免某项任务长时间占用CPU,多线程编程是一个比较理想的选择。

1 多线程概述

1.1 基本概念

进程是程序在计算机上的一个执行实例,线程是程序中的一条执行分支,多线程就是在同一个程序中可以同时执行多个任务。每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其他线程,多个线程并发地运行于同一个进程中。

一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源。

1.2 VC

VC++环境对多线程技术的支持visual c++6.0中,MFC类库提供了对多线程编程的支持,使得多线程编程更加方便。MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。工作者线程通常用来执行后台计算和维护任务。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。

1.3 线程创建、挂起、恢复、终止

在MFC中,一般用全局函数AfxBeginThread()来创建并初始化一个线程的运行,该函数有两种重载形式,分别用于创建工作者线程和用户界面线程。Sus-pendThread()和ResumeThread()分别用于挂起指定的线程和恢复用SuspendThread()挂起的线程。Exit-Thread(DWORD dwExitC0de)用于线程终结自身的执行。

1.4 线程同步

线程之间经常要同时访问一些资源,因此对共享资源进行访问引起冲突是不可避免的。为了解决这种资源冲突问题,必须引入线程同步的概念。Win32 API 提供了多种同步控制对象来解决共享资源访问冲突,包括使用临界区、使用互斥对象、使用信号量、使用事件。

2 串口通信编程

目前,在Windows下编程时,常用的串口通信主要有3种方法:用MSC0mm 通信控件;用Windows API进行编程;使用第三方提供的一些串口通讯类进行编写。

(1)MSComm控件

利用MSComm控件会使编程快捷简单。然而,由于做了大量的封装,降低了编程的可控性和灵活性,因此在多线程多串口编程时,需要做许多复杂的处理。

(2)Windows API

利用Windows API编写串口程序,特别是复杂的多线程串口程序时,对于程序员的编程能力要求较高。除了需要程序员熟练掌握和使用众多的API函数,能编写很多底层代码之外,还必须熟悉线程的编程方法。

(3)第三方串口通信类

利用第三方的串口通信类进行串口编程时,既可以使编程效率高,程序可控性强,又比Window API编程简单,其中应用最多的第三方的串口通信类是CSerial-Port。它基于多线程,是一个Win32 API的打包类,对处理串口的Win32 API类进行了封装,借助这个类可以很方便地对串口进行操作,容易实现多线程的串口通信,编写的程序在Windows 98/NT/2000/XP操作系统下可很好地运行。

比较3种串口通信方式,可以发现使用第三方串口通信类CSerialPort是实现Windows下多线程串口编程的较好选择。

3 多线程编程技术在GPS数据采集系统中的应用

3.1 GPS导航系统功能分析

GPS导航是通过GPS定位技术实时给出用户所在的位置,这就要求需要实时接收来自GPS接收机串口的定位数据,在实时监视串口的同时还需要进行数据存储、显示等,利用多线程串口通信技术将很好地解决这个问题。通过对GPS导航系统分析,将程序分成以下几个线程:

主线程:负责处理用户界面的消息处理,按照预定义流程调度其他线程处理数据。

串口监视线程:监视串口,采集数据并将数据保存到一个缓冲区。

入库线程:从缓冲区读取数据进行相应处理并将处理好的数据存入数据库。

显示线程:通过地图匹配算法将用户实时位置显示在电子地图上。

GPS导航系统框图如图1所示。

3.2 具体实现

系统首先对线程在相应的头文件中说明,然后在程序初始化时加入创建程序代码,这样创建后,线程就可以和主线程并发执行了。主线程、入库线程、显示线程与一般的编程处理相同,所以下面着重说明串口监视线程。

对串口的操作采用基于多线程编程的CSerialPort类,其工作流程如下:首先设置好串口参数,再开启串口监测工作线程。串口监测工作线程监测到串口接收到的数据流、控制事件或其他串口事件后,就以消息方式通知主程序,激发消息处理函数进行数据处理,这是对接收数据而言的;发送数据可直接向串口发送。应用程序流程如图2所示。

编程步骤如下:

(1)建立程序

建立一个基于单文档的MFC应用程序CSerial-PortTest,其他步骤保持缺省状态。

(2)添加类文件

将SerialPort.h和SerialPort.cpp两个类文件复制到工程文件夹中,用Project-Add to Project-Files命令将上述两个文件加入工程,并在任何要调用这个类的模块中加上#include SerialPort.h文件。

在视类头文件中定义串口类的对象:CSerialPortm_Port。

(3)人工增加串口消息响应函数OnCommunica-tion(WPARAM ch,LPARAM port)

首先在CSerialPortTestView.h中添加串口字符接收消息

WM_COMM_RXCHAR(串口接收缓冲区内有一个字符)的响应函数声明,即:

在主线程初始化串口后创建CommThread函数进入死循环,线程一直监视串口事件,当读串口事件发生,读取串口接收到的数据,向主线程发自定义消息WM_COMM RXCHAR,通知主线程在相应的消息响应函数中进行数据处理,当收到主线程的写串口命令时,将缓存中的数据写到串口。

(5)在OnCommunication()函数中进行数据处理每当串口接收缓冲区内有一个字符时,就产生一个WM COMM RXCHAR消息,触发OnCommunica—tion函数。这时就可以在函数中进行相应数据处理,提取出时间、经纬度、速度等定位的关键数据,然后将这些数据保存到数据库。

4 结语

串行通讯在通讯领域被广泛应用。利用基于多线程的第三方串VI通信类CSerialPort很好地解决了由于串口长时间占用CPU而引起的线程堵塞等问题,编程简单、方便、可移植性强,对于其他类型的串口通信问题均可采用。该程序由Microsoft Visual C++6.0编译,在Windows XP下运行通过。

北斗卫星导航系统在物联网中的应用

XINYU UNIVERSITY 公选课论文 (2012 届) 题目北斗卫星导航系统在物联网中的应用 二级学院数学与计算机科学学院 专业计算机网络技术 班级12计网班 学号 学生姓名 指导教师 北斗卫星导航系统在物联网中的应用 摘要 在讨论了北斗导航和物联网的技术发展现状的基础之上,分析了北斗导航在物联网中的应用,主要的热点应用领域包括导弹制导、环境监测、智能交通、无人工厂、现代物流、灾害预警 关键词:北斗导航;物联网;通信技术 Beidou satellite navigation system in the application of the Internet of things Abstract In the beidou navigation is discussed and the Internet of things technology development present situation, on the basis of analysis of the beidou navigation in the application of Internet of things, the

main application fields of the hot spot of missile guidance, environmental monitoring, intelligent transportation, modern logistics, disaster warning, no one factory Key words:Beidou navigation; The Internet of things; Communication technology 第一章引言 北斗导航是我国具有独立自主知识产权的技术,物联网技术是一门新兴技术,在日趋成熟的理论基础支撑下,北斗导航将更好地服务于物联网,推进生产力发展,更好地服务于国民经济和国防建设。在物联网技术中,信号需要对网络中的每个物体进行精准的导航和位置服务。北斗导航准确的定位、导航和授时功能可以更好地促进物联网技术的发展。 第二章技术发展现状 北斗导航是我国自行研制、自行建设、自行管理,具有完全自主知识产权的全球卫星导航系统。该系统工作在2491.75MHz的频率上,可向用户提供全天候、高精度的即时定位服务,定位精度可达到纳秒级,与GPS相当。系统建设目标是:建成独立自主、开放兼容、技术先进、稳定可靠的覆盖全球的北斗卫星导航系统,促进卫星导航产业链形成,形成完善的国家卫星导航应用产业支撑、推广和保障体系,推动卫星导航在国民经济社会各个行业的应用。 北斗导航是由太空的导航通信卫星、地面控制中心和用户终端三部分组成。组成北斗导航的三部分:太空段由5颗静止轨道卫星和

C语言串口通信助手代码

该程序全部由C写成没有C++ 更没用MFC 完全是自娱自乐给需要的人一个参考 #include "stdafx.h" #include #include "resource.h" #include "MainDlg.h" #include #include #include HANDLE hComm;//用于获取串口打开函数的返回值(句柄或错误值)OVERLAPPED m_ov; COMSTAT comstat; DWORD m_dwCommEvents;

TCHAR cRecs[200],cSends[100]; //接收字符串发送字符串 char j=0,*cCom; //接收用统计数据大小变量端口选择 BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); } return FALSE; } /*系统初始化函数*/ BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { HWND hwndCombo1=GetDlgItem(hwnd,IDC_COMBO1); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM1")); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM2"));

c语言串口通信范例

一个c语言的串口通信程序范例 分类:技术笔记 标签: c语言 串口通信 通信程序 it 最近接触一个项目,用HL-C1C激光位移传感器+易控组态软件完成生产线高度跳变检测,好久没有接触c c#,一些资料,找来做个记录,也许大家用的着 #include #include #include #include #define COM232 0x2f8 #define COMINT 0x0b #define MaxBufLen 500 #define Port8259 0x20 #define EofInt 0x20 static int comportaddr; static char intvectnum; static unsigned char maskb; static unsigned char Buffer[MaxBufLen]; static int CharsInBuf,CircIn,CircOut; static void (interrupt far *OldAsyncInt)();

static void interrupt far AsyncInt(void); void Init_COM(int ComPortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity) { unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0; f=(Baud/100); f=1152/f; High=f/256; Low=f-High*256; outp(ComPortAddr+3,0x80); outp(ComPortAddr,Low); outp(ComPortAddr+1,High); Data=(Data-5)|((Stop-1)*4); if(Parity==2) Data=Data|0x18; else if(Parity==1) Data=Data|0x8; outp(ComPortAddr+3,Data); outp(ComPortAddr+4,0x0a);

我国北斗卫星导航系统应用需求及效益分析_杨军

收稿日期:2004-05-12。 项目来源:国家自然科学基金资助项目(70271030)。 文章编号:1671-8860(2004)09-0775-04文献标识码:A 我国北斗卫星导航系统应用需求及效益分析 杨 军1 曹 冲1 (1 华中科技大学管理学院,武汉市珞喻璐1037号,430074) 摘 要:在介绍我国卫星导航系统应用概况的基础上,比较分析了北斗卫星导航系统民用的优势和劣势,对我国北斗卫星导航系统民用市场的用户数和产值进行了预测,并对其作了经济效益和社会效益分析。关键词:北斗卫星导航系统;市场预测;效益分析中图法分类号:P228.42 随着第三颗/北斗一号0导航定位卫星发射成功,它与前两颗/北斗一号0工作星组成了中国完整的卫星导航定位系统,确保全天候、全天时提供卫星导航信息,从而为我国今后卫星导航系统的发展打下了基础。它标志着中国已建立了完善的第一代卫星导航定位系统,对中国国民经济建设和国防建设的进一步发展将发挥重要的作用。/北斗一号0卫星导航系统现在已开始在军队使用,但目前民用的范围和深度还不是十分普遍,如果能加大卫星导航系统在民用上的步伐,将会有力推动我国卫星导航系统在各行各业的应用。本文介绍了我国卫星导航系统的应用概况,对我国卫星导航系统的民用市场进行了市场预测和效益分析 [1,2] 。 1 我国卫星导航系统应用概况 卫星导航技术在中国的应用与研究始于20世纪80年代中期,从90年代开始,随着GPS 从海湾战争后逐渐走向民用市场,特别是卫星导航系统在众多领域表现出的巨大优势与适应性,其中隐藏的巨大商机与诱人前景吸引大批公司纷纷涌入这一市场,大量技术人员纷纷研究这一课题,而通信技术与计算机技术又对卫星导航技术的应用推波助澜,以GPS 为核心的卫星导航定位技术应用在中国经过15a 左右的历程,正向更高层次、更广阔的领域发展。 中国卫星导航技术的应用领域十分广阔,传 统的测量应用及军工相关应用的比例正在逐年下降,已渗透到许多新的行业。现实的应用已经使卫星导航技术从专业化领域走向了大众化应用的广阔前景,这也使得卫星导航技术逐渐成为通信、互联网之后的第三个新的I T 增长点。 2 我国北斗卫星导航系统应用的市 场需求 经过对相关部门的调查,我国北斗卫星导航系统的市场需求体现在如下几方面[1,2]。 1)2003年前5个月,我国铁路的日均装车量为8.2万车,累计发送货物7.22亿吨,同比增长8%。铁路部门2002年铁路机车保有量为1万多台,基于铁路安全和运输安全保障体系的考虑,一直未采用GPS,而北斗卫星导航系统是我国自主知识产权的导航系统,具有定位、授时和双向短信功能,在铁路运输安全保障体系中具有其他定位手段无法替代的作用。 2)渔业船只20多万艘,海上渔业是我国卫星导航应用较早的领域,GPS 已经占领了比较大的市场。但由于受通信方式的限制,和陆地管理部门联系困难,而北斗系统则具有明显的优势。 3)根据2000年统计,我国运输部门在册登记运输车辆540多万辆,其中120万辆是客运车辆,420万辆是货运车辆。以长途运输为例,这是我国卫星导航系统在物流运输管理上能发挥重大作用的领域,其应用市场需求迫切,潜力巨大。从 第29卷第9期2004年9月武汉大学学报#信息科学版 Geomatics and Information Science of Wuhan Universi ty Vol.29No.9Sept.2004

单片机串口通信C程序及应用实例

一、程序代码 #include//该头文件可到https://www.wendangku.net/doc/4b2324709.html,网站下载#define uint unsigned int #define uchar unsigned char uchar indata[4]; uchar outdata[4]; uchar flag; static uchar temp1,temp2,temp3,temp; static uchar R_counter,T_counter; void system_initial(void); void initial_comm(void); void delay(uchar x); void uart_send(void); void read_Instatus(void); serial_contral(void); void main() { system_initial(); initial_comm(); while(1) { if(flag==1) { ES = 0; serial_contral(); ES = 1; flag = 0; } else read_Instatus(); } } void uart_send(void) { for(T_counter=0;T_counter<4;T_counter++) { SBUF = outdata[T_counter]; while(TI == 0);

TI = 0; } T_counter = 0; } uart_receive(void) interrupt 4 { if(RI) { RI = 0; indata[R_counter] = SBUF; R_counter++; if(R_counter>=4) { R_counter = 0; flag = 1; } } } void system_initial(void) { P1M1 = 0x00; P1M0 = 0xff; P1 = 0xff; //初始化为全部关闭 temp3 = 0x3f;//初始化temp3的值与六路输出的初始值保持一致 temp = 0xf0; R_counter = 0; T_counter = 0; } void initial_comm(void) { SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload PCON = 0x80; //波特率不加倍SMOD = 1 TH1 = 0xfa; //baud: 9600;fosc = 11.0596 IE = 0x90; // enable serial interrupt TR1 = 1; // timer 1 RI = 0; TI = 0; ES = 1; EA = 1; }

c语言串口通信范例

c语言串口通信范例 This manuscript was revised by the office on December 22, 2012

一个c语言的串口通信程序范例 标签:分类: 最近接触一个项目,用HL-C1C激光位移传感器+易控组态软件完成生产线高度跳变检测,好久没有接触c c#,一些资料,找来做个记录,也许大家用的着 #include <> #include <> #include <> #include <> #define COM232 0x2f8 #define COMINT 0x0b #define MaxBufLen 500 #define Port8259 0x20 #define EofInt 0x20

static int comportaddr; static char intvectnum; static unsigned char maskb; static unsigned char Buffer[MaxBufLen]; static int CharsInBuf,CircIn,CircOut; static void (interrupt far *OldAsyncInt)(); static void interrupt far AsyncInt(void); void Init_COM(int ComPortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity) { unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0; f=(Baud/100);

北斗卫星导航系统与应用综述

北斗卫星导航系统及应用综述 0引言 北斗卫星导航系统是中国自行研制的全球卫星定位与通信系统(BDS),是继美全球定位系统(GPS)和俄GLONASS之后第三个成熟的卫星导航系统。系统由空间端、地面端和用户端组成,可在全球围全天候、全天时为各类用户提供高精度、高可靠定位、导航、授时服务,并具短报文通信能力,已经初步具备区域导航、定位和授时能力,定位精度优于20m,授时精度优于100ns。2012年12月27日,北斗系统空间信号接口控制文件正式版正式公布,北斗导航业务正式对亚太地区提供无源定位、导航、授时服务。 1 北斗卫星导航系统基本信息介绍 中国在2003年完成了具有区域导航功能的北斗卫星导航试验系统,之后开始构建服务全球的北斗卫星导航系统,于2012年起向亚太大部分地区正式提供服务,并计划至2020年完成全球系统的构建。北斗卫星导航系统和美国全球定位系统、俄罗斯格洛纳斯系统及欧盟伽利略定位系统一起,是联合国卫星导航委员会已认定的供应商。 1.1 北斗卫星导航系统的定位原理 “北斗一号”卫星导航系统的定位原理与GPS系统不同,GPS采用的是被动式伪码单向测距三维导航,由用户设备独立解算自己的三维定位数据,而“北斗一号”卫星导航定位系统则采用主动式双向测距二维导航, 由地面中心控制系统解算供用户使用的三维定位数据。“北斗”卫星是中国“北斗”导航系统空间段组成部分,由两种基本形式的卫星组成,分别适应于GEO和MEO轨道。“北斗”导航卫星由卫星平台和有效载荷两部分组成。卫星平台由测控、数据管理、姿态与轨道控制、推进、热控、结构和供电等分系统组成。有效载荷包括导航分系统、天线分系统。GEO卫星还含有RDSS有效载荷。因此,“北斗”卫星为提供导航、通信、授时一体化业务创造了条件。“北斗”导航卫星分别在1559MH z~1610MH z、1200MH z~1300MH z两个频段各设计有两个粗码、两个精密测距码导航信号, 具有公开服务和授权服务两种服务模式[1]。 “北斗二号”导航卫星系统体制第二代导航卫星系统与第一代导航卫星系统在体制上的差别主要是: 第二代用户机可免发上行信号,不再依靠中心站电子高程图处理或由用户提供高程信息,而是通过直接接收卫星单程测距信号来自己定位, 系统的用户容量不受限制,并可提高用户位置隐蔽性。

C语言串口通信-源代码

#include #include #include #include #define COM232 0x2f8 #define COMINT 0x0b #define MaxBufLen 500 #define Port8259 0x20 #define EofInt 0x20 static int comportaddr; static char intvectnum; static unsigned char maskb; static unsigned char Buffer[MaxBufLen]; static int CharsInBuf,CircIn,CircOut; static void (interrupt far *OldAsyncInt)(); static void interrupt far AsyncInt(void); void Init_COM(int ComPortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity) { unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0; f=(Baud/100); f=1152/f; High=f/256; Low=f-High*256; outp(ComPortAddr+3,0x80); outp(ComPortAddr,Low); outp(ComPortAddr+1,High); Data=(Data-5)|((Stop-1)*4); if(Parity==2) Data=Data|0x18; else if(Parity==1) Data=Data|0x8; outp(ComPortAddr+3,Data);

北斗二号卫星导航系统介绍与应用.

北斗二号卫星导航系统介绍及应用 南京工业大学工业工程 北斗二号卫星导航系统是中国自行研制的全球卫星定位与通信系统(BDS ,是继美全球定位系统(GPS 和俄 GLONASS 之后第三个成熟的卫星导航系统。系统由空间端、地面端和用户端组成,可在全球范围内全天候、全天时为各类用户提供高精度、高可靠定位、导航、授时服务,并具短报文通信能力,已经初步具备区域导航、定位和授时能力,定位精度 10m ,授时精度优于 100ns 。 2012年 12月 27日,北斗二号系统空间信号接口控制文件正式版正式公布,北斗导航业务正式对亚太地区提供无源定位、导航、授时服务。 北斗二号卫星导航系统由空间端、地面端和用户端三部分组成。空间端包括 5颗静止轨道卫星和 30颗非静止轨道卫星。地面端包括主控站、注入站和监测站等若干个地面站。用户端由北斗用户终端以及与美国 GPS 、俄罗斯 GLONASS 、欧盟 GALILEO 等其他卫星导航系统兼容的终端组成。 北斗二号卫星导航系统是在北斗一号的基础上建设的卫星导航系统, 但其并不是北斗一号的简单延伸, 完整构成的北斗二号卫星导航系统是一个类似于 GPS 和GLONASS 的全球导航系统。 一.研发背景 1. 重要的战略意义 战略意义一:建设北斗卫星导航系统, 是提高我国国际地位的重要载体战略意义二:是促进和推动经济社会发展的强大动力。战略意义三:是推动我国信息化建设的重要保证。战略意义四:是应对重大自然灾害的生命保障。战略意义五:是增强武器效能,维护国家安全的根本命脉 v 战略意义七:是我国履行航天国家国际责任的需要。战略意义八:对提升中国航天的能力, 推动航天强国建设意义重大。 2. 北斗一号卫星导航系统及其不足

北斗卫星导航系统主要应用领域

北斗卫星导航系统主要应用领域 1、交通运输重点运输监控管理、公路基础设施、港口高精度实时定位调度监控; 2、海洋渔业船位监控、紧急救援、信息发布、渔船出入港管理; 3、水文监测多山地域水文测报信息的实时传输; 4、气象监测气象测报型北斗终端设备,大气监测预警系统应用解决方案; 5、森林防火定位、短报文通信; 6、通信时统开展北斗双向授时,研制出一体化卫星授时系统; 7、电力调度基于北斗的电力时间同步; 8、救灾减灾提供实时救灾指挥调度、应急通信、信息快速上报、共享; 9、军工领域定位导航;发射位置的快速定位;搜救、排雷定位等。 国家积极推动北斗民用化进程,一系列的鼓励政策,为北斗的应用发展提供了广阔的空间。北斗卫星导航系统解决了精准定位的问题,靠一个北斗终端就能走遍大江南北。北斗系统的定位服务将在未来智慧生活中发挥巨大作用。 如今的北斗卫星导航系统已成功应用于测绘、电信、水利、渔业、交通运输、森林防火、减灾救灾和公共安全等诸多领域,北斗卫星导航系统在使用中产生显着的经济效益和社会效益。 在气象行业,北斗卫星导航系统广泛应用于气象观测、灾害监测和气象信息的收集与发布,包括大气风向风速、水汽含量、海风海浪、雷电观测和预警等,极大提升气象观测、预报和灾害预警发布水平,增强气象领域防灾减灾能力。 中国海洋渔业水域面积300多万平方公里,现有渔船100多万艘、渔业人口2000多万,海洋渔业涉及渔民生命安全、国家海洋经济安全、海洋资源保护和海上主权维护,现已成为北斗民用规模最大的行业。北斗卫星海洋渔业安全生产信息服务系统的应用极大地保障了渔船的出海安全,巩固和发展了渔业生产,推动了“平安渔业”建设。以赴南沙生产作业的渔船为例。农业部南海区渔政局建立了“南沙渔船船位监控指挥管理系统”,系统建成后,监控中心能随时获知渔船方位,大大方便了相关职能部门对渔业生产的管理,实现看得见的管理调度。当渔民在海上遇险时,可以通过渔船上的卫星导航通信系统向监控中心发送遇险报告,监控中心收到报告时就可以根据卫星定位确定距离遇险渔船最近的船只,

全球卫星导航系统原理与应用

第六章全球卫星导航系统原理及应用 第一节卫星定位技术简介 一、概述 具有全球导航定位能力的卫星定位导航系统称为全球卫星导航系统,英文全称为Global Navigation Satellite System,简称为GNSS。目前已有的卫星导航系统包括美国的全球卫星定位系统(GPS)、俄罗斯的全球卫星导航系统GLONASS、正在发展研究的有欧盟的GALILEO系统、中国北斗卫星导航广域增强系统。 全球定位系统(GPS)是众多卫星导航系统之一,GPS是英文Navigation Satellite Timing and Ranging/Global Positioning System的字头缩写词NAVSTAR/GPS的简称。它的含义是:利用导航卫星进行测时和测距,以构成全球定位系统。GPS具有全能性、全球性、全天候、连续性和实时性的精密三维导航与定位功能,而且具有良好的抗干扰性和保密性。因此,GPS技术在大地测量、工程测量、航空摄影测量、海洋测量、城市测量等测绘领域得到了广泛的应用,在物探测量工作中广泛普及及应用。对于物理点的放样已经不再仅仅是采用测角和量距,而是借助GPS导航卫星信号来确定地面点的准确位置。 随着GLONASS系统、GALILEO系统以及中国的北斗系统逐步组网运营,综合各大导航系统的多星系统接收机逐步替代了先前的GPS定位的单一系统,其作业效率、定位精度、定位的稳定性与可靠性都得到了大幅度的改善。 二、卫星定位技术的发展 1957年10月4日,前苏联成功地发射了世界上第一颗人造地球卫星后,人们就开始利用卫星进行定位和导航的研究,人类的空间科学技术研究和应用跨入了一个崭新的时代,世界各国争相利用人造地球卫星为军事、经济和科学文化服务。同时,卫星定位技术在大地测量学的应用也取得了惊人的发展,迅速跨入了一个崭新的时代。 (一)早期的卫星定位技术 卫星定位技术是指人类利用人造地球卫星确定测站点位置的技术。卫星大地测量就是利用人造地球卫星为大地测量服务的一门学科。它的主要内容是在地面上观测人造地球卫星,通过测定卫星位置的方法,来解决大地测量任务,例如测定地面点的相对位置,测定地球的形状和大小等。 早期,人造地球卫星仅仅作为一种空间观测目标,由地面上的观测站对卫星的瞬间位置进行摄影测量,测定测站点至卫星的方向,建立卫星三角网。同时也可利用激光技术测定观测站至卫星的距离,建立卫星测距三角网。通过这两种观测方法,均可以实现地面点的定位,也能进行大陆同海岛的联测定位,解决了常规大地测量难以实现的远距离联测定位问题,这是常规定位技术望尘莫及的。 1966至1972年期间,美国国家大地测量局在英国和联邦德国测绘部门的协作下,用卫星三角测量方法测设了一个具有45个测站点的全球三角网,获得了±5m的点位精度。然而,

用C编写的RS232串口通信程序

void main() { delayms(100); init(); //初始化系统 delayms(100); init_wdt(); //初始化看门狗 while(1) { while(!RI_0) //是否收到数据 { clr_wdt(); } RI_0=0; //清除接收中断标志 buffer=S0BUF; if(buffer==0x5a) //检测祯头0 start0=1; if(buffer==0x54) //检测祯头1 start1=1; if(buffer==0x5a) //检测祯尾0 end0=1; if(buffer==0xfe) //检测祯尾1 end1=1; if((start0==1)&(start1==1)) { buff[i]=buffer; //从祯头1开始存储数据 i++; } if((end0==1)&(end1==1)) //是否已经接收祯尾 { count=i; //数据长度为count个 i=1; if((buff[2]==0x03)&(count==107)) //是否422指令 { buff[0]=0x5a; //重填祯头0 buff[count-4]=0; //校验和清零 for(k=2;k<(count-4);k++) //计算校验和 { buff[count-4]+=buff[k]; } for(k=0;k

S0BUF=buff[k]; while(!TI_0); //等待发送完成 TI_0=0; //清除发送中断标志 } reset(); } else if((buff[2]==0x05)&(count==7)) //是否AD测试指令 { sendad(); reset(); } else if((buff[2]==0x18)&(count==7)) //是否发送时序信号指令 { sendpaulse(); reset(); } else //如果接收错误,则恢复各标志位为初始状态以便下次接收 { reset(); } } } } void reset() { start0=0; //祯头祯尾标志位清零 start1=0; end0=0; end1=0; for(k=0;k

北斗卫星导航系统主要应用领域

北斗卫星导航系统主要 应用领域 Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

北斗卫星导航系统主要应用领域 1、交通运输重点运输监控管理、公路基础设施、港口高精度实时定位调度监控; 2、海洋渔业船位监控、紧急救援、信息发布、渔船出入港管理; 3、水文监测多山地域水文测报信息的实时传输; 4、气象监测气象测报型北斗终端设备,大气监测预警系统应用解决方案; 5、森林防火定位、短报文通信; 6、通信时统开展北斗双向授时,研制出一体化卫星授时系统; 7、电力调度基于北斗的电力时间同步; 8、救灾减灾提供实时救灾指挥调度、应急通信、信息快速上报、共享; 9、军工领域定位导航;发射位置的快速定位;搜救、排雷定位等。 国家积极推动北斗民用化进程,一系列的鼓励政策,为北斗的应用发展提供了广阔的空间。北斗卫星导航系统解决了精准定位的问题,靠一个北斗终端就能走遍大江南北。北斗系统的定位服务将在未来智慧生活中发挥巨大作用。 如今的北斗卫星导航系统已成功应用于测绘、电信、水利、渔业、交通运输、森林防火、减灾救灾和公共安全等诸多领域,北斗卫星导航系统在使用中产生显着的经济效益和社会效益。 在气象行业,北斗卫星导航系统广泛应用于气象观测、灾害监测和气象信息的收集与发布,包括大气风向风速、水汽含量、海风海浪、雷电观测和预警等,极大提升气象观测、预报和灾害预警发布水平,增强气象领域防灾减灾能力。 中国海洋渔业水域面积300多万平方公里,现有渔船100多万艘、渔业人口2000多万,海洋渔业涉及渔民生命安全、国家海洋经济安全、海洋资源保护和海上主权维护,现已成为北斗民用规模最大的行业。北斗卫星海洋渔业安全生产信息服务系统的应用极大地保障了渔船的出海安全,巩固和发展了渔业生产,推动了“平安渔业”建设。以赴南沙生产作业的渔船为例。农业部南海区渔政局建立了“南沙渔船船位监控指挥管理系统”,系统建成后,监控中心能随时获知渔船方位,大大方便了相关职能部门对渔业生产的管理,实现看得见的管理调度。当渔民在海上遇险时,可以通过渔船上的卫星导航通信系统向监控中心发送遇险报告,监控中心收到报告时就可以根据卫星定位确定距离遇险渔船最近的船只,并与之取得联系,组织搜救,从而大大提高了遇险渔民的获救率。

c语言串口通信范例

c语言串口通信范例标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]

一个c语言的串口通信程序范例 标签:分类: 最近接触一个项目,用HL-C1C激光位移传感器+易控组态软件完成生产线高度跳变检测,好久没有接触c c#,一些资料,找来做个记录,也许大家用的着 #include <> #include <> #include <> #include <> #define COM232 0x2f8 #define COMINT 0x0b #define MaxBufLen 500 #define Port8259 0x20 #define EofInt 0x20

static int comportaddr; static char intvectnum; static unsigned char maskb; static unsigned char Buffer[MaxBufLen]; static int CharsInBuf,CircIn,CircOut; static void (interrupt far *OldAsyncInt)(); static void interrupt far AsyncInt(void); void Init_COM(int ComPortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity) { unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0; ?

串口通信linux c语言实现

/*write*/ #include #include #include #include #include #include #define MAX_SIZE 30 void set_speed(int,int); int main(int argc,char **argv) { int fd; int flag; int write_num=0; struct termios term; speed_t baud_rate_i; speed_t baud_rate_o; char buff[MAX_SIZE]="hello,beautiful day!"; fd=open(argv[1],O_RDWR|O_NONBLOCK); if(fd<0) printf("open the COM1 error!\n"); else printf("open COM1 ok!\n"); flag=tcgetattr(fd,&term); baud_rate_i=cfgetispeed(&term); baud_rate_o=cfgetospeed(&term); printf("%d,%d\n",baud_rate_i,baud_rate_o); set_speed(fd,9600); flag=tcgetattr(fd,&term); baud_rate_i=cfgetispeed(&term); baud_rate_o=cfgetospeed(&term); printf("%d,%d\n",baud_rate_i,baud_rate_o); while(1) { buff[29]='\n'; write_num=write(fd,buff,sizeof(buff));

北斗卫星导航系统应用简析

北斗卫星导航系统应用简析 一、北斗卫星导航系统概述 1.1北斗卫星导航系统发展 中国北斗卫星导航系统(BeiDou Navigation Satellite System,BDS)是中国自行研制的全球卫星导航系统。是继美国全球定位系统(GPS)、俄罗斯格洛纳斯卫星导航系统(GLONASS)之后第三个成熟的卫星导航系统。北斗卫星导航系统(BDS)和美国GPS、俄罗斯GLONASS、欧盟GALILEO,是联合国卫星导航委员会已认定的供应商。 2012年12月27日,北斗系统空间信号接口控制文件正式版1.0正式公布,北斗导航业务正式对亚太地区提供无源定位、导航、授时服务。 2013年12月27日,北斗卫星导航系统正式提供区域服务一周年新闻发布会在国务院新闻办公室新闻发布厅召开,正式发布了《北斗系统公开服务性能规范(1.0版)》和《北斗系统空间信号接口控制文件(2.0版)》两个系统文件。 2014年11月23日,国际海事组织海上安全委员会审议通过了对北斗卫星导航系统认可的航行安全通函,这标志着北斗卫星导航系统正式成为全球无线电导航系统的组成部分,取得面向海事应用的国际合法地位。中国的卫星导航系统已获得国际海事组织的认可。 1.2北斗卫星导航系统构成 北斗卫星导航系统由空间段、地面段和用户段三部分组成,可在全球范围内全天候、全天时为各类用户提供高精度、高可靠定位、导航、授时服务,并具短报文通信能力,已经初步具备区域导航、定位和授时能力,定位精度10米,测速精度0.2米/秒,授时精度10纳秒。 1.3北斗导航系统特点 (1)开放性。北斗卫星导航系统的建设、发展和应用将对全世界开放,为全球用户提供高质量的免费服务,积极与世界各国开展广泛而深入的交流与合作,促进各卫星导航系统间的兼容与互操作,推动卫星导航技术与产业的发展。

北斗导航卫星系统的应用

北斗导航卫星系统的应用 北斗卫星导航系统投入使用,结束了长期单一依赖国外系统的历史,确立了我国在卫星导航领域的国际地位。长期以来,我国卫星导航应用基本被国外技术垄断,交通运输、电力调度、通信网络、金融系统等重要基础设施过分依赖GPS,风险巨大,后果严重。北斗卫星导航系统的建成,中国成为继美、俄之后,第三个拥有自主卫星导航系统的国家,打破了国外的封锁与垄断,结束了长期单一依赖国外系统的历史。通过五年的开拓实践,北斗导航已经在国防和经济社会建设中发挥显著效益,卫星导航受制于人的被动局面得到根本扭转。2007年,联合国有关机构正式确认北斗为全球卫星导航四大核心系统之一,“中国北斗”成为一块让世界关注、让中国骄傲的民族品牌。 北斗卫星导航系统开放民用,在国民经济重点领域成功推广,有力保障了经济社会建设发展。国家对北斗应用推广非常重视,国家发改委、科技部、国防科工局、农业部等有关部委给予热情指导,并支持安排了一批应用示范项目。目前,北斗导航已成功应用于水利水电、海洋渔业、交通运输、气象测报、国土测绘、减灾救灾和公共安全等领域,牵引促进了电子、通信、机械制造、地理信息等相关产业和信息服务业的发展,产生了显著的经济效益和社会效益。 北斗导航全面亮相抗震救灾,发挥了独特优势和不可替代作用,有效提高国家减灾救灾应急能力。在多种重大自然灾害和重大活动中,北斗卫星导航定位保障能力经历了全面检验。 1、监测交通的安全性 随着我国公路建设的飞速发展,高速公路边坡综合防护系统研究日益引起公路部门重视。有效的边坡综合防护系统,对于加固路基,提高使用寿命、降低维护费用都是十分有效的。对于大跨度桥梁,特别是跨海的桥梁,传统变形测量方法受到极大的限制,需要新的测试方法。 北斗卫星导航系统技术用于公路边坡(滑坡、崩塌)、桥梁变形监测,由于不受通视条件的限制,因而选点灵活,可以根据监测需要,将监测点布设在对变形体的形变比较敏感的特征点上,而且卫星导航定位系统静态相对定位具有很高的定位精度和较强的作业自动化程度,这些特点和优点使得卫星导航定位系统在公路边坡等地质灾害及桥梁变形监测中有着广阔的应用前景。 基于北斗卫星导航系统的大型桥梁安全监测系统可以监测桥梁锚锭处沉降、桥塔处变位偏移、桥身相对变形;监测桥梁在异常状况下(地震、台风、船只撞击等)的动力响应,并且可以通过实时观测,得出桥梁的固有动态特性的发展状况;通过北斗卫星导航系统测试得到的桥梁变形与动态数据,对桥梁的安全状况进行评估,并实施预报警。 2、中国时间保障电力畅通 电网是一个巨大的系统工程,要确保电厂、变电站的设备运转同步进行,必须首先要确保设备内部时钟的一致性。为了统一内部时钟,此前我国电力系统不得不把美国的GPS(全球定位系统)作为主要的授时手段,通过GPS 的民用频道向电力系统的电力自动化设备、微机监控系统、安全自动保护设备、故障及事件记录等智能设备提供授时信号,以实现电力系统的“同步”运行。 但是,这一做法也存在着巨大的隐患。电力工业的安全生产关系国家能源安全和国民经济命脉,一旦发生紧急事态,GPS信号关闭或调整,将引发我国电网系统的重大安全事故。目前,我国电网每年都有因GPS卫星授时不准而发生的事故,给国家带来了巨大的经济损失。 基于我国北斗导航系统研制成功并投入使用的“北斗电力全网时间同步管理系统”,结束了我国电力运行时间完

C语言实现串口通信

摘要: 本文说明了异步串行通信(RS-232)的工作方式,探讨了查询和中断两种软件接口利弊,并给出两种方式的C语言源程序的I/O通道之一,以最简单方式组成的串行双工线路只需两条信号线和一条公共地线,因此串行通信既有线路简单的优点同时也有它的缺点,即通信速率无法同并行通信相比,实际上EIA RS-232C在标准条件下的最大通信速率仅为20Kb/S。 尽管如此,大多数外设都提供了串行口接口,尤其在工业现场 RS-232C的应用更为常见。IBM PC及兼容机系列都有RS-232的适配器,操作系统也提供了编程接口,系统接口分为DOS功能调用和BIOS 功能调用两种:DOS INT 21H的03h和04h号功能调用为异步串行通信的接收和发送功能;而BIOS INT 14H有4组功能调用为串行通信服务,但DOS和BIOS功能调用都需握手信号,需数根信号线连接或彼此间互相短接,最为不便的是两者均为查询方式,不提供中断功能,难以实现高效率的通信程序,为此本文采用直接访问串行口硬件端口地址的方式,用C语言编写了串行通信查询和中断两种方式的接口程序。 1.串行口工作原理 微机串行通信采用EIA RS-232C标准,为单向不平衡传输方式,信号电平标准±12V,负逻辑,即逻辑1(MARKING)表示为信号电平-12V,逻辑0(SPACING)表示为信号电平12V,最大传送距离15米,最大传送速率19.6K波特,其传送序列如图1,平时线路保持为1,传送数据开始时,先送起始位(0),然后传8(或7,6,5)个数据位(0,1),

接着可传1位奇偶校验位,最后为1~2个停止位(1),由此可见,传送一个ASCII字符(7位),加上同步信号最少需9位数据位。 @@T8S12300.GIF;图1@@ 串行通信的工作相当复杂,一般采用专用芯片来协调处理串行数据的发送接收,称为通用异步发送/接收器(UART),以节省CPU的时间,提高程序运行效率,IBM PC系列采用8250 UART来处理串行通信。在BIOS数据区中的头8个字节为4个UART的端口首地址,但DOS 只支持2个串行口:COM1(基地址0040:0000H)和COM2(基地址0040:0002H)。8250 UART共有10个可编程的单字节寄存器,占用7个端口地址,复用地址通过读/写操作和线路控制寄存器的第7位来区分。这10个寄存器的具体功能如下: COM1(COM2) 寄存器 端口地址功能DLAB状态 3F8H(2F8H) 发送寄存器(写) 0 3F8H(2F8H) 接收寄存器(读) 0 3F8H(2F8H) 波特率因子低字节1 3F9H(2F9H) 波特率因子高字节1 3F9H(2F9H) 中断允许寄存器0 3FAH(2FAH) 中断标志寄存器 3FBH(2FBH) 线路控制寄存器 3FCH(2FCH) MODEM控制寄存器 3FDH(2FDH) 线路状态寄存器

相关文档
相关文档 最新文档