Киевский клуб любителей астрономии "Астрополис"

astromagazin.net
* *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
15 Декабря 2017, 06:39:44


Автор Тема: Вопрос программистам (VT_ARRAY)  (Прочитано 523 раз)

0 Пользователей и 1 Гость просматривают эту тему.

M_M

  • Клуб Астрополис
  • Оффлайн Оффлайн
  • Сообщений: 4692
  • Благодарностей: 978
Вопрос программистам (VT_ARRAY)
« : 15 Февраля 2014, 12:16:11 »
. - .

Занимаясь составлением скрипта для камеры, уперся в чтение данных изображения.
ASCOM драйвер возвращает данные в формате VT_VARRAY.
Для Visual Basic (VBS) это родной формат, извлечь размерность массива и сам массив не представляет труда
WScript.StdOut.WriteLine  UBound(cam.ImageArray,1)
WScript.StdOut.WriteLine  UBound(cam.ImageArray,2)
В силу сложившихся обстоятельств, очень не хочется использовать VBS.

PHP VT_VARIANT поддерживает. Частично. До VT_ARRAY достучаться не смог. Можно написать расширение, чем, возможно, придется заняться.

А как с этим дело обстоит в других скриптовых языках? В том же питоне, например?
Записан

ds40a

  • Оффлайн Оффлайн
  • Сообщений: 1578
  • Благодарностей: 55
  • Дмитро Сорока. Слава Україні !
Re: Вопрос программистам (VT_ARRAY)
« Ответ #1 : 15 Февраля 2014, 13:25:21 »
. - .

Как вы знаете, Python реализован для многих операционных систем, а технология COM - достояние win. Поэтому способность python работать с этой технологией реализуется при помощи специальных библиотек (в терминах python - package). Вот одна из них https://pypi.python.org/pypi/comtypes и доки http://starship.python.net/crew/theller/comtypes/   Я не пробовал, но думаю, что в этой библиотеке реализовано все для использования COM.
Записан

M_M

  • Клуб Астрополис
  • Оффлайн Оффлайн
  • Сообщений: 4692
  • Благодарностей: 978
Re: Вопрос программистам (VT_ARRAY)
« Ответ #2 : 15 Февраля 2014, 15:08:38 »
. - .

ds40a, благодарю за ответ.

Питон - отнюдь не единственный мультиплатформенный язык программирования. Согласен почти на любой ;)
Увы, COM - достояние винды, как и VBS (одна из причин нежелания с ним связываться). Проблема в том, что у конкретной камеры (и она не единственная такая) QHY8L есть ASCOM драйвер, есть фирменный EZCAP, которые тоже достояние винды. Про баги EZCAP расскажу в отдельной ветке, в частности волнует проблема с охлаждением. А драйвера ASCOM весьма ненавязчиво предлагают VT_VARIANT, даже если параметром является BOOL.
Можно, конечно, воспользоваться .NET и окончательно похоронить кроссплатформенность.

Но не хочется.

Вчера весь вечер лазил по сайтам, посвященным питону, пытаясь найти вразумительный пример. Недостаточно им владею, чтобы из доки, написанной питонистами для питонистов, извлечь понятную для себя структуру данных. Пример как создать в питоне VT_ARRAY и передать его наружу уже нашел. Но интересует обратная задача. Получить двухмерный VT_ARRAY и сделать из него FITS. Сам FITS - не проблема.
Нужна какая-то функция типа GetPixel(x,y,vt). Или какой-то аналог fwrite(file, pdata, datasize).
Записан

tlgleonid

  • Moderator
  • Оффлайн Оффлайн
  • Сообщений: 6618
  • Благодарностей: 404
Re: Вопрос программистам (VT_ARRAY)
« Ответ #3 : 15 Февраля 2014, 17:38:26 »
. - .

Если не секрет, какой цели хотелось бы достичь?
В свое время я ряд задач решил с помощью tcl/tk и библиотеки AudeLA. Там очень просто работать с камерами, монтировками, колесами фильтров, огромная поддержка обработки фитсов, астрометрия и фотометрия, расчет эфемерид и многое другое. "Позвоните" на сайт прямо сейчас и Вы бесплатно получите хорошую документацию и кросплатформенность.  ;)

Задачи которые я решал:
1. Перемещение телескопа к звезде, покрытие астероидом которой ожидается и съемка покрытия методом дрифта.
2. Патрулирование участка неба по списку (например планетарок или мирид) с учетом доступности с балкона. Естественно, что на каждый кадр гиду автоматом указывалась звезда для гидирования.
3. Съемка панорам утреннего сегмента неба с учетом доступности, при этом производилась оценка яркости фона неба и корректировалась выдержка.
4. Съемка быстрых переменок в разных фотометрических фильтрах. 
Записан
Задокументировано наблюдение  >1500 Deepsky объектов.
ТАЛ75R, GSO 6" 1:4 +HEQ5Pro SynScan+Canon1000D+QHY6+фильтры R,V+Юпитер21М+QHY5, 265мм и 415 мм Добсоны HandMade+o3+hb+uhc+...
FAQ по любительской астрономии
Сказали спасибо

LifeIsGood

  • Клуб Астрополис, Модератор
  • Оффлайн Оффлайн
  • Сообщений: 4955
  • Благодарностей: 259
Re: Вопрос программистам (VT_ARRAY)
« Ответ #4 : 15 Февраля 2014, 17:41:42 »
. - .

Ниже пример чтения камеры на питоне. Я пользуюсь numpy, matplotlib и scipy в основном

