/// <summary> /// �]�wCMS��� /// </summary> /// <param name="devNames"></param> /// <returns></returns> protected override System.Collections.Hashtable setDisplay(RemoteInterface.HC.FetchDeviceData[] devNames, int maxSegId, MegType megType) { System.Collections.Hashtable displayht = new System.Collections.Hashtable(); List<object> outputs = new List<object>(); if (devNames == null || devNames.Length == 0) return displayht; foreach (RemoteInterface.HC.FetchDeviceData devName in devNames) { int distance = getDeviceDistance(devName.SegId, maxSegId); DevStartMile = devName.Mileage; DevLineID = devName.LineId; CMSDevName = devName.DevName; outputs = (List<object>)com.select(DBConnect.DataType.CmsCategory, Command.GetSelectCmd.getCMSCategory(Convert.ToInt32(DevRange["RULEID"]), (int)secType, devType.ToString(), distance, devName.DevName, megType.ToString(), ht["INC_LINEID"].ToString().Trim(),devName.Location,devName.LineId)); foreach (object obj in outputs) { List<object> output=new List<object>(); output.AddRange(new object[] { getPriority(), obj }); if (!displayht.Contains(devName.DevName)) displayht.Add(devName.DevName, output); else if (devName.Location == "L") { displayht[devName.DevName] = output; } } } return displayht; }
protected override System.Collections.Hashtable setDisplay(RemoteInterface.HC.FetchDeviceData[] devNames, int maxSegId, MegType megType) { System.Collections.Hashtable displayht = new System.Collections.Hashtable(); foreach (RemoteInterface.HC.FetchDeviceData dev in devNames) { if (!displayht.ContainsKey(dev.DevName)) { displayht.Add(dev.DevName, null); } } return displayht; }
/// <summary> /// �]�wCMS��� /// </summary> /// <param name="devNames"></param> /// <returns></returns> protected override System.Collections.Hashtable setDisplay(RemoteInterface.HC.FetchDeviceData[] devNames, int maxSegId, MegType megType) { System.Collections.Hashtable displayht = new System.Collections.Hashtable(); List<object> outputs = new List<object>(); if (devNames == null) return displayht; foreach (RemoteInterface.HC.FetchDeviceData devName in devNames) { int distance = getDeviceDistance(devName.SegId, maxSegId); outputs = (List<object>)com.select(DBConnect.DataType.CmsCategory, Command.GetSelectCmd.getCMSCategory(Convert.ToInt32(DevRange["RULEID"]), (int)secType, devType.ToString(), distance, devName.DevName, megType.ToString(), ht["INC_LINEID"].ToString().Trim())); foreach (object obj in outputs) { List<object> output=new List<object>(); output.AddRange(new object[] { getPriority(), obj }); displayht.Add(devName.DevName, output); } } return displayht; }
protected override System.Collections.Hashtable setDisplay(RemoteInterface.HC.FetchDeviceData[] devNames, int maxSegId, MegType megType) { if (tunnel == null) return null; com.select(DBConnect.DataType.Tunnel, Command.GetSelectCmd.getTunnelData(tunnel.Id, tunnel.Direction)); System.Collections.Hashtable displayht = new System.Collections.Hashtable(); List<object> outputs = new List<object>(); if (devNames == null) return displayht; RemoteInterface.HC.I_HC_FWIS hobj = EasyClient.getHost(); //����:0, ��:2, ��:1 ��:3 , ��:4 //int laneCount = Convert.ToInt32(ht["LANE_COUNT"]); int laneCount = 2; byte[] laneNearMeg = getBlockageMessage(laneCount, ht["INC_BLOCKAGE"].ToString()); //���D�Ƽg����2���D byte[] laneMiddleMeg = new byte[laneCount]; if (laneNearMeg[0] == (byte)LCSLight.down && laneNearMeg[1] == (byte)LCSLight.forbid) { laneMiddleMeg[0] = laneNearMeg[0]; laneMiddleMeg[1] = (byte)LCSLight.leftDown; } else if (laneNearMeg[0] == 2 && laneNearMeg[1] == 1) { laneMiddleMeg[0] = (byte)LCSLight.rightDown; laneMiddleMeg[1] = laneNearMeg[1]; } else { laneMiddleMeg = laneNearMeg; } for (int i = 0; i < laneCount; i++) { if (isReturnFlash) laneMiddleMeg[i] += 4; if (isEventFlash) laneNearMeg[i] += 4; } for(int i=0;i<devNames.Length;i++) { System.Data.DataSet DS = hobj.getSendDs("LCS", "set_ctl_sign"); DS.Tables[0].Rows[0]["sign_cnt"] = Convert.ToByte(laneCount); byte CommInside = 0; byte CommOutside = 0; if (i < n_device) { CommInside=laneMiddleMeg[0]; CommOutside = laneMiddleMeg[1]; } else { CommInside = laneNearMeg[0]; CommOutside = laneNearMeg[1]; } //�����D System.Data.DataRow DShow = DS.Tables[1].NewRow(); DShow["sign_no"] = Convert.ToByte(0); DShow["sign_status"] = CommInside; DS.Tables[1].Rows.Add(DShow); //�~���D DShow = DS.Tables[1].NewRow(); DShow["sign_no"] = Convert.ToByte(1); DShow["sign_status"] = CommOutside; DS.Tables[1].Rows.Add(DShow); DS.AcceptChanges(); List<object> output = new List<object>(); output.AddRange(new object[] { getPriority(), new RemoteInterface.HC.LCSOutputData(DS) }); displayht.Add(devNames[i].DevName, output); } return displayht; }
/// <summary> /// �]�w�ѭԨƥ���ܤ��e /// </summary> /// <param name="devNames">�n��ܤ��]��</param> /// <param name="maxSegId">�̻���q���s�X</param> /// <returns>�]�ƹ�I���e</returns> protected virtual System.Collections.Hashtable setWEADisplay(RemoteInterface.HC.FetchDeviceData[] devNames, int maxSegId) { megType = getNongeneralMsgType(degree, Convert.ToInt32(ht["INC_CONGESTION"])); //this.serMeg.setServerMeg(string.Format("�ƥ�T�����A:{0}", megType.ToString())); return setDisplay(devNames, maxSegId, megType); }
/// <summary> /// �]�w�@��ƥ���ܤ��e /// </summary> /// <param name="devNames">�n��ܤ��]��</param> /// <param name="maxSegId">�̻���q���s�X</param> /// <returns>�]�ƹ�I���e</returns> protected virtual System.Collections.Hashtable setGENDisplay(RemoteInterface.HC.FetchDeviceData[] devNames, int maxSegId,string direction) { int unit_Start = findUnitSection(Convert.ToInt32(ht["FROM_MILEPOST1"]), direction); megType = getGeneralMsgType(degree, Convert.ToInt32(ht["INC_CONGESTION"]), unit_Start,direction); //this.serMeg.setServerMeg(string.Format("�ƥ�T�����A:{0}", megType.ToString())); return setDisplay(devNames, maxSegId, megType); }
/// <summary> /// �]�w�Ҧ���ܤ��e /// </summary> /// <param name="devNames">�n��ܤ��]��</param> /// <param name="maxSegId">�̻���q���s�X</param> /// <param name="megType">���o�@��ƥ�T�����A</param> /// <returns>�]�ƹ�I���e</returns> protected virtual System.Collections.Hashtable setDisplay(RemoteInterface.HC.FetchDeviceData[] devNames, int maxSegId, MegType megType) { return null; }
protected override System.Collections.Hashtable setDisplay(RemoteInterface.HC.FetchDeviceData[] devNames, int maxSegId, MegType megType) { System.Collections.Hashtable displayht = new System.Collections.Hashtable(); //if (devNames.Length == 0||Math.Abs(devNames[0].Mileage - int.Parse(ht["FROM_MILEPOST1"].ToString())) > getValidRangle()) return displayht; //List<object> outputs = new List<object>(); if (devNames == null || devNames.Length == 0) return displayht; RemoteInterface.HC.I_HC_FWIS hobj = EasyClient.getHost(); com.select(DBConnect.DataType.CSLS, Command.GetSelectCmd.getSectionSpeed(ht["ORIGINAL_INC_LOCATION"].ToString())); int ColNum; if (type == CategoryType.GEN) { switch (degree) { case Degree.L: ColNum = 1; break; case Degree.M: ColNum = 2; break; case Degree.H: ColNum = 3; break; case Degree.S: ColNum = 4; break; default: ColNum = 1; break; } } else { ColNum = Convert.ToInt32(ht["INC_CONGESTION"]); } string cmd = string.Format("Select SuggesSpeeD{0} From {1}.{2} csls,{1}.{3} rule where AlarmClass = {4} and csls.RuleID = rule.RuleID and rule.RUNING = 'Y';" , ColNum, RSPGlobal.GlobaSchema, DBConnect.DB2TableName.tblRSPCSLSSpeed, DBConnect.DB2TableName.tblRSPRule, ht["INC_NAME"]); System.Data.DataTable DT = com.Select(cmd); if (DT != null && DT.Rows.Count > 0) { maxSpeed = Convert.ToInt32(DT.Rows[0][0]); if (maxSpeed == -1) { return displayht; } } cmd = string.Format("Select * from {0}.{1} csls,{0}.{2} rule where csls.RuleID = rule.ruleid and rule.runing = 'Y' and SuggesSpeed = {3};" , RSPGlobal.GlobaSchema, DBConnect.DB2TableName.tblIIPCSLSParam, DBConnect.DB2TableName.tblRSPRule, maxSpeed); DT = com.Select(cmd); if (DT.Rows.Count < 1) { throw new Exception("not Mapping CSLS Speed"); } System.Data.DataRow dr = DT.Rows[0]; List<int> SpeedList = new List<int>(); SpeedList.Add(Convert.ToInt32(dr[UPStream1])); SpeedList.Add(Convert.ToInt32(dr[UPStream2])); SpeedList.Add(Convert.ToInt32(dr[UPStream3])); SpeedList.Add(Convert.ToInt32(dr[UPStream4])); SpeedList.Add(Convert.ToInt32(dr[UPStream5])); range = Convert.ToInt32(dr[RangerLimit]) * 1000; int i = 0; int SetSpped = 90; int SectionMaxSpeed = 90; if (devNames.Length > 0) { cmd = string.Format("Select sec.MaxSpeed From {0}.{1} sec, {0}.{2} cfg where sec.sectionid = cfg.sectionID and cfg.DeviceName = '{3}';" , RSPGlobal.GlobaSchema, DBConnect.DB2TableName.tblGroupSection, DBConnect.DB2TableName.tblDeviceConfig, devNames[0].DevName); DT = com.Select(cmd); if (DT.Rows.Count > 0) { SectionMaxSpeed = (int)DT.Rows[0][0]; } } for (int j = 0; j < devNames.Length;j++ ) { if (maxSegId != 99 && (int)ht["INC_NAME"] == 31 && ((devNames[j].Mileage > Convert.ToInt32(ht["FROM_MILEPOST1"]) && devNames[j].Mileage < Convert.ToInt32(ht["TO_MILEPOST1"])) ||(devNames[j].Mileage < Convert.ToInt32(ht["FROM_MILEPOST1"]) && devNames[j].Mileage > Convert.ToInt32(ht["TO_MILEPOST1"])) )) { SetSpped = 255;//���� } else if (devNames[j].Location == "D")//�U�� { cmd = string.Format("Select sec.MaxSpeed From {0}.{1} sec, {0}.{2} cfg where sec.sectionid = cfg.sectionID and cfg.DeviceName = '{3}';" , RSPGlobal.GlobaSchema, DBConnect.DB2TableName.tblGroupSection, DBConnect.DB2TableName.tblDeviceConfig, devNames[j].DevName); DT = com.Select(cmd); if (DT.Rows.Count > 0) { SetSpped = (int)DT.Rows[0][0]; } } else { if (maxSegId != -99 && ((j == 0 && (Math.Abs(devNames[j].Mileage - Convert.ToInt32(ht["FROM_MILEPOST1"])) > range && Math.Abs(devNames[j].Mileage - Convert.ToInt32(ht["TO_MILEPOST1"])) > range)) || (j > 0 && devNames[j-1].Location != "D" && Math.Abs(devNames[j].Mileage - devNames[j - 1].Mileage) > range))) break; if (maxSegId == -99) //�d�� �̧C�t�� { SetSpped = SpeedList[0]; } else //�d��~ { if (i >= SpeedList.Count || SpeedList[i].Equals(-1)) { break; } else { if (SectionMaxSpeed < SpeedList[i]) SetSpped = SectionMaxSpeed; else SetSpped = SpeedList[i]; } } i++; } System.Data.DataSet DS = hobj.getSendDs("CSLS", "set_speed"); DS.Tables[0].Rows[0]["speed"] = SetSpped; DS.AcceptChanges(); List<object> output = new List<object>(); output.AddRange(new object[] { SetSpped / 10, new RemoteInterface.HC.CSLSOutputData(DS) }); if (!displayht.Contains(devNames[j].DevName)) { displayht.Add(devNames[j].DevName, output); } } #region OLD Function //if (maxSegId == -99) //{ // foreach (RemoteInterface.HC.FetchDeviceData devName in devNames) // { // System.Data.DataSet DS = hobj.getSendDs("CSLS", "set_speed"); // if (devName.minSpd > minSpeed) // DS.Tables[0].Rows[0]["speed"] = devName.minSpd; //�t�� // else // DS.Tables[0].Rows[0]["speed"] = minSpeed; //�t�� // DS.AcceptChanges(); // List<object> output = new List<object>(); // output.AddRange(new object[] { (int)(Convert.ToInt32(DS.Tables[0].Rows[0]["speed"]) / 10), new RemoteInterface.HC.CSLSOutputData(DS) }); // displayht.Add(devName.DevName, output); // } //} //else //{ // int speed = minSpeed - decrease; // foreach (RemoteInterface.HC.FetchDeviceData devName in devNames) // { // System.Data.DataSet DS = hobj.getSendDs("CSLS", "set_speed"); // if (range == -1) // { // if (speed < maxSpeed) speed += decrease; // if (devName.maxSpd >= speed) // DS.Tables[0].Rows[0]["speed"] = speed; //�t�� // else // DS.Tables[0].Rows[0]["speed"] = devName.maxSpd; // } // else // { // if (devName.SegId < range) // { // if (devName.maxSpd >= speed) // { // if (speed < maxSpeed) speed += decrease; // DS.Tables[0].Rows[0]["speed"] = speed; //�t�� // } // else // DS.Tables[0].Rows[0]["speed"] = devName.maxSpd; // } // else // { // if (devName.maxSpd >= speed) // { // DS.Tables[0].Rows[0]["speed"] = maxSpeed; //�t�� // } // else // DS.Tables[0].Rows[0]["speed"] = devName.maxSpd; // } // } // DS.AcceptChanges(); // List<object> output = new List<object>(); // output.AddRange(new object[] { (int)(Convert.ToInt32(DS.Tables[0].Rows[0]["speed"]) / 10), new RemoteInterface.HC.CSLSOutputData(DS) }); // displayht.Add(devName.DevName, output); // } //} #endregion return displayht; }
protected override System.Collections.Hashtable setDisplay(RemoteInterface.HC.FetchDeviceData[] devNames, int maxSegId, MegType megType) { System.Collections.Hashtable displayht = new System.Collections.Hashtable(); int mile_s = Convert.ToInt32(ht["FROM_MILEPOST1"]); int mile_e = Convert.ToInt32(ht["TO_MILEPOST1"]); if (devNames == null) return displayht; if (tunnel == null && devNames != null && devNames.Length>0) { tunnel = TunnelData.getBuilder().tunList.Find(new EventObj(devNames[0].LineId, devNames[0].Direction, devNames[0].Mileage)); } if (tunnel == null && mile_s != mile_e) { for (int i = 1; i < devNames.Length; i++) { tunnel = TunnelData.getBuilder().tunList.Find(new EventObj(devNames[i].LineId, devNames[i].Direction, devNames[i].Mileage)); if (tunnel != null) break; } } if (tunnel == null) return displayht; com.select(DBConnect.DataType.Tunnel, Command.GetSelectCmd.getTunnelData(tunnel.Id, tunnel.Direction)); List<object> outputs = new List<object>(); if (devNames == null || devNames.Length == 0) return displayht; RemoteInterface.HC.I_HC_FWIS hobj = EasyClient.getHost(); //string direction = Convert.ToString(ht["INC_DIRECTION"]).Trim(); //����:0, ��:2, ��:1 ��:3 , ��:4 //int laneCount = Convert.ToInt32(ht["LANE_COUNT"]); int laneCount = 2; byte[] laneNearMeg = getBlockageMessage(laneCount, ht["INC_BLOCKAGE"].ToString()); //���D�Ƽg����2���D byte[] laneMiddleMeg = new byte[laneCount]; if (laneNearMeg[0] == (byte)LCSLight.down && laneNearMeg[1] == (byte)LCSLight.forbid) { laneMiddleMeg[0] = laneNearMeg[0]; laneMiddleMeg[1] = (byte)LCSLight.leftDown; } else if (laneNearMeg[0] == 2 && laneNearMeg[1] == 1) { laneMiddleMeg[0] = (byte)LCSLight.rightDown; laneMiddleMeg[1] = laneNearMeg[1]; } else { laneMiddleMeg = laneNearMeg; } for (int i = 0; i < laneCount; i++) { if (isReturnFlash) laneMiddleMeg[i] += 4; else if (isEventFlash) laneNearMeg[i] += 4; } bool UpOne = false; int segID =0; if (devNames.Length > 0) segID = devNames[devNames.Length -1].SegId; for (int i = devNames.Length-1; i >= 0; i--) { if (UpOne) break; System.Data.DataSet DS = hobj.getSendDs("LCS", "set_ctl_sign"); DS.Tables[0].Rows[0]["sign_cnt"] = Convert.ToByte(laneCount); byte CommInside = 0; byte CommOutside = 0; if (type == CategoryType.OBS) { if (UpDown(tunnel.StartMileage, devNames[i].Mileage, devNames[i].Direction)) { CommInside = laneNearMeg[0]; CommOutside = laneNearMeg[1]; } else { CommInside = laneMiddleMeg[0]; CommOutside = laneMiddleMeg[1]; UpOne = true; } } else { if (laneNearMeg[0] % 4 == (byte)LCSLight.forbid && laneNearMeg[1] % 4 == (byte)LCSLight.forbid) { if (devNames[i].SegId != segID) break; if (UpDown(mile_s, devNames[i].Mileage,devNames[i].Direction)) { //CommInside = (byte)LCSLight.down; //CommOutside = (byte)LCSLight.down; CommInside = laneNearMeg[0]; CommOutside = laneNearMeg[1]; } else { CommInside = laneNearMeg[0]; CommOutside = laneNearMeg[1]; } } else { if (UpDown(mile_s, devNames[i].Mileage, devNames[i].Direction)) { //CommInside = (byte)LCSLight.down; //CommOutside = (byte)LCSLight.down; CommInside = laneNearMeg[0]; CommOutside = laneNearMeg[1]; } else if (UpDown(tunnel.StartMileage, devNames[i].Mileage, devNames[i].Direction)) { //if (i == 0 || (tunnel.UpstreamLocation != null && UpDown(devNames[i - 1].Mileage, tunnel.UpstreamLocation.EndMileage, devNames[i -1].Direction))) if (i == 0 || (!UpDown(tunnel.StartMileage,devNames[i-1].Mileage,devNames[i].Direction) && Math.Abs(tunnel.StartMileage - devNames[i -1].Mileage) > 200)) { CommInside = laneMiddleMeg[0]; CommOutside = laneMiddleMeg[1]; UpOne = true; } else { CommInside = laneNearMeg[0]; CommOutside = laneNearMeg[1]; } } else { if (Math.Abs(tunnel.StartMileage - devNames[i].Mileage) < 200) { CommInside = laneMiddleMeg[0]; CommOutside = laneMiddleMeg[1]; UpOne = true; } else { break; } } } } //�����D System.Data.DataRow DShow = DS.Tables[1].NewRow(); DShow["sign_no"] = Convert.ToByte(0); DShow["sign_status"] = CommInside; DS.Tables[1].Rows.Add(DShow); //�~���D DShow = DS.Tables[1].NewRow(); DShow["sign_no"] = Convert.ToByte(1); DShow["sign_status"] = CommOutside; DS.Tables[1].Rows.Add(DShow); DS.AcceptChanges(); List<object> output = new List<object>(); output.AddRange(new object[] { getPriority(), new RemoteInterface.HC.LCSOutputData(DS) }); displayht.Add(devNames[i].DevName, output); } return displayht; }
public static ICommand getPriority(byte alarmclass,MegType type) { SelectCommand com = new SelectCommand(); com.FiledNames += string.Format(" * "); com.TblNames += string.Format(" {0}.{1} ", schema, DB2TableName.tblRspPriority); com.WhereCon += string.Format(" alarmclass={0} and level='{1}' ",alarmclass,type.ToString()); return com; }
protected override System.Collections.Hashtable setDisplay(RemoteInterface.HC.FetchDeviceData[] devNames, int maxSegId, MegType megType) { string cmd = string.Format("Select mas.maslane1,mas.masLane2,mas.MASLANE3,cfg.g_code_id_new from {0}.{1} mas , {0}.{2} rule ,{0}.{4} cfg " + " where mas.ALARMCLASS = {3} and mas.RULEID = rule.RULEID and rule.RUNING = 'Y' and cfg.alarmclass = mas.alarmclass;" , RSPGlobal.GlobaSchema, DBConnect.DB2TableName.tblRSPDefaultMessMAS, DBConnect.DB2TableName.tblRSPRule, ht["INC_NAME"],DBConnect.DB2TableName.tblSysAlarmConfig); System.Data.DataTable DT = com.Select(cmd); if (DT == null || DT.Rows.Count == 0) return null; System.Data.DataRow MASdr = DT.Rows[0]; int g_code_id = (int)MASdr[3]; System.Collections.Hashtable displayht = new System.Collections.Hashtable(); //if (devNames.Length == 0||Math.Abs(devNames[0].Mileage - int.Parse(ht["FROM_MILEPOST1"].ToString())) > getValidRangle()) return displayht; //List<object> outputs = new List<object>(); if (devNames == null || devNames.Length == 0) return displayht; RemoteInterface.HC.I_HC_FWIS hobj = EasyClient.getHost(); com.select(DBConnect.DataType.CSLS, Command.GetSelectCmd.getSectionSpeed(ht["ORIGINAL_INC_LOCATION"].ToString())); int ColNum; if (type == CategoryType.GEN) { switch (degree) { case Degree.L: ColNum = 1; break; case Degree.M: ColNum = 2; break; case Degree.H: ColNum = 3; break; case Degree.S: ColNum = 4; break; default: ColNum = 1; break; } } else { ColNum = Convert.ToInt32(ht["INC_CONGESTION"]); } cmd = string.Format("Select SuggesSpeeD{0} From {1}.{2} csls,{1}.{3} rule where AlarmClass = {4} and csls.RuleID = rule.RuleID and rule.RUNING = 'Y';" , ColNum, RSPGlobal.GlobaSchema, DBConnect.DB2TableName.tblRSPCSLSSpeed, DBConnect.DB2TableName.tblRSPRule, ht["INC_NAME"]); DT = com.Select(cmd); if (DT != null && DT.Rows.Count > 0) { maxSpeed = Convert.ToInt32(DT.Rows[0][0]); } cmd = string.Format("Select * from {0}.{1} csls,{0}.{2} rule where csls.RuleID = rule.ruleid and rule.runing = 'Y' and SuggesSpeed = {3};" , RSPGlobal.GlobaSchema, DBConnect.DB2TableName.tblIIPCSLSParam, DBConnect.DB2TableName.tblRSPRule, maxSpeed); DT = com.Select(cmd); if (DT.Rows.Count < 1) { throw new Exception("not Mapping CSLS Speed"); } System.Data.DataRow dr = DT.Rows[0]; List<int> SpeedList = new List<int>(); SpeedList.Add(Convert.ToInt32(dr[UPStream1])); SpeedList.Add(Convert.ToInt32(dr[UPStream2])); SpeedList.Add(Convert.ToInt32(dr[UPStream3])); SpeedList.Add(Convert.ToInt32(dr[UPStream4])); SpeedList.Add(Convert.ToInt32(dr[UPStream5])); range = Convert.ToInt32(dr[RangerLimit]) * 1000; int i = 0; int SetSpped = 90; for (int j = 0; j < devNames.Length;j++ ) { if (devNames[j].Location == "D") { cmd = string.Format("Select sec.MaxSpeed From {0}.{1} sec, {0}.{2} cfg where sec.sectionid = cfg.sectionID and cfg.DeviceName = '{3}';" , RSPGlobal.GlobaSchema, DBConnect.DB2TableName.tblGroupSection, DBConnect.DB2TableName.tblDeviceConfig, devNames[j].DevName); DT = com.Select(cmd); if (DT.Rows.Count > 0) { SetSpped = (int)DT.Rows[0][0]; } } else { if (maxSegId != -99 && ((j == 0 && (Math.Abs(devNames[j].Mileage - Convert.ToInt32(ht["FROM_MILEPOST1"])) > range && Math.Abs(devNames[j].Mileage - Convert.ToInt32(ht["TO_MILEPOST1"])) > range)) || (j > 0 && devNames[j - 1].Location != "D" && Math.Abs(devNames[j].Mileage - devNames[j - 1].Mileage) > range))) break; if (maxSegId == -99) //範圍內 最低速限 { SetSpped = SpeedList[0]; } else //範圍外 { if (i >= SpeedList.Count || SpeedList[i].Equals(-1)) { break; } else { SetSpped = SpeedList[i]; } } i++; } byte[] landObj = new byte[] { 1, 2, 3 }; object[] obj = new object[3]; for (int k = 0; k < 3; k++) { if (MASdr[k].Equals("S")) { obj[k] = SetSpped; } else { obj[k] = new RemoteInterface.HC.CMSOutputData(0, g_code_id, 0, string.Empty, new byte[] { }); } } //List<object> output = new List<object>(); //output.AddRange(new object[] { SetSpped / 10, new RemoteInterface.HC.MASOutputData(landObj,obj) }); displayht.Add(devNames[j].DevName, new RemoteInterface.HC.MASOutputData(landObj, obj)); } return displayht; }
protected override System.Collections.Hashtable setDisplay(RemoteInterface.HC.FetchDeviceData[] devNames, int maxSegId, MegType megType) { System.Collections.Hashtable displayht = new System.Collections.Hashtable(); if (devNames.Length == 0||Math.Abs(devNames[0].Mileage - int.Parse(ht["FROM_MILEPOST1"].ToString())) > getValidRangle()) return displayht; List<object> outputs = new List<object>(); if (devNames == null) return displayht; RemoteInterface.HC.I_HC_FWIS hobj = EasyClient.getHost(); com.select(DBConnect.DataType.CSLS, Command.GetSelectCmd.getSectionSpeed(ht["INC_LOCATION"].ToString())); if (maxSegId == -99) { foreach (RemoteInterface.HC.FetchDeviceData devName in devNames) { System.Data.DataSet DS = hobj.getSendDs("CSLS", "set_speed"); if (devName.minSpd > minSpeed) DS.Tables[0].Rows[0]["speed"] = devName.minSpd; //�t�� else DS.Tables[0].Rows[0]["speed"] = minSpeed; //�t�� DS.AcceptChanges(); List<object> output = new List<object>(); output.AddRange(new object[] { (int)(Convert.ToInt32(DS.Tables[0].Rows[0]["speed"]) / 10), new RemoteInterface.HC.CSLSOutputData(DS) }); displayht.Add(devName.DevName, output); } } else { int speed = minSpeed - decrease; foreach (RemoteInterface.HC.FetchDeviceData devName in devNames) { System.Data.DataSet DS = hobj.getSendDs("CSLS", "set_speed"); if (range == -1) { if (speed < maxSpeed) speed += decrease; if (devName.maxSpd >= speed) DS.Tables[0].Rows[0]["speed"] = speed; //�t�� else DS.Tables[0].Rows[0]["speed"] = devName.maxSpd; } else { if (devName.SegId < range) { if (devName.maxSpd >= speed) { if (speed < maxSpeed) speed += decrease; DS.Tables[0].Rows[0]["speed"] = speed; //�t�� } else DS.Tables[0].Rows[0]["speed"] = devName.maxSpd; } else { if (devName.maxSpd >= speed) { DS.Tables[0].Rows[0]["speed"] = maxSpeed; //�t�� } else DS.Tables[0].Rows[0]["speed"] = devName.maxSpd; } } DS.AcceptChanges(); List<object> output = new List<object>(); output.AddRange(new object[] { (int)(Convert.ToInt32(DS.Tables[0].Rows[0]["speed"]) / 10), new RemoteInterface.HC.CSLSOutputData(DS) }); displayht.Add(devName.DevName, output); } } return displayht; }