基于苏标Adas协议的主动安全平台搭建

2023-12-01 04:10

本文主要是介绍基于苏标Adas协议的主动安全平台搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前说过基于1078的视频监控平台,下面我们聊聊基于苏标Adas协议的主动安全平台。

苏标协议是对部标808协议的一种拓展,如果我们需要搭建苏标Adas主动安全平台,必须要先了解部标808的协议。了解过苏标协议的肯定明白,苏标是有个附件服务器的概念,其实这个附件服务器就是一个808的网关,然后根据苏标协议进行解析得到对应的报警图片,报警视频以及其他报警信息。

这个就是1078视频监控的实现效果截图(这块的知识点用到搭建1078部标流媒体服务器),测试环境并非是实际运行车辆,是自己在卡座上架的一台服务器。不用在意视频内容细节。

苏标Adas附件服务器就相对简单些。

当我们的808通讯网关接收到带有附件的报警或者事件信息后,需要向终端下发消息ID为:0x9208的附件上传指令,这个时候我们根据协议格式将附件服务器的IP与端后组包后发给设备,设备接收到0x9208的指令后就会同附件服务器建立tcp通讯,然后开始向附件服务器发送报警附件(图片,视频,bin文件等等)。

附件服务器就是一个需要加入苏标协议定义的消息ID的808网关。下面我将整个通讯流程用一个简单的图片描述出来:

虽然流程很粗糙,通讯机制大概就是这个意思。

界面效果展示:

除此之外还有最操蛋的报警配置(消息ID:0x8103),高级驾驶辅助系统报警参数都有几十个,这个指令组包的时候还是需要认真对待的,稍有不慎就可能漏掉些信息。

下面是我组包的部分代码,之前有对808其他指令组包,所以很多方法都是通用的:

 /// <summary>/// 主动安全Adas配置指令组装/// </summary>/// <param name="fAssetID"></param>/// <param name="adas"></param>/// <returns></returns>public string getAdasAlarmConfig(string fAssetID, MT_Combine_AdasAlarmADAS adas){string fContent = string.Empty;fContent += "010000F364";fContent += "38";fContent += Convert.ToString(adas.FAlarmSpeed, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FAlarmVoice, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FProactive, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FAPTime, 16).ToString().PadLeft(4, '0');fContent += Convert.ToString(adas.FAPDistance, 16).ToString().PadLeft(4, '0');fContent += Convert.ToString(adas.FSAPNumber, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FSAPTime, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FPResolution, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FVResolution, 16).ToString().PadLeft(2, '0');fContent += string.Format("{0:X}", Convert.ToInt32(adas.FAlarmID, 2)).PadLeft(8, '0');fContent += string.Format("{0:X}", Convert.ToInt32(adas.FEventID, 2)).PadLeft(8, '0');fContent += "00";//预留字段#region 障碍物报警配置fContent += Convert.ToString(adas.FOADistance, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FOACSpeed, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FOAVTime, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FOAPNumber, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FOAPTime, 16).ToString().PadLeft(2, '0');#endregion#region 频繁变道报警配置fContent += Convert.ToString(adas.FFLCTime, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFLCCount, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFLCSpeed, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFLCVTime, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFLCPNumber, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFLCPTime, 16).ToString().PadLeft(2, '0');#endregion#region 车道偏离报警配置fContent += Convert.ToString(adas.FLDSpeed, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FLDVTime, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FLDPNumber, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FLDPTime, 16).ToString().PadLeft(2, '0');#endregion#region 前向碰撞报警配置fContent += Convert.ToString(adas.FFCTime, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFCSpeed, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFCVTime, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFCPNumber, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFCPTime, 16).ToString().PadLeft(2, '0');#endregion#region 前向碰撞报警配置fContent += Convert.ToString(adas.FFCTime, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFCSpeed, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFCVTime, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFCPNumber, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FFCPTime, 16).ToString().PadLeft(2, '0');#endregion#region 行人碰撞报警配置fContent += Convert.ToString(adas.FPCTime, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FPCSpeed, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FPCVTime, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FPCPNumber, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FPCPTime, 16).ToString().PadLeft(2, '0');#endregion#region 车距监控报警配置fContent += Convert.ToString(adas.FVDMDistance, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FVDMSpeed, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FVDMVTime, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FVDMPNumber, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FVDMPTime, 16).ToString().PadLeft(2, '0');#endregion#region 道路标志识别配置fContent += Convert.ToString(adas.FRSPNumber, 16).ToString().PadLeft(2, '0');fContent += Convert.ToString(adas.FRSPTime, 16).ToString().PadLeft(2, '0');#endregionfContent += "00000000";//预留字段return combineInsContent(fContent.Length / 2, fAssetID, fContent, "8103");}

整个1078的视频+苏标Adas的集成历时两个多月,其中视频流媒体这块最麻烦也是最耗时的地方。目前算是整体功能性的东西已经完成。

这篇关于基于苏标Adas协议的主动安全平台搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_17486399/article/details/102781738
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/439735

相关文章

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

Spring Cloud GateWay搭建全过程

《SpringCloudGateWay搭建全过程》:本文主要介绍SpringCloudGateWay搭建全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Spring Cloud GateWay搭建1.搭建注册中心1.1添加依赖1.2 配置文件及启动类1.3 测

SpringBoot快速搭建TCP服务端和客户端全过程

《SpringBoot快速搭建TCP服务端和客户端全过程》:本文主要介绍SpringBoot快速搭建TCP服务端和客户端全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录TCPServerTCPClient总结由于工作需要,研究了SpringBoot搭建TCP通信的过程

Gradle下如何搭建SpringCloud分布式环境

《Gradle下如何搭建SpringCloud分布式环境》:本文主要介绍Gradle下如何搭建SpringCloud分布式环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Gradle下搭建SpringCloud分布式环境1.idea配置好gradle2.创建一个空的gr

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me