Skocz do zawartości

Własny sterownik Ascom


Duser

Rekomendowane odpowiedzi

Witam.
Jestem właśnie w fazie pisania własnego sterownika ASCOM dla elektroniki sterującej moim obserwatorium oraz przy okazji dla wlasnej roboty fokusera .

Do tej pory sterowanie w/w sprzętem odbywało się przez dedykowane do tego aplikacje poprzez porty COM , ale doszedłem do wniosku, że dobrze by było podpiąć to wszystko pod platformę ASCOM.

Napisałem więc sterowniki do obu urządzeń , z sukcesem - wszystko działa z poziomu komercyjnych aplikacji typu Maxim DL itp.

Mam jednak takie pytanie do wyjadaczy programowania , niewątpliwie obecnych na tym forum.

 

Po połączeniu sie przykładowo Maxima z focuserem poprzez ASCOM, port COM jest zablokowany i nie można już podłączyć sie do urządzenia poprzez inną aplikację - co jest oczywiste .

 

Ale jak zrobić tak, aby móc sie łączyć ze sprzętem poprzez ASCOM i jednocześnie móc sterować dodatkowymi funkcjami urządzenia ( nieuwzglednionymi w Ascomie) poprzez osobną , własną aplikację ?. Taka aplikacja odpalała by sie automatycznie przy połaczeniu urządzenia.

Takie rozwiązania oferuje chociażby EQmod czy Robofocus.

 

 

Czy macie jakiekolwiek doświadczenia w tym temacie, jak sie do tego zabrać ?

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli Twój sterownik zajmuje port, to nic prostszego jak udostępnić port przez Twój sterownik, czyli Twoja dodatkowa aplikacja nie ma korzystać z portu bezpośrednio ale za pośrednictwem sterownika. Sterownik otwiera/zamyka port, wysyła do niego i odbiera dane stanowiąc swego rodzaju multiplekser/demultiplekser dwóch strumieni danych. Jednego pochodzącego od urządzenia, do którego napisałeś sterownik, drugiego od aplikacji. Wymianę danych można zrobić np. przez komunikaty z zakresu WM_USER jeśli zbyt dużo danych nie przesyłasz lub poprzez localhosta i jakiś port via IP.

  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

Możesz też zrobić sterownik ASCOM z dodatkowym GUI, czyli po połączeniu się masz sterowanie z poziomu Maxima, ale jednocześnie otwiera się okno z tym, co sobie tylko wymyślisz.

Tak, to chyba najprostszy sposób. W czasie łączenia otwierasz okienko ze swoimi funkcjami. Tak jest w moim sterowniku i wielu innych, jakie widziałem.

 

Jednak rozwiązanie całkiem niezależnej aplikacji byłoby lepsze - można by było tą aplikację uruchamiać niezależnie wg życzenia.

Odnośnik do komentarza
Udostępnij na innych stronach

Możesz też zrobić sterownik ASCOM z dodatkowym GUI, czyli po połączeniu się masz sterowanie z poziomu Maxima, ale jednocześnie otwiera się okno z tym, co sobie tylko wymyślisz.

 

No właśnie. Tylko nie wiem , jak to zrobić. Przypuszczam że musze stworzyć jakąś formatkę wewnatrz projektu w Visual Studio. Ale nie wiem jak sprawić, aby korzystała z drivera jako pośrednika do urządzenia i żeby odpalała sie razem z nim.

Jakieś podpowiedzi?

Odnośnik do komentarza
Udostępnij na innych stronach

Po prostu utwórz nowy formularz (okienko) w VS i wywołaj go w metodzie Connect drivera. Z poziomu formularza odwołuj się do metod swojego drivera (takich jak Move, Position itp). Musisz mu jedynie przekazać obiekt tego drivera, najprościej w konstruktorze.

 

Ale jak dobrze zrozumiałem "wytyczne" ascoma, to niewskazane jest takie wyświetlanie dodatkowych okienek :P Jednak bardzo wiele sterowników tak robi, bo to najprostsze.

Odnośnik do komentarza
Udostępnij na innych stronach

Ale jak dobrze zrozumiałem "wytyczne" ascoma, to niewskazane jest takie wyświetlanie dodatkowych okienek :P Jednak bardzo wiele sterowników tak robi, bo to najprostsze.

Jednak niewskazane. Między sterownikiem a aplikacją powinna istnieć separacja tak, aby w przypadku zawieszenia się okienka albo całej aplikacji można było ją "zabić" bez szkody dla sterownika i urządzenia sterowanego inaczej trzeba zresetować całość, bo błąd aplikacji może zablokować port. Zdecydowanie bezpieczniej jest odseparować aplikację przez komunikaty lub sockety na localhoście.

Odnośnik do komentarza
Udostępnij na innych stronach

No, napisalem prostą, testową formatkę , na razie pokazuje aktualną pozycję fokusera i resetuje pozycję fokusera na środek zakresu po naciśnięciu przycisku.

Dzięki wszystkim za rady, zwłaszcza za "gotowca " Iluvatara - bez niego chyba bym sobie nie poradził.

W sumie jest to proste, nie rozumiem jednak pewnych procesów przekazywania informacji o funkcjach i zmiennych pomiędzy klasami.

Nie wpadł bym raczej na sposób wywołania formatki

monitor focuser =Me

monitor.Show()

 

gdzie focuser to właściwość obiektu Focuser stworzona wewnątrz kodu formatki, poprzez którą przekazywana jest wartość do zmiennej ( Iluvatar wie , o co chodzi:))

 

Nie widziałem sensu w takim zabiegu, bo po wywołaniu samego monitor.Show() formatka także pięknie startuje.

Ale kiedy chciałem wewnątrz Suba OnClick formatki wywołać funkcję CommandString z komendą resetu, wywalało wyjątek.

 

Nie rozumiem tego , ale cóż, jestem tylko raczkującym programistą samoukiem :)

 

Pozdrawiam .

PS. A o socketach i komunikacjii przez WM_USER sobie doczytam... kiedyś

Odnośnik do komentarza
Udostępnij na innych stronach

  • 6 miesięcy temu...

Korzystając z okazji, że w temacie wypowiedzieli się chyba koledzy dobrze poinformowani i z doświadczeniem praktycznym, zapytam, gdzie znaleźć opis funkcji poszczególnych, gotowych modułów (driver-ów) działających na platformie ASCOM. Dla przykładu, jeśli chciałbym kontrolować mój sterownik napędu (elektronika) za pomocą gotowego modułu ASCOM -> EQMOD, gdzie, znaleźć polecenia i ich opis w jakie wyposażony jest właśnie moduł EQMOD.  Przykładowo, wyobrażam sobie, że istnieje w driverze EQMOD polecenie przesunięcia o określony kąt. Jak wygląda składnia tego polecenia, w jakiej formie należy podać argumenty i jaki jest wynik takiego polecenia? Na razie znalazłem tylko taki link http://eq-mod.sourceforge.net/tutindex.html  gdzie jednak nie znalazłem potrzebnej informacji. 

A może po prostu źle szukam?

xooon

Odnośnik do komentarza
Udostępnij na innych stronach

5 godzin temu, xooon napisał:

Korzystając z okazji, że w temacie wypowiedzieli się chyba koledzy dobrze poinformowani i z doświadczeniem praktycznym, zapytam, gdzie znaleźć opis funkcji poszczególnych, gotowych modułów (driver-ów) działających na platformie ASCOM. Dla przykładu, jeśli chciałbym kontrolować mój sterownik napędu (elektronika) za pomocą gotowego modułu ASCOM -> EQMOD, gdzie, znaleźć polecenia i ich opis w jakie wyposażony jest właśnie moduł EQMOD.  Przykładowo, wyobrażam sobie, że istnieje w driverze EQMOD polecenie przesunięcia o określony kąt. Jak wygląda składnia tego polecenia, w jakiej formie należy podać argumenty i jaki jest wynik takiego polecenia? Na razie znalazłem tylko taki link http://eq-mod.sourceforge.net/tutindex.html  gdzie jednak nie znalazłem potrzebnej informacji. 

