格式转换API
说明:
-
把
model
和util
包直接拷贝到项目里,InitParamHelper
类中,有以下工具方法 -
完整目录结构如下:
一、序列化
5.1 配置参数
5.1.2 系统参数
5.1.3 区域参数
5.1.5 路口参数(*)
5.1.6 信号机参数
5.1.7 信号灯组参数
5.1.8 检测器参数
5.1.9 车道参数
5.1.10 相位参数
public static string PhaseParamMessage2XML(string token,string seq ,List<PhaseParam> phaseParams)
//PhaseParam
public PhaseParam(string crossID, string phaseNo, string phaseName, string atrribute, LaneNoList laneNoList, PreDirList preDirList)
//LaneNoList
public LaneNoList(List<string> laneNo)
//PreDirList
public PreDirList(List<string> direction)
5.1.11 阶段参数
public static string StageParamMessage2XML(string token, string seq, List<StageParam> stageParams)
//stageParams
public StageParam(string crossID, string stageNo, string stageName, string attribute, string green, string redYellow, string yellow, string allRed, PhaseNoList phaseNoList)
//PhaseNoList
public PhaseNoList(List<string> phaseNo)
5.1.12 配时方案参(*)
public static string PlanParamMessage2XML(string token, string seq, List<PlanParam> planParams)
List<PlanParam> planParams
//PlanParam
public PlanParam(string crossID, string planNo, string cycleLen, string coordPhaseNo, string offSet, StageNoList stageNoList)
//StageNoList
public StageNoList(List<string> stageNo)
5.1.13 日计划配置信息(* 定制)
public static string DayPlanParamMessage2XML(string token, string seq, string crossID,string dayPlanNo, List<DayPlanPararm> dayPlanPararms)
dayPlanPararms
参数构造- 以一个
DayPlanParam
,两个TimeInterval
为例子
//List<DayPlanPararm> dayPlanPararms,以一个DayPlanParam,两个TimeInterval为例子
//先构建 dayPlanPararms
List<DayPlanPararm> dayPlanPararmlist = new List<DayPlanPararm>();
//创建timeintervallist
List<TimeInterval> timeIntervalList = new List<TimeInterval>();
//构建timeInterval1放入timeIntervalList集合中
//第一个TimeInterval
TimeInterval timeInterval1 = new TimeInterval(timeIntervalNo, startTime, endTime, planNo);
//第一个TimeInterval
TimeInterval timeInterval2 = new TimeInterval(timeIntervalNo, startTime, endTime, planNo);
//放入集合timeIntervalList中
timeIntervalList.Add(timeInterval1);
timeIntervalList.Add(timeInterval2);
//再将构建好的TimeInterval放入List<DayPlanPararm> dayPlanPararms中
DayPlanPararm dayPlanPararm = new DayPlanPararm(crossID,dayPlanNo,timeIntervalList);
dayPlanPararmlist.Add(dayPlanPararm);
//至此dayPlanPararmlist参数构建好了
5.1.14 调度表配置信息(* 定制)
5.2 运行信息
5.2.1 系统状态
5.2.2 区域状态
5.2.3 路口状态
5.2.4 信号机故障
5.2.5 路口控制方式
public static string CrossControlModel2XML(string crossId,string value,string objName,string id,string no)
5.2.6 路口周期(*)
5.2.7 路口阶段(*)
5.2.8 路口相位灯态
public static string CrossPhassLampStatus2Xml(string 路口编号,string 控制方式,string 控制方式,sting[] 相位灯态表)
5.2.9 路口控制方案
5.2.[5-6-7-9]合并方案
API:
public static string CrossMessage2XML(string token, string seq, string crossID, string controlMode, string planNo,string startTime, string curTime ,string lastCycleLen,string curCycleRemainLen,string lastStageNo,string lastStageLen ,string curStageNo,string curStageLen,string curStageRemainLen)
案例:
string xml=InitParamHelper.CrossMessage2XML("token", "seq", "crossID", "controlMode", "planNo", "startTime", "curTime", "lastCycle", "curCyckeRemain", "lastStageNo", "curStageNo", "curStageNo", "curStageLen","curStageRemainLen");
5.2.10 路口交通流数据
5.3 控制命令
5.3.1 配置参数及运行信息通知、查询命令
5.3.2 指定控制方式
5.3.3 指定控制方案
5.3.4 锁定交通流向(*)
5.3.5 解锁交通流向(*)
5.3.6 路口周期、阶段、相位灯态、交通流数据上传设置
5.3.7 临时(优化)方案设置(*)(定制)
5.3.8 交通流数据获取推送设置 (*)
5.3.9 路口故障推送设置 (*)
5.3.10 设置路口阶段配置(*定制)
5.3.11 设置路口方案配置(*定制)
5.3.12 设置日计划方案配置(*定制)
5.3.13 设置调度计划方案配置(*定制)
5.4 通信方式
5.5 对接计划安排:
登录
public static string LoginMessage2XML(string 用户名,string 密码)
心跳
public static string HeartBeat2XML(string token, string order, string name, string sDO_HeartBeat)
参数对照:
<Token>786d7a313233343536</Token>
<Operation order="X" name="notify">
<SDO_HeartBeat/>
</Operation>
超时请求
public static string TimeOut2XML(string token ,string 超时时间)
二、反序列化
public static Object Deserialize(string strXml, Type type)
案例:
将xml
文本中的token
与超时时间取出来
TimeOut.XML
<?xml version="1.0" encoding="utf - 8"?>
<Message>
<Version>1.0</Version>
<Token>123323</Token>
<From>
<Address>
<Sys>FICP</Sys>
<SubSys />
<Instance />
</Address>
</From>
<To>
<Address>
<Sys>TICP</Sys>
<SubSys />
<Instance />
</Address>
</To>
<Type>REQUEST</Type>
<Seq />
<Body>
<Operation Order="1" Name="Set">
<SDO_TimeOut>100</SDO_TimeOut>
</Operation>
</Body>
</Message>
从TimeOut.XML中取出token
- 每个
xml
文本需要选择与之对应的类 - 如:
TimeOut.XM
L与TimeOut
类对应
//取token与SDO_TimeOut
TimeOut timeOut = new TimeOut();
timeOut=(TimeOut)Classl2XMLHelper.Deserialize(xml, timeOut.GetType());
string SDO_TimeOut = timeOut.Body.Operation.SDO_TimeOut;
string token = timeOut.Token;
/取token与SDO_TimeOut
TimeOut timeOut = new TimeOut();
timeOut=(TimeOut)Classl2XMLHelper.Deserialize(xml, timeOut.GetType());
string SDO_TimeOut = timeOut.Body.Operation.SDO_TimeOut;
string token = timeOut.Token;
版本日志
-
1.3
相位改动
阶段改动
配时改动
-
1.2_部分5.1修复版本日志
1.修复了CrossParamMessage2XML参数错误
2.修复PreDirList==>PedDirList命名错误问题
3.PhaseParam==>所以相位都放在一个message中 -
1.2.1版本
Address类中
public string SubSys { get; set; }=0;
public string Instance { get; set; }=0;
改为
public string SubSys { get; set; }
public string SubSys { get; set; }增加 信号机参数API
public static string CrossParamMessage2XML(string token, string seq, string crossID,string crossName,string feature,string isKey, List<string> detIDList, List<string> laneNoList, List<string> phaseNoList, List<string> stageNoList, List<string> planNoList)