コード例 #1
0
        static void Main()
        {
#if _TEST
            InterfaceFake.Eth32 dev = new InterfaceFake.Eth32();
#else
            Eth32 dev = new Eth32();
#endif
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm(dev));
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: ad5mqesj/DishControl
        public MainForm(Eth32 dev)
        {
            //set up UI control attributes (auto-generated)
            InitializeComponent();

            this.dev = dev;

            //setup for jog button handler thread, triggering event
            jogEvent          = new ManualResetEvent(false);
            this.buttonThread = new Thread(buttonThreadHandler);
            this.buttonThread.Start();

            //try to read config file - open config dialog if not found
            string configFile = Application.StartupPath + "\\dishConfig.xml";

            if (File.Exists(configFile))
            {
                settings      = configFileHandler.readConfig(configFile);
                appConfigured = true;
            }//if config exists
            else
            {
                settings = new configModel();
                Config cfgDialog = new Config(dev, this.settings);
                if (cfgDialog.ShowDialog() == DialogResult.OK)
                {
                    configFileHandler.writeConfig(configFile, cfgDialog.settings);
                    MessageBox.Show("Saved");
                    appConfigured = true;
                }
            }//no config found

            state = DishState.Unknown;

            //set up presets, set up various Motion control objects, logger but only if config exists and is valid.
            if (appConfigured)
            {
                //get presets array
                Presets = settings.getPresetList();
                foreach (presets p in Presets)
                {
                    if (!String.IsNullOrEmpty(p.Text))
                    {
                        presetSelector.Items.Add(p.Text);
                    }
                }
                presetSelector.SelectedIndex = 0;

                RollingLogger.setupRollingLogger(settings.positionFileLog, settings.maxPosLogSizeBytes, settings.maxPosLogFiles);
            }//if config exists
        }
コード例 #3
0
ファイル: MotionControl.cs プロジェクト: ad5mqesj/DishControl
 public MotionControl()
 {
     state       = DishState.Unknown;
     azCommand   = -1000.0;
     elCommand   = 0.0;
     RAcommand   = 0.0;
     decCommand  = 0.0;
     azPos       = 0.0;
     elPos       = 0.0;
     bUpdating   = false;
     btEnabled   = true;
     TimerTickms = 10;
     Tracking    = false;
     dev         = new Eth32();
     this.initializeConfig();
 }
コード例 #4
0
        public testDrive(Eth32 dev, configModel settings, MainForm main)
        {
            this.dev      = dev;
            this.settings = settings;
            this.form     = main;

            this.azPos = this.form.azReadPosition();
            this.elPos = this.form.elReadPosition();
            this.form.setAz(0.0);
            this.form.setEl(0.0);

            InitializeComponent();
            this.azimuth.Text   = String.Format("{0:0.00}", this.azPos);
            this.elevation.Text = String.Format("{0:0.00}", this.elPos);

            timer          = new System.Windows.Forms.Timer();
            timer.Interval = 100;
            timer.Enabled  = true;
            timer.Tick    += new EventHandler(timer1_Tick);
        }
コード例 #5
0
ファイル: Encoder.cs プロジェクト: ad5mqesj/DishControl
        public Encoder(Eth32 dev, configModel config, bool isAz = true)
        {
            this.coding     = config.coding;
            this.outputPort = config.outputPort;
            this.device     = dev;

            if (isAz)
            {
                this.RevsPerRot  = config.AzimuthRevsPerRot;
                this.EncoderBits = config.AzimuthEncoderBits;
                this.StartBit    = config.AzimuthStartBit;
                this.OffsetDeg   = config.AzimuthOffsetDeg;
            }
            else
            {
                this.RevsPerRot  = config.ElevationRevsPerRot;
                this.EncoderBits = config.ElevationEncoderBits;
                this.StartBit    = config.ElevationStartBit;
                this.OffsetDeg   = config.ElevationOffsetDeg;
            }
            string resultString = Regex.Match(this.outputPort, @"\d+").Value;

            Int32.TryParse(resultString, out outputPortNum);
        }
