车辆监控

微风送爽,五月份的天气还是有几分寒意。待在家里,套上双袜子,也不是十分冷。外面飘着雨,哗啦啦的拍打着窗户,春雨告诉我夏天就要到了。我爱夏天,因为这是女人的舞台,我只不过是一个看客。夏天常备各种凉茶。

车辆监控这个项目是我进入A公司第一个,网络通信没有开发过,是个挑战。项目简单来说是通过平台可以实时了解车辆的位置/油耗/方位。车辆是否越界/偏离。这需要每辆车安装车载设备,当然这个设备和我无关。我只需提供一个IP地址,两个端口号。

网络通信包括两部分:TCP通信/UDP通信,泛泛来说各有优缺。比如TCP通信,它是稳定的,当客户端与服务端建立连接后,其之间的每条通信都能确保收到。它也有缺点,当发送信息频率过快,或者网络不稳定时,会出现粘包(多条数据)/残包(数据片段)现象。这时就需要我们主动拆分或拼接数据。

UDP是不稳定的,客户端或服务端执着的发送数据,它们对结果不管不问,数据是否被对方接收是未知的。这时我们需要一个机制,当客户端发送数据,服务端收到必须予以回复表示“我已接受到数据”。相较于TCP通信,它的每条数据都是独立的。

车辆监控项目是一个B/S架构的网站,它运行在iis上。它即是web开发,我们不得不面对这些问题。

1.页面程序与通信服务是怎样的关系?

当然页面程序与通信服务是相对独立的,它们唯一关联的是同应用于一个Appliction中。在实际运行中,通信服务接收数据,解析到数据库。页面程序从数据库中读取,它们时候不打交道。

2.通信服务我写在哪里,页面程序与通信服务如果相互调用?

既然通信服务相对独立,同时也为了适用性,我将通信封装在单独的程序集中,这个程序集暴露出两个类TCPServer/UDPServer
。web项目中引用,打开Global.asax文件并写下这样一些代码。


public class Global : System.Web.HttpApplication
{
TCPServer tcp;
UDPServer udp;
protected void Application_Start(object sender, EventArgs e)
{
//TCP通信服务启动
tcp=new TCPServer();
tcp.Start();

//UDP通信服务启动
udp=new UDPServer();
udp.Start();
}

protected void Application_End(object sender, EventArgs e)
{
tcp.Stop();
udp.Stop();
}
}

通信服务开始运行,端口开始监听。

但是我如何通过点击web页面的某个按钮来给客户端发信息呢?

想发送信息必须知道给谁发,这里我们必须知道客户端的IP和端口号。所以我们必须维护一个客户端列表,要实现这个功能我必须新建类,客户端的类(Client)。客户端类包括两个对象,一。客户端key,用以识别客户端。二。Socket对象,用以存储客户端的socket。做完这些后,我在TCPServer中新建静态对象List<Client>
ClientList。每当新的客户端连接时就Add到泛型对象中。失去连接时,移除。

就这样我们可以通过下面下面代码为指定客户端发送信息。

TCPServer.ClientList.Find(t=>t.Key=="****").Socket.Send(byte[]);

那么在通信服务程序集中要如何写,会遇到那些难题呢?

TCP通信需要做的是监听端口/接收数据,这俩种操作都是无限循环,所以必须使用多线程,不能让程序停在某一处。异步处理,C#已经给我提供很好的方法。我们只要写写业务逻辑就好。对于客户端断开连接,我是用try
catch捕获异常来确定的。

对于如何识别客户端,我们前面提到了key。客户端每次发送数据时,数据中都会包含类似key的唯一识别码,我们用这个来识别是那一客户端。

对于如何处理粘包/残包,客户端的数据中会用特定的字符来标明头和尾,我们用这个来拆分数据。客户端发送的数据有明确的排列格式,这种特定的格式,我们称之为协议。

UDP通信难点在于异步通信,还有收到数据立即返回答复,问题不大。

至此项目核心解说完毕,当初异步通信是最让人头痛的地方,修改很多遍,而且当时没有现成的工具。现在好了,可以百度“TCP调试助手”下载测试。

车辆监控

时间: 2024-07-29 13:01:33

车辆监控的相关文章

基于JT/T808协议的车辆监控平台架构方案

技术支持QQ:78772895 1.车载终端协议网关采用mina/netty+spring架构,独立于其他应用,主要负责维护接入终端的tcp链接.上行以及下行消息的解码.编码.流量控制,黑白名单等安全控制,网关同时支持交通部JT/T808-2011.JT/T808-2013两个版本全部的808协议,网关应用提供二次开发接口,支持以插件形式协议扩展而不需要改动任何原有代码.接入网关采用json消息通过MQ消息队列与业务平台进行交互,支持ActiveMQ和RabbitMQ,能够无缝接入各种异构系统.

数采仪在油田车辆监控方案中的应用

