Ciao Robocop, ti confesso di non essere sicurissimo di aver compreso la tua richiesta quindi, se sto sbagliando, ti prego di riformularmela nel modo più semplice possibile.
Se non ho capito male tu vorresti realizzare un driver ASCOM per gestire la motorizzazione della tua cupola. La creazione di un driver di questo tipo non è complicatissima se si ha una certa dimestichezza con la programmazione anche e soprattutto grazie ai tutorial forniti con la piattaforma ASCOM. Per ottenere questi tutorial e tutta la documentazione relativa devi installare la parte opzionale della piattaforma ASCOM riservata ai "developer".
Una volta avviato il tutorial per un oggetto "dome" dovrai scrivere il codice che risponda ud una serie di invocazioni di metodi e proprietà predefinite e tipiche di questo tipo di strumentazione. Nella fattispecie sono:
MetodiAbortSlew() - Interrompe ogni movimento in corso della cupola
CloseShutter() - Chiude la cupola (o il tetto scorrevole)
FindHome() - Ruota la cupola fino alla posizione di avvio (di solito con l'apertura a Nord)
OpenShutter() - Apre la cupola (o il tetto scorrevole)
Park() - Ruota la cupola fino alla posizione di parcheggio
SetPark() - Definisci la posizione attuale come posizione di parcheggio
SlewToAltitude(Altitude as double) - Muovi l'apertura della cupola in altezza fino al valore dato
SlewToAzimuth(Azimuth as double) - Ruota la cupola fino all'azimut dato
SyncToAzimuth(Azimuth as double) - Imposta il valore dato come azimut della posizione corrente
Proprietà:Altitude as double - Altezza a cui si trova l'apertura della cupola
AtHome as boolean - La cupola è in posizione di avvio
AtPark as boolean - La cupola è in posizione di parcheggio
Azimuth as double - Azimut verso cui è ruotata la cupola
CanFindHome as boolean - Vero se è possibile eseguire il metodo FindHome
CanPark as boolean - Vero se è possibile eseguire il metodo Park
CanSetAltitude as boolean - Vero se la cupola permette di spostare in altezza l'apertura
CanSetAzimuth as boolean - Vero se la cupola può ruotare (si mette FALSO nei tetti scorrevoli, ad esempio)
CanSetPark as boolean - Vero se è possibile definire la posizione di parcheggio
CanSetShutter as boolean - Vero se è possibile aprire e chiudere la cupola o il tetto scorrevole
CanSlave as boolean - Vero se la cupola può seguire automaticamente il telescopio
CanSyncAzimuth as boolean - Vero se è possibile definire l'azimuth attuale
ShutterStatus as ShutterState - Indica lo stato dell'apertura della cupola o del tetto scorrevole (vedi poi)
Slaved as boolean - Vero se la copola sta seguendo automaticamente il telescopio. Può essere impostato.
Slewing as boolean - Vero se la cupola è in movimento
Valori per ShutterState
0 shutterOpen
1 shutterClosed
2 shutterOpening
3 shutterClosing
4 shutterError
In fase di programmazione dovrai ovviamente completare il codice del tutorial per manovrare il tuo hardware. Ad esempio:
Codice:
Public ReadOnly Property CanSetShutter() As Boolean Implements IDomeV2.CanSetShutter
Get
TL.LogMessage("CanSetShutter Get", True.ToString())
Return True 'Questo indica che è possibile aprire e chiudere la cupola (o il tetto)
End Get
End Property
Public Sub OpenShutter() Implements IDomeV2.OpenShutter
TL.LogMessage("OpenShutter", "Shutter has been opened")
'Qui va inserito il codice che aprirà la tua cupola
domeShutterState = True
End Sub
Public Sub CloseShutter() Implements IDomeV2.CloseShutter
TL.LogMessage("CloseShutter", "Shutter has been closed")
'Qui va inserito il codice che chiuderà la tua cupola
domeShutterState = False
End Sub