Київський клуб аматорів астрономії "Астрополіс"

astromagazin.net
* *
Ласкаво просимо, Гість. Будь ласка, увійдіть або зареєструйтеся.
19 Квітня 2024, 09:22:15

Увійти

google


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

0 Користувачів і 1 Гість дивляться цю тему.

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Вопрос программистам (VT_ARRAY)
« : 15 Лютого 2014, 12:16:11 »
. - .

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

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

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

ds40a

  • Offline Offline
  • Повідомлень: 2044
  • Подяк: 280
  • Дмитро Сорока. Слава Україні !
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

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
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
  • Offline Offline
  • Повідомлень: 7246
  • Подяк: 819
Re: Вопрос программистам (VT_ARRAY)
« Відповідь #3 : 15 Лютого 2014, 17:38:26 »
. - .

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

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

LifeIsGood

  • Клуб Астрополіс, Модератор
  • Offline Offline
  • Повідомлень: 5234
  • Подяк: 446
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

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Вопрос программистам (VT_ARRAY)
« Відповідь #5 : 16 Лютого 2014, 01:29:07 »
. - .

LifeIsGood, благодарю за ответ.
Воспользовался ключевой строчкой
Код: [Select]
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

  • Клуб Астрополіс, Модератор
  • Offline Offline
  • Повідомлень: 5234
  • Подяк: 446
Re: Вопрос программистам (VT_ARRAY)
« Відповідь #6 : 16 Лютого 2014, 16:19:45 »
. - .

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

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
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

  • Клуб Астрополіс, Модератор
  • Offline Offline
  • Повідомлень: 5234
  • Подяк: 446
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

  • Клуб Астрополіс, Модератор
  • Offline Offline
  • Повідомлень: 5234
  • Подяк: 446
Re: Вопрос программистам (VT_ARRAY)
« Відповідь #9 : 16 Лютого 2014, 23:05:10 »
. - .

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



Записаний

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Вопрос программистам (VT_ARRAY)
« Відповідь #10 : 16 Лютого 2014, 23:12:18 »
. - .

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

ds40a

  • Offline Offline
  • Повідомлень: 2044
  • Подяк: 280
  • Дмитро Сорока. Слава Україні !
Re: Вопрос программистам (VT_ARRAY)
« Відповідь #11 : 14 Травня 2014, 14:55:24 »
. - .

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

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

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