本项目为 JT/T808部标协议 终端模拟程序,通过模拟正常车辆的行驶轨迹、停留、报警触发等,可达到部标服务器的压力测试,以及业务数据处理(区域驶入驶出、超速、超时行驶等)的要求。后续还会继续加入 JT/T 1078 实时音视频等功能特性。最终目标是让模拟器更加可控,更加逼真。
注意:本项目正处于开发中,尚有很多不完善的地方,请谨慎使用。 另外,本项目直接使用百度地图所产生的坐标做行驶轨迹的模拟,所以在平台端再显示到地图上时,需要注意坐标系问题。
注意:目前使用的是JT/T808 2013版的协议,并且是按照5秒的时间间隔发送位置消息。
创建一条行驶线路,用于车辆模拟运行时的位置上报的轨迹点模拟,模拟车辆在行驶时,将会随机化轨迹点,确保每一次行驶时的轨迹点都不一样。创建线路时,可以设置行驶的最高、最低行驶速度,以及停留点,报警事件(尚未实现)等。
通过已经创建好的线路,创建临时的行驶行程任务,目前要填写的项多达五项(车牌号、终端ID、SIM卡号、服务器IP与端口),后面会简化并提供批量创建的功能用于压力测试。
待补充
待补充
通过继承AbstractDriveTask
实现的SimpleDriveTask
,是一个简易的终端模拟控制程序,项目使用 EventLoop 思路实现多线程多任务的处理流程管理,主要分为以下两大类: 事件回调 与 定时/延时任务 。
定义于 EventEnum
类中,主要是TCP连接状态和服务器端消息,细分如下:
上面的事件分类,只实现了三个,但是已经满足了绝大部分场合的需求,其它未实现的,有没有用都还不确定 ,有可能会在后续的实现过程中删除掉。
事件可能由多种条件触发,最终统一交由 EventDispatcher 进行调度,并由 LoopRunner 进行执行。特别需要注意的是,服务器端发送过来的消息,有特别的路由机制,因为主动下发的消息指令很多,不可能一一定义,所以我定义了以下的注解,用于对事件的进一步细节,如普通事件 connected 的监听如下代码:
@Listen(when = EventEnum.connected)
public void onConnected()
{
// to do something when connected to server
}
但是像 message_received 事件,如果由开发者另行路由,就有点太臃肿了,所以我为 @Listen
注解增加了 attachment 参数,用于进一步细分,如监听 0x8801 摄像头立即拍摄命令,可按以下方式实现:
@Listen(when = EventEnum.message_received, attachment = "8801")
public void onCameraCaptureCommand(JTT808Message msg)
{
// 完成抓拍并发送到服务器端的过程
// 注意,上面的方法名称没有要求,随便命名即可,attachment的值要是消息ID。
}
因为在分派 LoopRunner 时,是按照 AbstractDriveTask 的 hashcode 进行分配线程,所以每一个 AbstractDriveTask 的方法,除了 init() 和 startup 方法外,都是在同一个线程之中(包括定时/延时任务),大可不必担心线程安全问题。
目前提供了定时/延时任务的API,定时/延时任务的执行,也是由 LoopRunner 线程运行,它与上一章节的事件执行处于同一个线程之中,不需要关心线程安全问题,方法原型定义如下:
// 延时任务
/**
* 在milliseconds毫秒后执行Exectable
* @param executable 需要执行的任务
* @param milliseconds 等待的毫秒
*/
public final void executeAfter(Executable executable, int milliseconds);
// 定时重复执行的任务
/**
* 按照interval毫秒的间隔执行Exectable
* @param executable 需要执行的任务
* @param interval 间隔时间,单位毫秒
*/
public final void executeConstantly(Executable executable, int interval);
群号:808432702,欢迎入群,与一帮子做部标协议开发的小伙伴一起交流。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. Open source ecosystem
2. Collaboration, People, Software
3. Evaluation model