石油的采集点往往处于偏僻.广阔的地带,这就使得石油采集过程具有疏散.地广.环境恶劣.流动性大的特点.石油的运输.油井的清洗.工作人员的接送.油井数据采集都需要大量的车辆进行工作,而且日常工作产生的油耗,不同的司机操作也会产生巨大的差别.由于油田地域广阔,采用传统的方法很难对车辆.司机的工作情况进行实时的监测,无法实时获取相关数据,导致相关管理十分的困难. 油田车辆监控系统主要用来对油田工作车辆进行改造,使其具有远程数据传输的功能,采用数采仪对作业车辆洗井作业数据.运油车辆进行监控.汽车GPS实时

交通部第五号令对gps监控平台运营商影响重大,进一步加强北斗部标标准推进工作

交通部下文件强制要求货车卡车客车年检上牌装北斗一体机的通知,让货车车主蒙圈了.根据国家交通部2014年5号令的规定,半挂牵引车以及载货汽车(总质量为12吨及以上)必须于2015年底以前全部安装符合要求的北斗定位车载终端,并接入交通部认可的"道路货运车辆平台",否则不予发放或者验审<道路运输证>. 近期,由交通运输部.公安部.国家安全生产监督管理总局发布的<道路运输车辆动态监督管理办法>(2014年第5号令)是道路运输行业的最新政策,对卫星导航产业而言无疑是一种兴

GPS部标监控平台的功能设计(一)-功能列表

在2011年交通部的796标准推出后,随着各地交管部门的硬性要求,大多数的GPS监控系统或者车辆管理系统或者物流管理系统,无论是旧的,还是新开发的,都必须要以796标准为基础蓝本,首先要满足796的要求,然后在此基础上增加行业应用的个性化要求,如物流运输车辆非常关心的油耗管理,冷链运输非常关心温度控制等等. 所以开发GPS平台的时候,必须要首先阅读交通部的jt/t 796 , jt/t808和jt/t809的文档,以此作为自己的功能设计的需求来源,行业需求或用户需求是排在后面的.很多开发团队做出

基于java spring框架开发部标1078视频监控平台精华文章索引

部标1078视频监控平台,是一个庞杂的工程,涵盖了多层协议,部标jt808,jt809,jt1078,苏标Adas协议等,多个平台功能标准,部标796标准,部标1077标准和苏标主动安全标准,视频方面的协议有RTSP, RTMP, RTP, 音视频编码有H.264, AAC,  726,711等,消化这些协议和功能标准就已经是需要一个较长的周期了,而构建一个视频平台的架构,也是比较复杂的,后端不仅有网关,还要有流媒体服务器,转发服务器,播放器,RTSP或RTMP服务器等多个服务器模块,需要的技术

基于矢量数据的逆地理编码功能实现

地理编码和逆地理编码概述 地理编码,是指将大家熟悉的地址文字描述,转换为经纬度,如输入某某省.某某市.某某路,在地图上根据经纬度定位到输入的地图上的某个点,直观的显示所在位置.逆地理编码是指将经纬度转化为大家都能看懂文字描述.一般人对经纬度数字没什么概念,转化为文字描述后,更容易让人理解.在现在大量的人员定位,车辆监控中,除了在地图上直观的展示人员或者车辆的地图位置外,很多的系统也提供了人员或者车辆所在位置的文字描述功能. 目前大部分系统和项目开发中,逆地理编码功能的实现,都是调用主流厂商提供的

SQL Server 2008空间数据应用系列一:空间信息基础

转自:http://www.cnblogs.com/beniao/archive/2011/01/18/1933412.html Microsoft SQL Server 2008 提供了全面性的空间支持,可让组织通过具空间功能的应用程序来无缝地取用.使用及扩展以位置为基础的数据,最后可协助用户做出更好的决策.空间分析是一项非常复杂的工作,包含一系列学术内容:地理.数学.天文.图形等.虽然在使用SQL Server 2008的空间特性中不必要深入研究关于地理.数学.天文以及图形等学科,但如果你想

与腾讯百度&quot;背道而驰&quot; 高德能在车联网领域破局吗?

本周一,高德举办了一场媒体沟通会.会前看到其宣传海报上“高德汽车媒体沟通会”几个字,我不禁诧异,“高德也要造车?”而后,细想到高德属于阿里巴巴集团,而后者在今年5月已成立阿里汽车,基本已否定了高德造车的可能.再者,高德新掌门人俞永福从去年开始,即定下了“三年内无商业化”.“专注导航服务”的目标,造车应该也不是他现阶段要做的.那么,高德汽车事业部是要做什么呢? 据了解,此次高德汽车事业部的首次公开亮相,首先表达了高德入局汽车互联网化的决心,即在“一个高德,一屏多云”的战略下发力车载导航.高德汽车事

在云上搭建大规模实时数据流处理系统

在大数据时代,数据规模变得越来越大.由于数据的增长速度和非结构化的特性,常用的软硬件工具已无法在用户可容忍的时间内对数据进行采集.管理 和处理.本文主要介绍如何在阿里云上使用Kafka和Storm搭建大规模消息分发和实时数据流处理系统,以及这个过程中主要遭遇的一些挑战.实践主要立 足建立一套汽车状态实时监控系统,可以在阿里云上立即进行部署. 一.实时大数据处理利器——Storm和Kafka 大数据时代,随着可获取数据的渠道增多,比如常见的电子商务.网络.传感器的数据流.太空数据等,数据规模也变得