import win32com.client
import numpy as np
import matplotlib.pylab as mpl

print "Camera test"
try:
    Chooser = win32com.client.Dispatch("ASCOM.Utilities.Chooser")
    Util = win32com.client.Dispatch("DriverHelper.Util")
    Chooser.DeviceType = 'Camera'
    CameraName = Chooser.Choose(camera)
    Camera = win32com.client.Dispatch(CameraName)

    Camera.Connected=True
    Camera.StartExposure(5.0, True);
    print "Waiting for exposure to complete..."
    while not Camera.ImageReady:
        Util.Yield()
        Util.WaitForMilliseconds(100)
    print "Exposure complete"

    data=np.array(Camera.ImageArray)
   
    fig= mpl.figure(figsize=(20,20))
    ax1 = fig.add_subplot(111)
    img=ax1.imshow(data,cmap='Greys_r')
    ax1.set_xlim(0, data.shape[1])
    ax1.set_ylim(0, data.shape[0])
   
    Camera.Connected = False
    Camera.Dispose
   
except AttributeError, value:
    print "Exception thrown:"
    print value

finally:
    print "End of Camera test"
« Последнее редактирование: 15 Февраля 2014, 19:04:34 от LifeIsGood »
Записан
Сказали спасибо

M_M

  • Клуб Астрополис
  • Оффлайн Оффлайн
  • Сообщений: 4692
  • Благодарностей: 978
Re: Вопрос программистам (VT_ARRAY)
« Ответ #5 : 16 Февраля 2014, 01:29:07 »
. - .

LifeIsGood, благодарю за ответ.
Воспользовался ключевой строчкой
data=np.array(Camera.ImageArray)  :beer:


Снес 64-x разрядный питон, поставил 32-х разрядный, ver 3.3.

scipy нашел только для python 3.2.
Подойдет?


Если не секрет, какой цели хотелось бы достичь?
Все перечисленное несомненно представляет интерес, и до него обязательно дойдет.
Сейчас решаю существенно более простую задачу. Усмирение регулятора температуры у QHY8L. Сильно не нравится дефолтовое поведение охладителя. За несколько секунд камера охлаждается с 25 градусов комнатной до -5...  :pain: Так она быстро сдохнет.

На PHP и питоне сделал еще вчера, но не получилось FITS сформировать.
Все остальное (goto, дизеринг итд) было опробовано на PHP еще в прошлом году на Sony NEX. Придется на питон переписывать. Но там немного.
« Последнее редактирование: 16 Февраля 2014, 01:41:15 от M_M »
Записан

LifeIsGood

  • Клуб Астрополис, Модератор
  • Оффлайн Оффлайн
  • Сообщений: 4955
  • Благодарностей: 259
Re: Вопрос программистам (VT_ARRAY)
« Ответ #6 : 16 Февраля 2014, 16:19:45 »
. - .

Вот тут последняя версия скомпилированная (для 2.7 13.2)
http://sourceforge.net/projects/scipy/files/latest/download
Записан

M_M

  • Клуб Астрополис
  • Оффлайн Оффлайн
  • Сообщений: 4692
  • Благодарностей: 978
Re: Вопрос программистам (VT_ARRAY)
« Ответ #7 : 16 Февраля 2014, 21:25:42 »
. - .

Вот тут последняя версия скомпилированная (для 2.7 13.2)
http://sourceforge.net/projects/scipy/files/latest/download
У меня 3.3
Варианты:
- Откат питона до 2.7
- Откат питона до до 3.2
- Scipy для 3.2 годится для 3.3
- Немного подождать пока Scipy для 3.3 появится (все равно пока не пользуюсь)


Подумываю о применении QT.
Записан

LifeIsGood

  • Клуб Астрополис, Модератор
  • Оффлайн Оффлайн
  • Сообщений: 4955
  • Благодарностей: 259
Re: Вопрос программистам (VT_ARRAY)
« Ответ #8 : 16 Февраля 2014, 22:46:18 »
. - .

Я не знаю... Пока не все было портировано для 3.3 я пользуюсь 2.7
Я уже не помню что именно мне нужно было, что было в 2.7, но не было в 3.3

А вообще тут есть все
http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy-stack
Записан

LifeIsGood

  • Клуб Астрополис, Модератор
  • Оффлайн Оффлайн
  • Сообщений: 4955
  • Благодарностей: 259
Re: Вопрос программистам (VT_ARRAY)
« Ответ #9 : 16 Февраля 2014, 23:05:10 »
. - .

Советую попробовать IPython для написания таких программ. Очень удобно!



Записан

M_M

  • Клуб Астрополис
  • Оффлайн Оффлайн
  • Сообщений: 4692
  • Благодарностей: 978
Re: Вопрос программистам (VT_ARRAY)
« Ответ #10 : 16 Февраля 2014, 23:12:18 »
. - .

У меня пока нет груза каких-то наработок. Поэтому посчитал, что проще начинать на третьем, чтобы потом не мучиться с апгрейдом.
Попробую Unofficial, спасибо. Полезная ссылка.
Записан

ds40a

  • Оффлайн Оффлайн
  • Сообщений: 1578
  • Благодарностей: 55
  • Дмитро Сорока. Слава Україні !
Re: Вопрос программистам (VT_ARRAY)
« Ответ #11 : 14 Мая 2014, 14:55:24 »
. - .

Знаете ли вы js?

js программисты, проверьте свои знания "языка" http://javascript-puzzlers.herokuapp.com/  ;D

Прочитав правильные ответы еще раз убеждаюсь, что js "от лукавого"  :rofl:
Записан