Jean-Christophe Dalouzy

Application en C# ?

Messages recommandés

Bonsoir à tous,

Je voulais savoir si certains d'entre vous avaient déjà développé une application en C# utilisant les bibliothèques ASCOM ?
En effet j'ai quelques petits soucis que je ne comprends pas trop.

Jean-Christophe

Partager ce message


Lien à poster
Partager sur d’autres sites
Bonjour,
Expliques nous un peu plus...
Je suppose que tu connais un peu la POO


Ps: Il y a des exemples dans le package developpeur sur le site Ascom.
Jean-Paul G

[Ce message a été modifié par jpg&mtl (Édité le 13-10-2014).]

Partager ce message


Lien à poster
Partager sur d’autres sites
> Je voulais savoir si certains d'entre vous avaient déjà développé une
> application en C# utilisant les bibliothèques ASCOM ?

Oui

> En effet j'ai quelques petits soucis que je ne comprends pas trop.

Quels genre de soucis ?

Julien

Partager ce message


Lien à poster
Partager sur d’autres sites
Bonsoir à tous,

Et bien, je vois qu'il y a du monde qui développe :-).

Jean-Paul, oui j'ai fait du C++ sous Linux pendant pas mal d'année, mais je n'ai jamais touché au C# pour développer une application windows, c'est la première fois que je me lance.

Tout d'abord voici mon bout de code :
private void parametrerToolStripMenuItem_Click(object sender, EventArgs e)
{
param_camera.Click += delegate
{
choix_camera.DeviceType = "Camera";
};
}


En fait, quand je lance mon application (très simple pour le moment) et que je vais dans le menu caméra/configuration, la première fois il ne se passe rien. Si je refait la manip une seconde fois, j'ai bien la fenêtre ASCOM me proposant le choix de la caméra qui s'affiche. Je ne comprends pas trop pourquoi.

Merci d'avance pour votre aide.

Jean-Christophe

Partager ce message


Lien à poster
Partager sur d’autres sites
Salut,
désolé pour le délai,

Ce bout de code est trop bref pour le raccrocher à tes symptômes.

quelques conseils pour te guider:

- essayes de lancer ta fonction par un bouton (et non par menu) jusqu'à ce que tu la maîtrises.
- "delegate" est un mot clé réservé, qui sert à encapsuler sous un autre nom un bout de code [le += me trouble] : définis directement la fonction correspondante

- utilises un point d'arrêt avant l'appel d'ascom pour savoir si tu y passes déjà au premier appel...

Quel IDE utilises-tu ?

JPG

Partager ce message


Lien à poster
Partager sur d’autres sites
Oui ton snippet est bizarre

Appeler le chooser est simple, voici un extrait de ma classe ASCOM:

public string ChooseFocuser()
{
if (IsThereASCOM(true))
{
try
{
m_FocuserName = ASCOM.DriverAccess.Focuser.Choose("");

/*if (string.IsNullOrEmpty(m_WheelName))
{
return null;
}*/
}
catch (DllNotFoundException e)
{
if (m_trace) MessageBox.Show(e.ToString());
m_installed = false;
LastException = e.Message;
return null;
}
catch (ASCOM.DriverException e)
{
if (m_trace) MessageBox.Show(e.ToString());
m_installed = false;
LastException = e.Message;
Focuserexception_Event();
return null;
}
catch (Exception e)
{
if (m_trace) MessageBox.Show(e.ToString());
m_installed = false;
LastException = e.Message;
Focuserexception_Event();
return null;
}
return m_FocuserName;
}
else
{
return "";
}
}

A cela on ajoute trois références :
- ASCOM.DeviceInterfaces
- ASCOM.DriverAccess
- ASCOM.Exceptions

Important : il est préférable de multithreader les accès ASCOM.

Frédéric.

Partager ce message


Lien à poster
Partager sur d’autres sites
Désolé pour l'absence l'indentation, c'est moins lisible là...

Partager ce message


Lien à poster
Partager sur d’autres sites
code:
public string ChooseFocuser()
{
if (IsThereASCOM(true))
{
try
{
m_FocuserName = ASCOM.DriverAccess.Focuser.Choose("");

/*if (string.IsNullOrEmpty(m_WheelName))
{
return null;
}*/
}
catch (DllNotFoundException e)
{
if (m_trace) MessageBox.Show(e.ToString());
m_installed = false;
LastException = e.Message;
return null;
}
catch (ASCOM.DriverException e)
{
if (m_trace) MessageBox.Show(e.ToString());
m_installed = false;
LastException = e.Message;
Focuserexception_Event();
return null;
}
catch (Exception e)
{
if (m_trace) MessageBox.Show(e.ToString());
m_installed = false;
LastException = e.Message;
Focuserexception_Event();
return null;
}
return m_FocuserName;
}
else
{
return "";
}
}


Partager ce message


Lien à poster
Partager sur d’autres sites
Ah ben c'est plus joli là, merci ms !
Finalement il n'y a qu'une ligne de code utile là, le reste c'est de l'interception d'exception...

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant