using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace FLY.Simulation.Flyad7 { public class DriveManage { ISimDrive mSimDrive; private void Init(ISimDrive simDrive) { mSimDrive = simDrive; } public void OnPoll() { } class ORDER_Runto { ISimDrive mSimDrive; enum STATE { Init, Forw, Backw, Idle } STATE State; public void Start(int targetpos) { State = STATE.Init; } public int TargetPos; public void OnPoll() { if (mSimDrive is SimDrive_VF0) { SimDrive_VF0 vf0 = mSimDrive as SimDrive_VF0; switch (State) { case STATE.Init: { if (TargetPos > mSimDrive.Pos) { vf0.PIN_OUT_FORW = false; vf0.PIN_OUT_BACKW = true; State = STATE.Forw; } else if (TargetPos < mSimDrive.Pos) { vf0.PIN_OUT_FORW = true; vf0.PIN_OUT_BACKW = false; State = STATE.Backw; } else { vf0.PIN_OUT_FORW = true; vf0.PIN_OUT_BACKW = true; State = STATE.Idle; } } break; case STATE.Forw: { if (vf0.Pos >= TargetPos) { vf0.PIN_OUT_FORW = true; vf0.PIN_OUT_BACKW = true; State = STATE.Idle; } } break; case STATE.Backw: { if (vf0.Pos <= TargetPos) { vf0.PIN_OUT_FORW = true; vf0.PIN_OUT_BACKW = true; State = STATE.Idle; } } break; case STATE.Idle: break; } } } } } }