public void VehicleEnterSection(uctlNewVehicle vh, string address_id, double sec_dis
                                 , sc.ProtocolFormat.OHTMessage.DriveDirction driveDirction)
 {
     //vehicles.Add(vh);
     if (!dicVehicles.ContainsKey(address_id))
     {
         dicVehicles.Add(address_id, new List <uctlVehicle>());
     }
     // dicVehicles[address_id].Add(vh);
     vh.CurrentSecID = Section_ID;
     refreshVehicleLoaction(vh, sec_dis, driveDirction);
 }
        private void refreshVehicleLoaction(uctlNewVehicle vh, double sec_dis, sc.ProtocolFormat.OHTMessage.DriveDirction driveDirction)
        {
            //if (driveDirction == sc.ProtocolFormat.OHTMessage.DriveDirction.DriveDirReverse)
            //{
            //    if (RealDistance >= sec_dis)//確保不會一減 ,就變負的
            //        sec_dis = RealDistance - sec_dis;
            //    else
            //        sec_dis = 0;
            //}
            double distance_scale = 1;
            double distanceTemp   = 0;

            if (RealDistance > 10)
            {
                distance_scale = sec_dis / RealDistance;
            }
            else
            {
            }
            distanceTemp = Distance * distance_scale;

            int railInterval = 0;


            uctlRail matchRail        = findTheMatchingRail((int)distanceTemp, out railInterval);
            int      railInterval_Pix = (int)BCUtility.RealLengthToPixelsWidthByScale((double)railInterval);

            //int Location_X = 0;
            //int Location_Y = 0;

            KeyValuePair <uctlRail, E_RAIL_DIR> keyValuePairTemp = uctlRails.Where(keyValue => keyValue.Key == matchRail).SingleOrDefault();

            if (keyValuePairTemp.Equals(default(KeyValuePair <uctlRail, E_RAIL_DIR>)))
            {
                return;
            }
            E_RAIL_DIR railDIR = keyValuePairTemp.Value;

            //switch (RailDircetion)
            switch (railDIR)
            {
            case E_RAIL_DIR.F:
                WalkingForward(vh, distance_scale, matchRail, railInterval_Pix);
                break;

            case E_RAIL_DIR.R:
                ReverseWalking(vh, distance_scale, matchRail, railInterval_Pix);
                break;
            }
        }
Exemplo n.º 3
0
 public void VehicleEnterSection(uctlNewVehicle vh, string address_id, double sec_dis
                                 , sc.ProtocolFormat.OHTMessage.DriveDirction driveDirction)
 {
     vh.CurrentSecID = Section_ID;
     refreshVehicleLoaction(vh, sec_dis, driveDirction);
 }