コード例 #6
0
ファイル: MotionControl.cs プロジェクト: ad5mqesj/DishControl
        public void Connect(bool bSameAddress = true)
        {
            if (settings.eth32Address.Length == 0)
            {
                BasicLog.writeLog("Please configure the eht32 in Options->Settings");
                return;
            }

            // If we're already connected, disconnect and reconnect
            if (dev.Connected && !bSameAddress)
            {
                enableDrive(false);
                Thread.Sleep(1000);
                dev.Disconnect();
                Thread.Sleep(1000);
                dev = null;
            }

            try
            {
                // Connect, use a 1 second timeout
                if (dev == null)
                {
                    dev = new Eth32();
                }
                if (!dev.Connected)
                {
                    dev.Connect(settings.eth32Address, Eth32.DefaultPort, 1000);
                }

                if (dev.Connected)
                {
                    state = DishState.Stopped;
                    dev.ResetDevice();
                    MotionSetup();

                    azEncoder.SetupEncoderPorts();
                    elEncoder.SetupEncoderPorts();
                    //setup output port
                    this.dev.SetDirection(this.outputPortNum, 0xff);
                    //watchdog output
                    this.dev.SetDirection(4, 1);
                    Thread.Sleep(100);
                    //set up initial state of output control bits
                    this.setControlBits(true, true, false);
                    this.setControlBits(false, true, false);

                    //setup PWM
                    this.dev.PwmClockState = Eth32PwmClock.Enabled;
                    this.dev.PwmBasePeriod = 199; //10 khz

                    this.setAz(0.0);
                    this.setEl(0.0);
                    this.enableDrive(true);
                }
            }
            catch (Eth32Exception etherr)
            {
#if !_TEST
                BasicLog.writeLog("Error connecting to the ETH32: " + Eth32.ErrorString(etherr.ErrorCode));
#endif
            }
            if (!updateThread.IsAlive)
            {
                this.updateThread          = new Thread(updateThreadCallback);
                this.updateThread.Priority = ThreadPriority.Highest;
            }
            updateThread.Start();
        }