A może po prostu źle szukam?

xooon

Funkcje w przykładowym zakresie o który pytasz masz tu:

http://www.ascom-standards.org/Help/Developer/html/T_ASCOM_DriverAccess_Telescope.htm

 

a w swoim komputerze w folderze %programfiles%\EQMOD\Scripts

znajdziesz przykładowe skrypty VBS

Edytowane przez Jagho
Odnośnik do komentarza
Udostępnij na innych stronach

7 godzin temu, xooon napisał:

Korzystając z okazji, że w temacie wypowiedzieli się chyba koledzy dobrze poinformowani i z doświadczeniem praktycznym, zapytam, gdzie znaleźć opis funkcji poszczególnych, gotowych modułów (driver-ów) działających na platformie ASCOM. Dla przykładu, jeśli chciałbym kontrolować mój sterownik napędu (elektronika) za pomocą gotowego modułu ASCOM -> EQMOD, gdzie, znaleźć polecenia i ich opis w jakie wyposażony jest właśnie moduł EQMOD.

Rozumiem, że pytasz o składnię poleceń portu COM, które lecą od komputera (od EQMod) do montażu? Bo polecenia wysyłane przez program (np Maxim) do EQMod, to masz tak jak Jagho pokazał (to jest uniwersalne dla wszystkich montaży).

 

Na ogół składnia komunikacji COM nie jest jawna, choć w wypadku EQMod chyba gdzieś widziałem dokumentację. Nie mogę jednak znaleźć. Skoro np AstroEQ działa z EQMod, to znaczy, że gdzieś da sie to dostać.

2 godziny temu, Iluvatar napisał:

Jak instalujesz EQMODa, to możesz wybrać, czy mają być zainstalowane pliki źródłowe. Po nich możesz sobie trochę pogrzebać i zdebugować polecenia. Może jest też gdzieś lista, ale nigdy tego nie szukałem akurat.

O, jeśli tak jest, to superowo. Teoretycznie to starczy do wszystkiego :)

Odnośnik do komentarza
Udostępnij na innych stronach

4 godziny temu, MateuszW napisał:

Na ogół składnia komunikacji COM nie jest jawna, choć w wypadku EQMod chyba gdzieś widziałem dokumentację.

 

Dla montaży Sky-Watcher (i, jak sądzę, dla bliźniaczych innych marek też) informacje są tutaj: https://github.com/skywatcher-pacific/skywatcher_open

Niestety nie w postaci np. przejrzystej tabelki z listą komend; trzeba trochę pogrzebać w tych przykładach i wyekstrahować.

  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

... a tu masz dokumentację do biblioteki EQContrl.dll:

http://eq-mod.sourceforge.net/eqcontrldevelopersguide.htm

 

Korzystając tego dll'a bawiłem się kiedyś w tworzenie własnego softkontrolera dla HEQ5/EQ6/AstroEQ :) , ale w końcu poszedłem łatwiejszą drogą i skorzystałem z dobrodziejstw właściwości i metod ASCOM (klasy Telescope), których listę zalinkowałem w poprzednim poście.

Edytowane przez Jagho
  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

Dziękuję za wskazane informacje. Muszę zacząć od instalacji platformy ASCOM i przyjrzeniu się istniejącym już elementom choć czasu ostatnio nie mam za wiele :-(

Zapewne przyda się kontrolka połączenia COM ale część dotyczącą "tłumaczenia" poleceń ASCOM na reakcje własnego sterownika muszę napisać sam.

Zapewne w odpowiednim momencie ponownie poproszę o Waszą radę licząc jak obecnie na niezawodną pomoc :-)

xooon

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.