不仅仅是TCP/UDP网关。基于Spring Boot 2.x技术,将硬件接口的复杂对接转化为简单易用的接口和消息推送方式,具备设备管理、数据分析和消息推送等多种能力,可广泛应用于各种车辆监管场景和应用平台。
bartender作为本网关的接口服务,能够为车辆联网监管和部标标准的实现提供强有力的支持,助力车辆监管的智能化和规范化。
配置项 | 规格 |
---|---|
CPU内存 | 1w台设备以内2核4G |
硬盘 | 每100台设备1年20G |
操作系统 | Linux |
设备类型 | 协议 |
---|---|
康凯斯有线/OBD接电设备 | 康凯斯私有协议 |
奇果OBD设备 | 奇果私有协议 |
零一OBD设备 | 零一私有协议 |
车葫芦OBD设备 | 车葫芦私有协议 |
车易控行车记录仪 | JT808部标协议 |
合正行车记录仪 | 合正私有协议 |
新源润无线设备 | 新源润私有协议 |
ADAS设备 | JT1078部标协议 |
类别 | 报警项 |
---|---|
设备自带报警 | 电瓶拆除报警、非法拆除报警、震动报警、 风险地点报警、防劫持报警、开盖报警、 位移报警、伪基站报警 异常驾驶行为-疲劳/打电话/抽烟 |
平台判断报警 | 超速报警、进敏感区域报警、出敏感区域报警、 掉线报警、停车超时报警、分离报警、 出省报警、敏感区域停留报警、未进常用区域超时报警、 原地设防报警、进电力围栏报警、 出电子围栏报警、围栏内报警、围栏内停车超时报警 |
概念 | 定义 |
---|---|
报文 | 硬件上行数据,例如定位、心跳、报警、OBD等信息。 |
服务器时间 | 平台接收报文时间。 |
定位时间 | 报文中GPS定位时间,即硬件使用自身GPS模块获得的GPS定位时间。 |
在线/离线状态 | 平台收到硬件最后一条报文10分钟后,更新设备状态为离线。上报报文期间为在线。 |
停车/行驶状态 | 时速大于5视为行驶,否则停车。离线时设备速度为0。 |
里程 | 根据上报定位点,按GPS时间排序,累加定位点间距获得。 |
停留点 | 从开始停车到行驶的一段时间视为停留点,停留时长最少10分钟。 |
轨迹 | 将历史定位数据按定位时间排序绘制的路线。 |
轨迹分段 | 将轨迹分隔为多个行程段。分隔条件默认为,点间距超过10米,定位时间间距超过15分钟。 |
初次使用时我们会提供调用终端的鉴权信息client_id
和client_secret
,调用鉴权接口可获取凭证access_token
,之后便可开始使用其他业务API接口。
鉴权接口 POST /oauth/token
此接口返回的token_type和access_token使用' '
(空格)连接后,在请求header中携带调用业务接口。
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
grant_type | query | string | 是 | 固定参数 |
client_id | query | string | 是 | 客户端ID |
client_secret | query | string | 是 | 客户端密钥 |
成功返回示例
{
"access_token": "this_is_an_example_access_token",
"token_type": "bearer",
"expires_in": 40528,
"scope": "all",
"jti": "483fb3cf-e63b-415d-93bd-bdd4f12a8213"
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» access_token | string | true | none | 鉴权token | none |
» token_type | string | true | none | 鉴权类型 | none |
» expires_in | integer | true | none | 多少秒后token过期 | none |
系统搭建完成后,若使用第三方硬件,需将硬件配置到对应协议的TCP(UDP)上线端口,若使用我司设备,可联系客服配置。 如图所示,首先添加设备以确保设备上线,若需接收设备实时定位和告警,需开启事件推送。
支持相同型号批量添加,使用默认参数,可绕过鉴权。
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
clientId | query | string | 是 | 客户端ID |
categoryNo | query | string | 是 | 设备型号,长名称 |
deviceNums | query | string | 是 | 设备号,批量使用逗号间隔 |
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
若设备导入时没有指定启用状态,则默认启用,不需要批量启用。若导入时指定设备初始状态为停用,则需要使用该接口控制,停用时,不推送定位状态、事件信息。
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
devices | query | string | 是 | 需要启停的设备编号,多个时用逗号间隔 |
isEnable | query | string | 是 | 0:启用 1:停用 |
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
运维使用查询设备最新定位状态,当设备号不存在时提示“设备号不存在”
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
deviceNum | query | string | 是 | none |
成功返回示例
{
"code": 200,
"data": {
"categoryNo": "DO90",
"categoryNoShort": "DO90",
"createTime": "2022-07-27 05:12:00",
"deviceNum": "868120250375836",
"direction": 28,
"directionName": "东北",
"gpsTime": "2022-07-26 16:14:49",
"isMoving": 0,
"latBd": 29.116056,
"latGc": 29.109734,
"lngBd": 119.654767,
"lngGc": 119.648356,
"locMode": 9,
"satCount": 15,
"speed": 0,
"startTimeMovingStop": "2022-06-23 07:45:53",
"startTimeOnOffLine": "2022-07-27 05:12:00",
"wifiFlag": 1
},
"message": "",
"success": true
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» data | object | true | none | none | |
»» categoryNo | string | true | none | 设备类型 | none |
»» categoryNoShort | string | true | none | 设备类型短名 | none |
»» createTime | string | true | none | 创建时间 | none |
»» deviceNum | string | true | none | 设备号 | none |
»» direction | integer | true | none | 方向 | none |
»» directionName | string | true | none | 方向描述 | none |
»» gpsTime | string | true | none | 定位时间 | none |
»» isMoving | integer | true | none | 行驶中状态 行驶:1;停车:0 | none |
»» latBd | number | true | none | 百度坐标纬度 | none |
»» latGc | number | true | none | 高德坐标纬度 | none |
»» lngBd | number | true | none | 百度坐标经度 | none |
»» lngGc | number | true | none | 高德坐标经度 | none |
»» locMode | integer | true | none | 定位方式 0-GPS;1-LBS单基站;2-LBS多基站;5-WIFI;9-不定位 | none |
»» satCount | integer | true | none | 卫星数 卫星个数 | none |
»» speed | integer | true | none | 速度 | none |
»» startTimeMovingStop | string | true | none | 行驶/停车 + 起始时刻 年月日 时分秒 | none |
»» startTimeOnOffLine | string | true | none | 在线/离线起始时刻 年月日 时分秒 | none |
»» wifiFlag | integer | true | none | 设备类型 1:有线 | none |
» message | string | true | none | none | |
» success | boolean | true | none | none |
可根据各端口实时在线数量粗略判断端口健康状态,当某端口车辆较少或当前时间大部分车辆在停车状态,则不足以判断端口健康情况。可参考以下SQL query查询在线数量。
SELECT COUNT(p.ALM_OFFLINE = 0 AND (p.ISSLEEPING=0 OR p.ISSLEEPING IS NULL) OR NULL) AS '在线总数'
FROM dd_new.position p;
SELECT p.TAG as '端口',
COUNT(p.ALM_OFFLINE = 0 AND (p.ISSLEEPING=0 OR p.ISSLEEPING IS NULL) OR NULL) AS '在线数',
COUNT(*) AS '累计上线数量',
MAX(p.CREATE_TIME) AS '最新服务时间',
NOW() AS '当前时间',
IF(TIMESTAMPDIFF(SECOND,MAX(p.CREATE_TIME),NOW()) <= SECOND(3), '正常',
IF(COUNT(p.ALM_OFFLINE = 0 AND (p.ISSLEEPING=0 OR p.ISSLEEPING IS NULL) OR NULL) < 100, '设备较少', '异常')) AS '端口健康' -- 该阈值需根据活跃车辆数进行调整
FROM dd_new.position p
GROUP BY p.TAG
ORDER BY MAX(p.CREATE_TIME);
定位更新回调接收不到该设备数据,或超过30分钟没有新数据。
运维建议:
车辆于地图定位与实际位置有偏差。
运维建议:
AV=V
,说明设备搜索不到卫星信号,GPS定位失败,建议开车移动到信号较好的位置。c# Bartender打印开发详解 Ericw_wang 于 2020-06-26 20:56:25 发布 2482 收藏 5 分类专栏: Bartender 文章标签: c# 版权 Bartender 专栏收录该内容 2 篇文章0 订阅 订阅专栏 Bartender 打印开发遇到的坑 打印的写法,目前知道两种实现 1.引用 插入Bartender 自带dll,写法如下: (一般在安装SDK里
图层是占据特定平面的对象或对象组。图层编辑器中经常使用图层来创建包含重叠对象的合成图像。在BarTender中,图层可以包含要包含在同一平面上的一个或多个文本对象,图像,条形码,形状和/或线条。即使两层上的物体不直接重叠,每层也会占据不同的平面。 >>下载最新版BarTender<< 使用图层工具箱 在BarTender中,图层主要通过“工具箱”的“图层”窗格进行管理。此窗格用于创建,编辑和维护图
The BarTender engine could not be started cd ...bartender路径 bartend.exe /register 打印注意事项 打印份数字段给定
物联网时代的智能交通,全面涵盖了信息采集,动态诱导,智能管控等环节,交通模式会更加安全,节能和高效率。 我们能够提供: 更加耐高温和腐蚀的SIM卡片,适应各种复杂外部环境; 区分用户使用的不同场景和应用,分别进行控制和计费; 提供高速,覆盖范围广,稳定,安全的4G网络; 支持4G VoLTE语音技术。
1.自我介绍 2.手撕,最长回文子串 3.问做的时间最久的项目 4.项目难点,如何解决 5.c/c++八股(static,死锁) 6.反问技术栈 面试官说蔚来看中的是应届生的潜力,,,, 总体体验还行,面试官也挺随和的,看着比较年轻。就是手撕的时候用c++不会写,最后用python完成的。
#面经#6个左右的面试官,没有一个开摄像头。先宣读个人承诺书,然后自我介绍,然后个人情况提问,然后专业技术提问。 个人情况提问:父母是否支持来长春发展,是否有另一半,成绩情况,是否有挂科,面过其他什么公司,目前拿到了什么公司的offer。 专业提问就问了下简历上的项目。面试时长5-10分钟。
1. TCP和UDP的区别 2. 计算机网络的七层协议 3. 针对微信的测试用例 4. python常用函数 5. 你用过哪些python的包? 6. 用过哪些测试工具 7. 测试工作最重要的是啥工作? 8. python的字典怎么转成json? 9. 你的研究方向是啥? 总体时长不到20分钟,一道代码都没问,感觉肯定是kpi。#面经#
这个程序用是开心网争车位的外挂,完全模拟IE操作。 主程序下载 Downlod SVN source svn checkout http://kaixinparking.googlecode.com/svn/trunk/ kaixinparking-read-only 运行该程序前,需要名字为match.yaml的配置文件,文件内容说明如下: --- 以下是match.yaml文件---- log
再次更新,二面挂了😅我感觉双方还聊得挺好,嵌入式也不是后端吧。 —————————— 没想到给了二面,更新在下面了。 —————————— 华五本硕。leet才刷了80题,很菜。 ————718一面———— 上来就做题,一题给20分钟。 1 第一题leet88,easy。 两个有序数组合并,数组1预留了数组2的空间。 acm模式,输入写好了才跟我说不用写输入输出,直接写class solutio
今早十一点面的滴滴,是我的第一次面试。其实我觉得我这水平,我挺惊讶竟然能够让我去面试的,估计是hr在冲业绩了。(笑的)还有就是确实问的比较简单,面试小哥也很温柔,但是我也是真的菜QAQ因为没有录音,所以我也记得不是很清楚了。 一、非技术环节 开场自我介绍,开始疯狂输出自己的技术栈,项目亮点,其中涉及自己使用什么技术解决了什么问题,从之前一小个月的寒假实习里面学到了什么东西。 面试官提问:1.怎样学
9.1一面 一、实习 & 项目 Q:KM算法中的权重?动态变化? A:str / 接驾时长 Q:自注意力机制? 二、概率题 Q:30次都不点击的概率是0.936,问10次中至少点击一次的概率? A:1-(1-0.936)^(1/3) 三、算法题 不含重复字符的最小子串长度 9.14二面 一、问项目:实习相关 约40min Q:如何评估仿真系统的准确性? A:校准 二、深度相关问题 Q:平台补贴场景