コード例 #7
0
        public Config(Eth32 dev, configModel settings)
        {
            InitializeComponent();
            this.dev      = dev;
            this.settings = settings;
            if (settings.AzimuthEncoderBits != 0)
            {
                this.latitude.Text               = GeoAngle.FromDouble(settings.latitude).ToString("NS");
                this.longitude.Text              = GeoAngle.FromDouble(settings.longitude).ToString("WE");
                this.altitude.Text               = settings.altitude.ToString();
                this.alpha.Text                  = settings.alpha.ToString();
                this.AzRevsPerRot.Text           = settings.AzimuthRevsPerRot.ToString();
                this.encBitsAz.Text              = settings.AzimuthEncoderBits.ToString();
                this.AzStartBit.Text             = settings.AzimuthStartBit.ToString();
                this.AzOffset.Text               = settings.AzimuthOffsetDeg.ToString();
                this.ElRevsPerRot.Text           = settings.ElevationRevsPerRot.ToString();
                this.encBitsEl.Text              = settings.ElevationEncoderBits.ToString();
                this.ElStartBit.Text             = settings.ElevationStartBit.ToString();
                this.ElOffset.Text               = settings.ElevationOffsetDeg.ToString();
                this.encoder_coding.SelectedItem = settings.coding.ToString();
                this.cmbETH32.Items.Add(settings.eth32Address);
                this.cmbETH32.SelectedItem   = settings.eth32Address;
                this.outputPort.SelectedItem = settings.outputPort;
                this.jogIncrement.Text       = settings.jogIncrement.ToString();
                this.driveEnableBit.Text     = settings.driveEnablebit.ToString();
                this.azCBactiveHi.Checked    = settings.azActiveHi;
                this.azCW_CCW.Checked        = settings.azDriveType == driveType.CCW;
                this.azEnbDir.Checked        = settings.azDriveType == driveType.DirEnable;
                this.azBoth.Checked          = settings.azDriveType == driveType.Both;
                if (settings.azDriveType == driveType.CCW)
                {
                    azCB1.Text      = "CW";
                    azCB2.Text      = "CCW";
                    azCB3.Text      = "";
                    azEnBit.Enabled = false;
                }
                else if (settings.azDriveType == driveType.DirEnable)
                {
                    azCB1.Text      = "Dir";
                    azCB2.Text      = "Enable";
                    azCB3.Text      = "";
                    azEnBit.Enabled = false;
                }
                else
                {
                    azCB1.Text      = "CW";
                    azCB2.Text      = "CCW";
                    azCB3.Text      = "Enable";
                    azEnBit.Enabled = true;
                }
                this.azCWbit.Text        = settings.azCWbit.ToString();
                this.azCCWbit.Text       = settings.azCCWbit.ToString();
                this.azEnBit.Text        = settings.azEnable.ToString();
                this.azPWMch.Text        = settings.azPWMchan.ToString();
                this.azKd.Text           = settings.azKd.ToString();
                this.azKi.Text           = settings.azKi.ToString();
                this.azKp.Text           = settings.azKp.ToString();
                this.Gain.Text           = settings.azG.ToString();
                this.azMax.Text          = settings.azMax.ToString();
                this.azMin.Text          = settings.azMin.ToString();
                this.azOutMax.Text       = settings.azOutMax.ToString();
                this.azOutMin.Text       = settings.azOutMin.ToString();
                this.azPark.Text         = settings.azPark.ToString();
                this.SouthParkPosAz.Text = settings.azSouthPark.ToString();

                this.elCBactiveHi.Checked = settings.elActiveHi;
                this.elCW_CCW.Checked     = settings.elDriveType == driveType.CCW;
                this.elEnbDir.Checked     = settings.elDriveType == driveType.DirEnable;
                this.elBoth.Checked       = settings.elDriveType == driveType.Both;
                if (settings.azDriveType == driveType.CCW)
                {
                    elCB1.Text      = "CW";
                    elCB2.Text      = "CCW";
                    elCB3.Text      = "";
                    elEnBit.Enabled = false;
                }
                else if (settings.azDriveType == driveType.DirEnable)
                {
                    elCB1.Text      = "Dir";
                    elCB2.Text      = "Enable";
                    elCB3.Text      = "";
                    elEnBit.Enabled = false;
                }
                else
                {
                    elCB1.Text      = "CW";
                    elCB2.Text      = "CCW";
                    elCB3.Text      = "Enable";
                    elEnBit.Enabled = true;
                }
                this.elCWbit.Text        = settings.elCWbit.ToString();
                this.elCCWbit.Text       = settings.elCCWbit.ToString();
                this.elEnBit.Text        = settings.elEnable.ToString();
                this.elPWMch.Text        = settings.elPWMchan.ToString();
                this.elKd.Text           = settings.elKd.ToString();
                this.elKi.Text           = settings.elKi.ToString();
                this.elKp.Text           = settings.elKp.ToString();
                this.elMax.Text          = settings.elMax.ToString();
                this.elMin.Text          = settings.elMin.ToString();
                this.elOutMax.Text       = settings.elOutMax.ToString();
                this.elOutMin.Text       = settings.elOutMin.ToString();
                this.elPark.Text         = settings.elPark.ToString();
                this.SouthParkPosEl.Text = settings.elSouthPark.ToString();

                this.PosLogFile.Text    = settings.positionFileLog;
                this.maxPosLogSize.Text = settings.maxPosLogSizeBytes.ToString();
                this.MaxFiles.Text      = settings.maxPosLogFiles.ToString();

                this.PS1Name.Text = settings.Preset1Name;
                this.PS1Az.Text   = settings.Preset1Az.ToString();
                this.PS1El.Text   = settings.Preset1El.ToString();

                this.PS2Name.Text = settings.Preset2Name;
                this.PS2Az.Text   = settings.Preset2Az.ToString();
                this.PS2El.Text   = settings.Preset2El.ToString();

                this.PS3Name.Text = settings.Preset3Name;
                this.PS3Az.Text   = settings.Preset3Az.ToString();
                this.PS3El.Text   = settings.Preset3El.ToString();

                this.PS4Name.Text = settings.Preset4Name;
                this.PS4Az.Text   = settings.Preset4Az.ToString();
                this.PS4El.Text   = settings.Preset4El.ToString();

                this.PS5Name.Text = settings.Preset5Name;
                this.PS5Az.Text   = settings.Preset5Az.ToString();
                this.PS5El.Text   = settings.Preset5El.ToString();
            }
        }