基于苏标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协议的主动安全平台搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/439735

相关文章

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS