PDA

Просмотр полной версии : ASCOM Alt/Az Syncer


monstr
18.05.2010, 22:48
Я так и не разобрался, как грамотно парковать монти, управляемую через EQMOD, да и похоже соседи не разобрались, или я пропустил. Поэтому написал маленькую прогу на том же C# 2010 (узнать бы, как перенести экзешник без установки visual studio) :).

Кому нужно, могу дать код проекта. А как научусь генерить переносимые экзешники, выложу и его.

Это, пока что, alpha версия, не запоминает ничего - нет времени дописать запись в регистри.

Прога может выбирать монти (опробовал, пока что, только на симуляторе), коннектиться к нему (надо будет автоматом сделать) и читать высоту и азимут из монти в 4 слота. Данные можно редактировать, а можно оставить как есть и записывать в монти.

Прога написана с целью плановой парковки телескопа в любую удобную позицию средствами любого планетария (о! идея, надо будет добавить кнопку "перейти" к ранее сохранённым alt/az), потом позицию сохраняю, монти можно выключать. После включения обратный процесс - данные из формы заносятся в монти (синхронизация).

Ну и ещё, если произошёл сбой, то вручную навожу трубу на какую-нить точку с известными высотой и азимутом и синхронизирую. Ну или просто несколько точек парковки. Реальное использование покажет куда прога пойдёт.

С# и ASCOM, оказались прям очень близкими родственниками, вот весь, пока кривой код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using ASCOM.Interface;
using ASCOM.Helper;
using ASCOM.DriverAccess;


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private Telescope T;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
}

private void timer1_Tick(object sender, EventArgs e)
{
if (T.Connected)
{
label1.Text = Convert.ToString(T.Altitude);
label2.Text = Convert.ToString(T.Azimuth);
}
}

private void button1_Click(object sender, EventArgs e)
{
T.Connected = true;
panel1.BackColor = System.Drawing.Color.FromName("Green");
}

private void button2_Click(object sender, EventArgs e)
{
T.Connected = false;
panel1.BackColor = System.Drawing.Color.FromName("Red");
}

private void button4_Click(object sender, EventArgs e)
{
string progID = Telescope.Choose("");
T = new Telescope(progID);
textBox1.Text = progID;
timer1.Enabled = true;
}

private void button5_Click(object sender, EventArgs e)
{
T.SyncToAltAz(Convert.ToDouble(textBox2.Text), Convert.ToDouble(textBox3.Text));
}

private void button6_Click(object sender, EventArgs e)
{
textBox3.Text = Convert.ToString(T.Altitude);
textBox2.Text = Convert.ToString(T.Azimuth);
}

private void button3_Click(object sender, EventArgs e)
{
textBox6.Text = Convert.ToString(T.Altitude);
textBox7.Text = Convert.ToString(T.Azimuth);
}

private void button10_Click(object sender, EventArgs e)
{
textBox4.Text = Convert.ToString(T.Altitude);
textBox5.Text = Convert.ToString(T.Azimuth);
}

private void button8_Click(object sender, EventArgs e)
{
textBox8.Text = Convert.ToString(T.Altitude);
textBox9.Text = Convert.ToString(T.Azimuth);
}

private void button9_Click(object sender, EventArgs e)
{
T.SyncToAltAz(Convert.ToDouble(textBox6.Text), Convert.ToDouble(textBox7.Text));
}

private void button11_Click(object sender, EventArgs e)
{
T.SyncToAltAz(Convert.ToDouble(textBox4.Text), Convert.ToDouble(textBox5.Text));
}

private void button7_Click(object sender, EventArgs e)
{
T.SyncToAltAz(Convert.ToDouble(textBox8.Text), Convert.ToDouble(textBox9.Text));
}


}
}


просто же... :).
Потом добавлю обработку эксепшинов и работу с регистри, ща не до этого.

Weirdie
19.05.2010, 21:19
Олег, а в чем проблема с экзешником? У меня в VS2008 всё элементарно переносится.
Класс "Telescope" описан в ASCOM?

monstr
19.05.2010, 21:56
Олег, а в чем проблема с экзешником? У меня в VS2008 всё элементарно переносится.
Класс "Telescope" описан в ASCOM?
Видать это прикол 2010 c#. Надо бы почитать об этом. Щас просто не до внимательного изучения, пишу прогу отдыха ради.

Класс телескопа поставляется с аскомом-клиентом:
http://ascom-standards.org/Developer/ClientToolkit.htm

Вот эти три штуки от него
using ASCOM.Interface;
using ASCOM.Helper;
using ASCOM.DriverAccess;