RT-2012-04 - Instituto de Astronomía Ensenada

Anuncio
Instituto de Astronomía 1
UNAM
Publicaciones Técnicas
[email protected]
Aceptación: 14-08-2012
Recepción: 23-08-2011
Reporte Técnico RT-2012-04
Manejo vía TCP/IP de cámaras Finger Lake Instruments (FLI).
E. Colorado, D. Hiriart.
Instituto de Astronomía. Universidad Nacional Autónoma de México.
Km. 103 Carretera Tijuana-Ensenada, Ensenada, B. C., México.
RESUMEN:
Este documento describe la programación de control
desarrollada para manejar las cámaras de la compañía
Finger Lake Instruments” (FLI) a través de un servidor
TCP/IP. El programa fue desarrollado en el lenguaje de
programación C/C++ y permite el control y la adquisición
de imágenes vía internet. El programa es ejecutando en
una computadora dedicada de la marca Sheevaplug” de
bajo costo y consumo eléctrico. Esto permite
estandarizar el manejo de las cámaras FLI del OAN-SPM a
través de la red de internet y facilitar su operación
robótica y remota. El programa ha sido probado con
éxito en la cámara FLI utilizada en los instrumentos
POLIMA y MEXMAN del telescopio de 0.84 m del OANSPM.
Contenido
1. INTRODUCCIÓN ---------------------------------------------------------------------------------------------------------------------- 3
2. OBJETIVOS ---------------------------------------------------------------------------------------------------------------------------- 3
3. DESARROLLO ------------------------------------------------------------------------------------------------------------------------- 3
3.1. EL PROGRAMA FLI_SERVER2 ------------------------------------------------------------------------------------------- 3
3.2. LISTA DE MANDOS VÍA RED -------------------------------------------------------------------------------------------- 6
3.3. DEPENDENCIAS DE SOFTWARE ---------------------------------------------------------------------------------------- 9
3.4. MÓDULO KERNEL DE LINUX-------------------------------------------------------------------------------------------- 9
3.5. EJECUCIÓN DEL PROGRAMA ------------------------------------------------------------------------------------------- 9
4. INSTALACIÓN ------------------------------------------------------------------------------------------------------------------------- 9
4.1. INSTALACIÓN DE LOS MANEJADORES (DRIVERS) ----------------------------------------------------------------- 9
4.2. INSTALACIÓN DEL PROGRAMA SERVIDOR FLI_SERVER2 ------------------------------------------------------ 10
5. CONFIGURACIÓN ------------------------------------------------------------------------------------------------------------------ 10
5.1. CONFIGURACIÓN DE LA RED ----------------------------------------------------------------------------------------- 10
5.2. SCRIPT DE INICIALIZACIÓN ------------------------------------------------------------------------------------------- 11
6. PRUEBA DEL SISTEMA ------------------------------------------------------------------------------------------------------------ 12
7. LA MINI COMPUTADORA “HEEVAPLUG ----------------------------------------------------------------------------------- 12
7.1. SISTEMA OPERATIVO EN TARJETA SD DE 4GB -------------------------------------------------------------------- 13
7.2. VARIABLES DE AMBIENTE DE U-BOOT ----------------------------------------------------------------------------- 13
8. CONCLUSIONES -------------------------------------------------------------------------------------------------------------------- 15
Colorado, Hiriart.
9. OTROS PROGRAMAS RELACIONADOS ---------------------------------------------------------------------------------------- 15
10. BIBLIOGRAFÍA --------------------------------------------------------------------------------------------------------------------- 16
11. APÉNDICE A ----------------------------------------------------------------------------------------------------------------------- 16
A.1. LISTADO DEL PROGRAMA APAGAME_ SRV.PY. ------------------------------------------------------------------ 16
A.2. REFERENCIA DE SOFTWARE DEL PROGRAMA FLI_SERVER2. ------------------------------------------------- 17
Publicaciones Técnicas IAUNAM
RT-2012-04
2
Colorado, Hiriart.
1. INTRODUC CIÓN
El Observatorio Astronómico Nacional en la sierra de San Pedro Mártir, B.C. (OAN-SPM) cuenta
con varias cámaras de la compañía Finger Lakes Instruments (FLI) que se utilizan en los
telescopios de 1.5 y 0.84 metros. Para estandarizar el manejo de las cámaras a través de la red de
internet, desarrollamos un programa modular de bajo nivel en el lenguaje de programación C++
para el control y adquisición de imágenes. El programa se ejecuta en una computadora dedicada
SheevaPlug de bajo costo y bajo consumo eléctrico. Esta computadora funciona como un
puente entre la red de internet y la cámara FLI. La SheevaPlug recibe mandos TCP/IP a través
de la red de internet, los convierte en mandos apropiados para las cámaras FLI y los envía a la
cámara vía un puerto USB. Asimismo, la SheevaPlug hace accesible a la red las imágenes
obtenidas y toda la información del estatus de la cámara. La interacción con la SheevaPlug se
puede realizar desde cualquier computadora autorizada que esté conectada a internet. El
desarrollo de este programa es de propósito general y se ha utilizado con éxito en el telescopio
de 0.84 m del OAN-SPM en el polarímetro de imagen POLIMA que utiliza una cámara FLI de
la serie ProLine PL3041-UV. En este documento se describe la programación desarrollada.
2. OBJETIVOS
El propósito de este paquete de programas es tener una plataforma común para el control de
todas las cámaras FLI para permitir el control y la transferencia de imágenes vía red (protocolo
TCP/IP) de manera que sea posible el uso remoto o robótico de la cámaras FLI.
3. DESARROLLO
En esta sección se describen los detalles técnicos del programa, así como la lista de mandos y
parámetros que el programa recibe y manda a través de la red de internet utilizando el puerto
9710 del protocolo de comunicaciones de red TCP/IP.
El programa llamado fli_server2 fue desarrollado para el sistema operativo Linux en C++
utilizando las librerías externas libfli-1.99 de la compañía FLI para el manejo de bajo nivel de
sus cámaras. Esta librería
se puede descargar de la siguiente dirección electrónica:
http://www.flicamera.com/software/index.htm.
3.1. EL PROGRAMA FLI_SERVER2
La Figura 1 muestra el diagrama de flujo del programa fli_server . El programa realiza las
siguientes funciones al iniciar:
o Carga nuestra clase en C++ FLI
o Abre un socket como servidor utilizando el puerto TCP/IP 9710.
o Entra en un ciclo de espera para recibir instrucciones, a través de la red de internet, de
un cliente vía el protocolo TCP/IP.
Publicaciones Técnicas IAUNAM
RT-2012-04
3
Colorado, Hiriart.
o Al recibir una instrucción, el programa abre una hebra (cómputo paralelo) para
ejecutar el mando recibido.
Inicio fli_server2
Procesar mando, es
una instruccion valida?
Carga clase FLI
(FLI ccd;)
SI
Abre puerto 9710
de comunicación
TCP/IP como
servidor
Ejecuta mando
NO
No
Regresar
resultados
del mando
via red
Llego
comunicación
via Red?
SI
Abrir hebra
para
procesar
mando
Continuar
Destruir Hebra
Figura 1: Diagrama de flujo principal.
La primera instrucción que el programa de control debe recibir es la instrucción de inicialización
)N)T . La Figura 2 muestra el diagrama de flujo del programa para la ejecución de esta
instrucción. Las operaciones que realiza al recibir esta instrucción son las siguientes:
o Busca una cámara de la compañía FLI conectada el puerto USB y establece una
conexión.
o Muestra el modelo de la cámara encontrada.
o Lee las dimensiones del dispositivo CCD instalado en la cámara.
o Reserva memoria para almacenar la imagen adquirida.
o Maneja la celda Peltier para controlar la temperatura del CCD.
o Regresa la información encontrada al cliente.
Publicaciones Técnicas IAUNAM
RT-2012-04
4
Colorado, Hiriart.
Inicio Mando
“INIT”
Busca cámara
marca FLI USB y
establece una
conexión
Lee modelo de la cámara
y lee las dimisiones del
CCD instalado
Reserva memoria
RAM para almacer
una imagen
Enciende la Celda
Peltier y la pone a
Regular a -30 grados
Celsius
Regresa la información
de la cámara via red al
cliente
Figura 2: Diagrama de flujo de instrucción "INIT".
Por ejemplo, al recibir la instrucción vía red EXPONE ETIME=100 XSIZE=2048 YSIZE=2048
CBIN=1 RBIN=1 CORG=0 RORG=0 DARK=0 , se le está indicando al programa fli_server2 que
debe de tomar una imagen completa de 100 milisegundos y el programa realizará los siguientes
pasos:
Programará el tiempo de exposición a la cámara.
Mandará a exponer una imagen al CCD.
Capturará la imagen resultante y la almacenará en RAM.
Leerá la temperatura del CCD, la temperatura externa y el porcentaje utilizado de la
celda Peltier.
o Regresará al cliente conectado la leyenda BINARIO x , Donde x = numero de pixeles
leídos del CCD.
o Cierra el canal de comunicación con el cliente y espera una nueva conexión.
o
o
o
o
Publicaciones Técnicas IAUNAM
RT-2012-04
5
Colorado, Hiriart.
3.2. LISTA DE MANDOS VÍA RED
A continuación se listan los mandos aceptados vía red. Estos mandos siempre regresan al último
la cadena de caracteres CLOSE \n
TABLA 1
Mandos vía red.
Argumento
Descripción
Regresa
INIT
Busca las cámaras FLI conectadas
a los puertos USB e inicializa la
primera cámara encontrada.
info Library version:
Software Development
Library for Linux 1.99
info type: /dev/fliusb0, ->USB
info Model: PL3041
info pixel size: 0.000015 x
0.000015
info Array area: (0,
0)(2080, 2112)
info Visible area: (16,
32)(2064, 2080)
info Work Size: 2048,
2048
LEE_TEMP -35.0
GOOD ->CCD INIT OK
CLOSE
Cierra la comunicación con la
cámara.
GET_TEMP
SET_TEMP
Lee la temperatura de la cámara.
X
Donde x = temperatura
deseada a regular de la
cámara en grados Celsius.
Publicaciones Técnicas IAUNAM
RT-2012-04
LEE_TEMP x
Donde x = temperatura de
la cámara en grados
Celsius.
Fija la temperatura a regular por
la celda Peltier de la cámara.
6
Colorado, Hiriart.
TABLA 2
Mandos vía red (Continuación)
LEE_TEMP_BASE x
LEE_TEMP_BASE
Lee la temperatura
de la base de la
cámara.
LEE_POWER
Lee el porcentaje de
potencia utilizada
por la celda Peltier.
donde
x = temperatura de la base
del CCD en grados Celsius.
LEE_POWER x
donde x = Porcentaje de
utilización de la celda
Peltier.
t xsize ysize binning
xorg yorg shutter dark
t =Tiempo en
milisegundos.
xsize= Tamaño de
columnas de la
imagen deseada.
ysize=Tamaño de
renglones de la imagen
deseada.
EXPONE
binning=Factor de
binning, puede ser 1,2 ó
3.
xorg =Columna inicial
de la imagen.
yorg =Renglón inicial
de la imagen.
TIME_REMAINING x
BINARIO y
LEE_TEMP z
Manda a exponer una TERMINE
imagen completa o
parcial, pudiendo
Donde x = Milisegundos
restar el dark.
faltantes de exposición.
y=Numero de pixeles
adquiridos.
z=Temperatura actual del
CCD.
shutter=0 ó 1. Con 1 se
abre el shutter.
dark=0 ó 1. Con 1 a la
imagen resultante se le
sustraerá
automáticamente un
dark.
Publicaciones Técnicas IAUNAM
RT-2012-04
7
Colorado, Hiriart.
TABLA 3
Mandos vía red (Continuación)
MANDABIN
Manda vía el socket
TCP/IP la última
imagen guardada en
RAM.
STATUS
Pide el estado del
servidor, si se está
comunicando con la
cámara.
Este mando no regresa
la palabra CLOSE al
final.
Regresara BUSY o
READY.
Nota: No mandar otros
comandos a la cámara si
el estado es BUSY.
X
Donde x=0, si se desea
la cámara a 2 MHz @ 2
canales.
SET_CAM_MODE
x=1, si se desea la
cámara a 2 MHz @ 1
canal.
Cambia el modo de
lectura del CCD.
x=2, si se desea la
cámara a 500 Khz @ 1
canal.
GET_CAM_MODE
Regresa el modo de
lectura actual. Ver
mando anterior.
GET_CAM_STRING
Regresa una cadena
de texto con la
información de la
cámara encontrada.
SALIR
Termina la ejecución
del programa servidor.
Publicaciones Técnicas IAUNAM
RT-2012-04
CAM_MODE x
Donde x= Modo de
lectura actual.
CAM_MODE_STRING
x
Donde x= Cadena de
caracteres indicando el
modo de lectura actual.
8
Colorado, Hiriart.
3.3. DEPENDENCIAS DE SOFTWARE
Si se desea recompilar el programa, se deberán tener las bibliotecas de la compañía FL) libfli1.99 http://www.flicamera.com/software/index.html) y se podrá compilar utilizando los
siguientes pasos:
1. g++ -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT fli.o -MD -MP -MF .deps/fli.Tpo -c -o fli.o
fli.cpp
2. gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT fli_call.o -MD -MP -MF .deps/fli_call.Tpo -c o fli_call.o fli_call.c
3. g++ -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT fli_server2.o -MD -MP -MF
.deps/fli_server2.Tpo -c -o fli_server2.o fli_server2.cpp
4. g++ -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT server.o -MD -MP -MF .deps/server.Tpo -c
-o server.o server.cpp
5. g++ -g -O2 -o fli_server2 fli.o fli_call.o fli_server2.o server.o ./libfli.a -lm -lpthread -static
Este programa fue probado utilizando el sistema operativo Linux Ubuntu 10.04 LTS con el kernel
2.6.32-35. La versión final se ejecuta en la PC dedicada SheevaPlug con sistema operativo
Debian con kernel 2.6.32-5-Kirkwood.
3.4. MÓDULO KERNEL DE LINUX
Para la comunicación vía USB con la cámara, las bibliotecas utilizan el módulo del kernel
llamado fliusb.ko el cual es cargado al iniciar la PC. Este módulo es proporcionado por la
compañía FLI. El módulo fue programado para los kernels de Linux 2.6.xx. Si se desea compilar
este módulo, se deberá instalar el paquete de los encabezados del kernel de la siguiente manera
sudo apt-get install linux-headers-$(uname -r)
y seguir con las instrucciones que le proporcione la compañía FLI.
3.5. EJECUCIÓN DEL PROGRAMA
No es necesario ninguna instrucción especial o parámetro adicional para correr el programa,
simplemente ejecútelo desde una terminal de internet mediante el mando ./fli_server2
4. INSTALACIÓN
En esta sección se describe la instalación de los programas y manejadores ( drivers ) de las
cámaras de la compañía FLI.
4.1. INSTALACIÓN DE LOS MANEJADORES (DRIVERS)
Para instalar los drivers de la cámara en una PC con Linux se deben descargar de
http://www.flicamera.com/software/index.html el paquete SDk Download de Linux el cual se
Publicaciones Técnicas IAUNAM
RT-2012-04
9
Colorado, Hiriart.
desempaquetará (fliusb-1.1.tgz, luego se ejecutará el mando make el cual generará el módulo
fliusb.ko. Como superusuario, copiar el módulo al directorio /lib/modules/ .6. -5kirkwood/kernel/drivers/usb/
Para instalar las bibliotecas de la cámara se desempaquetará el archivo libfli-1.99.tgz y se
ejecutará el mando make . Como superusuario, ejecutar el mando make install .
4.2. INSTALACIÓN DEL PROGRAMA SERVIDOR FLI_SERVER2
El programa fli_server está compilado de manera estática para el procesador ARM de la PC
SheevaPlug , así que sólo es necesario correrlo y estará listo para recibir mandos vía internet en
protocolo TCP/IP por el puerto 9710.
5. CONFIGURA CIÓN
En esta sección se describirán las diferentes secciones donde hay que configurar nuestro sistema.
5.1. CONFIGURACIÓN DE LA RED
La SheevaPlug está configurada con una IP estática de la red de instrumentos de los telescopios
del OAN-SPM. El archivo con los datos de su configuración se encuentra en
/etc/network/interface y su contenido deberá ser el siguiente:
TABLA 4
Configuración de la red.
auto lo
iface lo inet loopback
# The primary network
interface
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.0.41
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.254
Publicaciones Técnicas IAUNAM
RT-2012-04
10
Colorado, Hiriart.
5.2. SCRIPT DE INICIALIZACIÓN
Al iniciar la SheevaPlug , automáticamente se ejecuta el script de inicialización del sistema
operativo /etc/rc.local en el cual le anexamos la línea /root/boot.sh & . En el archivo
boot.sh, estarán contenidos todos los procesos de inicialización de nuestro sistema.
La Tabla 5 muestra el contenido de este archivo.
Donde el archivo apagame_srv.py ver Apéndice se utiliza para apagar remotamente la PC
de manera segura.
TABLA 5
Archivo de inicialización boot.sh.
echo "configurando flicam"
modprobe fliusb2
#cargar servidor
cd /root
#para apagar vía red
./apagame_srv.py &
./loop.sh
El archivo loop.sh se utiliza para ejecutar el programa servidor.
La Tabla 6 muestra el contenido del archivo loop.sh .
TABLA 6
Archivo de ciclo del programa servidor.
echo "fli cam server infinite
Loop"
./fli_server2
./loop.sh
Publicaciones Técnicas IAUNAM
RT-2012-04
11
Colorado, Hiriart.
6. PRUEBA DEL SISTEMA
Una forma rápida de probar y usar este programa es la siguiente:
1. Ejecutar el programa:
o /root/fli-server2 &.
2. Inicializar la cámara utilizando el siguiente mando:
o hose localhost 9710 –out echo INIT .
3. Obtener una imagen de la cámara de un segundo utilizando el siguiente mando:
o echo EXPONE ETIME=
XSIZE=2048 YSIZE=2048 CBIN=1 RBIN=1
CORG= RORG= DARK= | hose localhost
--slave.
4. Pedir la imagen resultante en binario:
o echo "MANDABIN " | hose localhost 9710 --slave >imagen.bin.
Estos mandos se pueden ejecutar desde cualquier PC compatible con el sistema operativo Unix /
Linux, las cuales tengan instalado el paquete netpipes . Para esto, cambiar la palabra localhost
por el IP de la PC en donde se encuentre conectada la cámara, en este caso es 192.168.0.41.
Otro ejemplo, utilizando otra PC como cliente, donde se almacenarían las imágenes y también se
desplegarían, sería la siguiente secuencia de mandos:
hose 192.168.0.41 9710 –out echo INIT
echo EXPONE ETIME=
XSIZE= 4 YSIZE= 4 CBIN= RBIN= CORG=
RORG= DARK= | hose 192.168.0.41 9710 –slave
echo "MANDABIN " | hose 192.168.0.41 9710 --slave >imagen.bin
y para la visualización de la imagen resultante en la pantalla, utilizaríamos el paquete
astronómico Saoimage DS9 de la siguiente manera:
cat imagen.bin | xpaset ds9 array [xdim=2048,ydim=2048,zdim=1,bitpix=16]
7. LA MINI COMPUTADORA SHEEVAPLUG
La Figura 3 muestra varias imágenes de la SheevaPlug . La SheevaPlug es una pequeña PC de
sólo 110 mm de largo por 69.5 mm de ancho y de un bajo consumo eléctrico (5 Watts) que
permite las capacidades de cómputo que un servidor de cómputo en un espacio reducido. La
SheevaPlug forma parte de las computadoras tipo plug computer que son conectadas plug
directamente a un tomacorriente eléctrico y tiene la apariencia de un adaptador de voltaje
CA/CD.
Publicaciones Técnicas IAUNAM
RT-2012-04
12
Colorado, Hiriart.
Figura 3: Imágenes de la PC “SheevaPlug”. Esta PC se conecta directamente a un tomacorriente eléctrico
de 115 VAC.
Entre las principales características de cómputo de la SheevaPlug se encuentran las siguientes:
Procesador ARM de 1.5 GHz
Memoria RAM de 512MB DDR2 (400 MHz)
Memoria NAND Flash de 512MB
Puerto Ethernet de 100Mhz
Puerto USB 2.0
Puerto lector de tarjetas SD
Reloj de tiempo real con batería.
Debido a su buena capacidad de cómputo para el manejo de la cámara se escogió este modelo,
además de su bajo consumo eléctrico y baja disipación de calor.
7.1. SISTEMA OPERATIVO EN TARJETA SD DE 4GB
Para un fácil respaldo y manejo de los programas, el sistema operativo de la Sheeva Plug se
actualizó y se utilizó una tarjeta externa SD card de una capacidad de GB donde contiene el
sistema operativo Linux basado en Debian con el kernel 2.6.32-kirkwood armv5tel.
7.2. VARIABLES DE AMBIENTE DE U-BOOT
Al encender la SheevaPlug ejecutará su programa básico llamado U-BOOT. Éste se encargará
de hacer las primeras configuraciones básicas, tal como el programa BIOS los hace en una PC
compatible con IBM. Según sus variables definidas, el U-BOOT iniciará desde la memoria
interna tipo flash o desde la memoria externa en la SD card .
Por omisión, al encender la SheevaPlug inicializa utilizando la memoria interna. Se modificaron
las variables de U-BOOT para que al encender la SheevaPlug inicie con la memoria externa en
la SD card . La Tabla 7 muestra los valores de las variables del ambiente de U-BOOT.
Publicaciones Técnicas IAUNAM
RT-2012-04
13
Colorado, Hiriart.
TABLA 7
Variables de ambiente de U-Boot.
baudrate=115200
loads_echo=0
rootpath=/mnt/ARM_FS/
run_diag=yes
console=console=ttyS0,115200
mtdparts=nand_mtd:0xc0000@0(uboot)ro,0x1ff00000@0x100000(root)
CASset=min
MALLOC_len=1
ethprime=egiga0
bootargs_end=:::DB88FXX81:eth0:none
image_name=uImage
standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console)
root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm;
ethaddr=00:50:43:9e:25:12
ethmtu=1500
mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs
mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500
usb0Mode=host
yuk_ethaddr=00:00:00:EE:51:81
nandEcc=1bit
netretry=no
rcvrip=169.254.100.100
loadaddr=0x02000000
autoload=no
ethact=egiga0
arcNumber=2097
boot_nand=nand read.e 0x2000000 0x100000 0x400000
bootargs_console=console=ttyS0,115200
bootargs_root=root=/dev/mmcblk0p2
bootcmd_mmc=mmcinit; ext2load mmc 0:1 0x01100000 /uInitrd; ext2load mmc 0:1
0x00800000 /uImage
bootcmd=setenv bootargs $(bootargs_console) $(bootargs_root); run bootcmd_mmc;
bootm 0x00800000 0x01100000
ipaddr=192.168.0.76
serverip=192.168.0.14
netmask=255.255.255.0
bootargs_tftp=console=ttyS0,115200 ramdisk_size=16384 root=/dev/ram
botea_tfpt=setenv bootargs $(bootargs_tftp); tftp 0xe00000 uMulti; bootm 0xe00000
stdin=serial
stdout=serial
stderr=serial
mainlineLinux=yes
Publicaciones Técnicas IAUNAM
RT-2012-04
14
Colorado, Hiriart.
enaMonExt=no
enaCpuStream=no
enaWrAllo=no
pexMode=RC
disL2Cache=no
setL2CacheWT=yes
disL2Prefetch=yes
enaICPref=yes
enaDCPref=yes
sata_dma_mode=yes
netbsd_en=no
vxworks_en=no
bootdelay=3
disaMvPnp=no
enaAutoRecovery=yes
pcieTune=no
bootargs=console=ttyS0,115200 root=/dev/mmcblk0p2
Environment size: 1598/131068 bytes
8. CONCLUSIONES
El programa descrito ha funcionado exitosamente y sin ningún problema desde febrero de 2011
hasta el presente con una cámara FLI de la serie ProLine Modelo PL3041-UV en el telescopio de
0.84 m en el OAN-SPM, en el polarímetro de imagen POLIMA y la rueda de filtros MEXMAN.
Además, el convertir el manejo de la cámara de USB a un manejo vía internet, nos permite
mayor flexibilidad para utilizar la cámara de una manera robótica o remota.
9. OTROS PROG RAMAS RELA CIONADO S
Existe una aplicación gráfica para el usuario, la cual utiliza a este programa y se documentará por
separado en el escrito Interfaz gráfica para el manejo de los CCD científicos en Python . Está
desarrollado en Python + Gtk.
Publicaciones Técnicas IAUNAM
RT-2012-04
15
Colorado, Hiriart.
10. BIBLIOGRAFÍA
o
Begining Linux Programming.
Richard Stones y Neil Matthew.
Wrox Press.
o
FLI SDK Developing Tools.
http://www.flicamera.com/downloads/FLI_SDK_Documentation.pdf
o
Slackware Linux Unleashed
Bao Ha, Tina Nguyen
Editorial Sams
o
SheevaPlug Computer Forums
http://www.plugcomputer.org/plugforum/
11. APÉNDICE A
A.1. LISTADO DEL PROGRAMA APAGAME_ SRV.PY.
#!/usr/bin/env python
import os
import socket
import SocketServer
import threading
import thread
#---------------------------------------------------------------class MyTCPHandler(SocketServer.StreamRequestHandler):
def handle(self):
data = self.rfile.readline().strip()
print "llego:",data
miApp.procesa(data)
self.request.send('ok \n')
#---------------------------------------------------------------class RUCAFAKE:
def __init__(self):
# valores default
self.mando='/sbin/poweroff'
#---------------------------------------------------------------#Identifica y procesa los datos recibidos
def procesa(self,dato):
Publicaciones Técnicas IAUNAM
RT-2012-04
16
Colorado, Hiriart.
data = str(dato)
try:
txt = data.split()
if txt[0] == "APAGAME":
print 'clave',txt[1]
print self.mando
try:
os.system(self.mando)
except:
print "Error"
except IndexError, e:
pass
#---------------------------------------------------------------if __name__ == "__main__":
HOST, PORT = "0.0.0.0", 4953
# Create the server, binding to localhost on port 4967
SocketServer.allow_reuse_address= True
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
miApp = RUCAFAKE()
print "Escuchando en el puerto", PORT
server.serve_forever()
A.2. REFERENCIA DE SOFTWARE DEL PROGRAMA FLI_SERVER2.
A continuación se listan las referencias de las funciones del programa fli_server2 . Esta
referencia se realizó con el programa doxygen .
Publicaciones Técnicas IAUNAM
RT-2012-04
17
fli_server2
2.12
Generated by Doxygen 1.6.3
Mon Jul 2 09:18:16 2012
Contents
1 Class Index
1.1
19
Class List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 File Index
2.1
21
File List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Class Documentation
3.1
3.2
19
21
23
cam_t Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.1.1
Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.1.1.1
dname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.1.1.2
domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.1.1.3
name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
FLI Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.2.1
Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
3.2.2
Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . .
25
3.2.2.1
FLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
3.2.2.2
∼FLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.2.3.1
close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.2.3.2
deinterlace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2.3.3
estadistica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.2.3.4
expose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.2.3.5
get_filter_pos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.2.3.6
GetMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.2.3.7
GetMode_String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.2.3.8
init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.2.3.9
init_filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
3.2.3.10 lee_cooler_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
3.2.3.11 lee_temperatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
3.2.3
ii
CONTENTS
3.2.4
3.2.3.12 lee_temperatura_base . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
3.2.3.13 manda_imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
3.2.3.14 pon_temperatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
3.2.3.15 set_filter_pos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
3.2.3.16 SetMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
3.2.3.17 showinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
3.2.3.18 tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
3.2.3.19 update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.1
basetemp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.2
busy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.3
cancela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.4
cbin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.5
ccd_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.6
ccdtemp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.7
cols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.8
corg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.9
dark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.10 debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.11 do_deinterlace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.12 do_estadistica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.13 error_string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.14 etime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.15 full_image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.16 imagePixels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.17 imagesize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.18 maxcols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.19 maxpixels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.20 maxrows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.21 model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.22 power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.23 rbin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.24 rorg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.25 rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.26 v_cols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.27 v_corg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
CONTENTS
3.3
3.4
iii
3.2.4.28 v_rorg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.4.29 v_rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
micliente Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
3.3.1
Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
3.3.1.1
instruccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
3.3.1.2
ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
3.3.1.3
local_fd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
server Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.4.1
Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . .
43
3.4.1.1
server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.4.1.2
∼server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . .
44
3.4.2.1
checa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
3.4.2.2
init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
3.4.2.3
netclose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
3.4.2.4
responde_cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
3.4.2.5
revisa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
3.4.2.6
set_ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.3.1
busy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.3.2
CANCELA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.3.3
client_sockfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.3.4
debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.3.5
fileSal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.3.6
instruccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.3.7
ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.3.8
op . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.3.9
procesando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.3.10 salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.3.11 status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.2
3.4.3
4 File Documentation
4.1
47
fli.cpp File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
4.1.1
Define Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
4.1.1.1
info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
4.1.1.2
LIBVERSIZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
4.1.1.3
TRYFUNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
iv
CONTENTS
4.1.1.4
warnc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
4.1.2.1
findcams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
4.1.2.2
findfilters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
4.1.2.3
writeraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
Variable Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
4.1.3.1
__progname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
4.1.3.2
maxushort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
4.1.3.3
mutex_busy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
4.1.3.4
red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
fli.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
4.2.1
Define Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
4.2.1.1
_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
4.2.1.2
_NO_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
4.2.1.3
BUFF_SIZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
4.2.1.4
FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
4.2.1.5
TRUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
fli_call.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
4.3.1
Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
4.3.1.1
findcams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
4.3.1.2
findfilters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
4.3.1.3
writeraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
fli_call.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
4.4.1
Define Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
4.4.1.1
info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
4.4.1.2
LIBVERSIZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
4.4.1.3
TRYFUNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
4.4.1.4
warnc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
fli_server2.cpp File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
4.5.1
Define Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
4.5.1.1
FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
4.5.1.2
MyVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
4.5.1.3
PORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
4.5.1.4
TRUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
4.5.2.1
60
4.1.2
4.1.3
4.2
4.3
4.4
4.5
4.5.2
casi_expone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
CONTENTS
4.5.2.2
main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
4.5.2.3
onthread_procesa_mando . . . . . . . . . . . . . . . . . . . . . . . . .
64
4.5.2.4
procesa_mando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
4.5.2.5
test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
Variable Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
4.5.3.1
ccd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
4.5.3.2
i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
4.5.3.3
lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
4.5.3.4
mutex_busy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
4.5.3.5
red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
4.5.3.6
res . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
4.5.3.7
t_result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
4.5.3.8
thread_mando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
4.5.3.9
thread_red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
libfli.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
4.6.1
Define Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.1
DllExport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.2
DllImport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.3
FLI_BGFLUSH_START . . . . . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.4
FLI_BGFLUSH_STOP . . . . . . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.5
FLI_CAMERA_DATA_READY . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.6
FLI_CAMERA_STATUS_EXPOSING . . . . . . . . . . . . . . . . . .
78
4.6.1.7
FLI_CAMERA_STATUS_IDLE . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.8
FLI_CAMERA_STATUS_MASK . . . . . . . . . . . . . . . . . . . .
78
4.6.1.9
FLI_CAMERA_STATUS_READING_CCD . . . . . . . . . . . . . . .
78
4.6.1.10 FLI_CAMERA_STATUS_UNKNOWN . . . . . . . . . . . . . . . . .
78
4.6.1.11 FLI_CAMERA_STATUS_WAITING_FOR_TRIGGER . . . . . . . . .
78
4.6.1.12 FLI_FAN_SPEED_OFF . . . . . . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.13 FLI_FAN_SPEED_ON . . . . . . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.14 FLI_FOCUSER_STATUS_HOME . . . . . . . . . . . . . . . . . . . .
78
4.6.1.15 FLI_FOCUSER_STATUS_HOMING . . . . . . . . . . . . . . . . . .
78
4.6.1.16 FLI_FOCUSER_STATUS_LEGACY . . . . . . . . . . . . . . . . . . .
78
4.6.1.17 FLI_FOCUSER_STATUS_LIMIT . . . . . . . . . . . . . . . . . . . .
78
4.6.1.18 FLI_FOCUSER_STATUS_MOVING_IN . . . . . . . . . . . . . . . .
78
4.6.1.19 FLI_FOCUSER_STATUS_MOVING_MASK . . . . . . . . . . . . . .
78
4.6.1.20 FLI_FOCUSER_STATUS_MOVING_OUT . . . . . . . . . . . . . . .
78
4.5.3
4.6
v
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
vi
CONTENTS
4.6.1.21 FLI_FOCUSER_STATUS_UNKNOWN . . . . . . . . . . . . . . . . .
78
4.6.1.22 FLI_FRAME_TYPE_DARK . . . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.23 FLI_FRAME_TYPE_FLOOD . . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.24 FLI_FRAME_TYPE_NORMAL . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.25 FLI_FRAME_TYPE_RBI_FLUSH . . . . . . . . . . . . . . . . . . . .
78
4.6.1.26 FLI_INVALID_DEVICE . . . . . . . . . . . . . . . . . . . . . . . . .
78
4.6.1.27 FLI_IO_P0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.28 FLI_IO_P1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.29 FLI_IO_P2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.30 FLI_IO_P3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.31 FLI_MODE_16BIT . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.32 FLI_MODE_8BIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.33 FLI_SHUTTER_CLOSE . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.34 FLI_SHUTTER_EXTERNAL_EXPOSURE_CONTROL . . . . . . . .
80
4.6.1.35 FLI_SHUTTER_EXTERNAL_TRIGGER . . . . . . . . . . . . . . . .
80
4.6.1.36 FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH . . . . . . . . . . . .
80
4.6.1.37 FLI_SHUTTER_EXTERNAL_TRIGGER_LOW . . . . . . . . . . . .
80
4.6.1.38 FLI_SHUTTER_OPEN . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.39 FLI_TEMPERATURE_BASE . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.40 FLI_TEMPERATURE_CCD . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.41 FLI_TEMPERATURE_EXTERNAL . . . . . . . . . . . . . . . . . . .
80
4.6.1.42 FLI_TEMPERATURE_INTERNAL . . . . . . . . . . . . . . . . . . .
80
4.6.1.43 FLIDEBUG_ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.44 FLIDEBUG_FAIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.45 FLIDEBUG_INFO . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.46 FLIDEBUG_NONE . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.47 FLIDEBUG_WARN . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.48 FLIDEVICE_CAMERA . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.49 FLIDEVICE_ENUMERATE_BY_CONNECTION . . . . . . . . . . .
80
4.6.1.50 FLIDEVICE_FILTERWHEEL . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.51 FLIDEVICE_FOCUSER . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.52 FLIDEVICE_HS_FILTERWHEEL . . . . . . . . . . . . . . . . . . . .
80
4.6.1.53 FLIDEVICE_NONE . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.54 FLIDEVICE_RAW . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.55 FLIDOMAIN_INET . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.56 FLIDOMAIN_NONE . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
CONTENTS
4.6.2
4.6.3
vii
4.6.1.57 FLIDOMAIN_PARALLEL_PORT . . . . . . . . . . . . . . . . . . . .
80
4.6.1.58 FLIDOMAIN_SERIAL . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.59 FLIDOMAIN_SERIAL_1200 . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.60 FLIDOMAIN_SERIAL_19200 . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.61 FLIDOMAIN_USB . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.1.62 LIBFLIAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
Typedef Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.2.1
flibgflush_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.6.2.2
flibitdepth_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
4.6.2.3
flichannel_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
4.6.2.4
flidebug_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
4.6.2.5
flidev_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
4.6.2.6
flidomain_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
4.6.2.7
fliframe_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
4.6.2.8
flimode_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
4.6.2.9
flishutter_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
4.6.2.10 flistatus_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.2.11 flitdiflags_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.2.12 flitdirate_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.1
FLICancelExposure . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.2
FLIClose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.3
FLIConfigureIOPort . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.4
FLIControlBackgroundFlush . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.5
FLIControlShutter . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.6
FLICreateList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.7
FLIDeleteList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.8
FLIEndExposure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.9
FLIExposeFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.10 FLIFlushRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.11 FLIFreeList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.12 FLIGetArrayArea . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.13 FLIGetCameraMode . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.14 FLIGetCameraModeString . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.15 FLIGetCoolerPower . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.16 FLIGetDeviceStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
viii
CONTENTS
4.6.3.17 FLIGetExposureStatus . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.18 FLIGetFilterCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.19 FLIGetFilterPos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.20 FLIGetFocuserExtent . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.21 FLIGetFWRevision . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.22 FLIGetHWRevision . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.23 FLIGetLibVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.24 FLIGetModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.25 FLIGetPixelSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.26 FLIGetSerialString . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.27 FLIGetStepperPosition . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.28 FLIGetStepsRemaining . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.29 FLIGetTemperature . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.30 FLIGetVisibleArea . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.31 FLIGrabFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.32 FLIGrabRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.33 FLIGrabVideoFrame . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.34 FLIHomeDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.35 FLIHomeFocuser . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.36 FLIList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.37 FLIListFirst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.38 FLIListNext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.39 FLILockDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.40 FLIOpen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.41 FLIReadIOPort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.42 FLIReadTemperature . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.43 FLISetBitDepth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.44 FLISetCameraMode . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.45 FLISetDAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.46 FLISetDebugLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.47 FLISetExposureTime . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.48 FLISetFanSpeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.49 FLISetFilterPos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.50 FLISetFrameType . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.51 FLISetHBin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.52 FLISetImageArea . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
CONTENTS
ix
4.6.3.53 FLISetNFlushes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.54 FLISetTDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.55 FLISetTemperature . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.56 FLISetVBin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.57 FLIStartVideoMode . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.58 FLIStepMotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.59 FLIStepMotorAsync . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.60 FLIStopVideoMode . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.61 FLITriggerExposure . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.62 FLIUnlockDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.63 FLIUsbBulkIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.3.64 FLIWriteIOPort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.7
server.cpp File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
4.8
server.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
18
CONTENTS
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
Chapter 1
Class Index
1.1 Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
cam_t . .
FLI . . .
micliente
server . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
24
42
43
20
Class Index
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
Chapter 2
File Index
2.1 File List
Here is a list of all files with brief descriptions:
fli.cpp . . . . .
fli.h . . . . . .
fli_call.c . . . .
fli_call.h . . .
fli_server2.cpp
libfli.h . . . . .
server.cpp . . .
server.h . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
47
53
54
58
59
73
85
86
22
File Index
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
Chapter 3
Class Documentation
3.1 cam_t Struct Reference
#include <fli_call.h>
Public Attributes
• flidomain_t domain
• char ∗ dname
• char ∗ name
3.1.1
Member Data Documentation
3.1.1.1
char∗ cam_t::dname
3.1.1.2
flidomain_t cam_t::domain
3.1.1.3
char∗ cam_t::name
The documentation for this struct was generated from the following file:
• fli_call.h
24
Class Documentation
3.2 FLI Class Reference
#include <fli.h>
Collaboration diagram for FLI:
cam_t
cam
FLI
Public Member Functions
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
FLI ()
int expose (int msec, int myfd)
void estadistica (int ∗minn, int ∗maxx, double ∗mean, double ∗stdev, int ∗saturated)
void showinfo (void)
double lee_temperatura (void)
double lee_temperatura_base (void)
double lee_cooler_power (void)
void update (void)
void pon_temperatura (double temp)
void close (void)
int init (int myfd)
void manda_imagen (int myfd)
int deinterlace (int cols, int rows)
void tabla (unsigned short ∗iptr, int cuantos)
void SetMode (flimode_t mode_index)
flimode_t GetMode ()
char ∗ GetMode_String (flimode_t mode_index)
int init_filters (int myfd)
void set_filter_pos (int myfd, int pos)
int get_filter_pos (int myfd)
∼FLI ()
Public Attributes
• double ccdtemp
• double basetemp
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
3.2 FLI Class Reference
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
double power
bool debug
bool busy
bool ccd_init
bool do_estadistica
bool dark
bool full_image
bool cancela
int cbin
int rbin
int corg
int rorg
int etime
int cols
int rows
int imagesize
int imagePixels
int maxpixels
long maxrows
long maxcols
long v_corg
long v_rorg
long v_cols
long v_rows
char model [BUFF_SIZ]
char error_string [255]
bool do_deinterlace
3.2.1
Detailed Description
Author
Colorado <[email protected]>
3.2.2
Constructor & Destructor Documentation
3.2.2.1
FLI::FLI ()
64 {
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
cout <<"\nFLI class ready \n";
debug=FALSE;
ccd_init=FALSE;
//maxcols=cols=2154;
//maxrows=rows=4608;
maxcols=cols=2081;
maxrows=rows=2113;
maxpixels=maxcols*maxrows;
imagesize=cols*rows*2;
imagePixels=cols*rows;
//shutter=TRUE;
etime=100;
cbin=1;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
25
26
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 }
3.2.2.2
101 {
102
103
104 }
Class Documentation
rbin=1;
rorg=0;
corg=0;
busy=FALSE;
ccdtemp=-10.0;
do_estadistica=FALSE;
dark=FALSE;
cancela=FALSE;
//do_deinterlace=true;
do_deinterlace=false;
v_corg=16;
v_rorg=32;
v_cols=2064;
v_rows=2080;
is_filter_init=FALSE;
FLI::∼FLI ()
cout <<"\nFLI class Ended \n";
close();
Here is the call graph for this function:
FLI::~FLI
FLI::close
3.2.3
Member Function Documentation
3.2.3.1
void FLI::close (void)
107 {
108
109
110
111
112
113
114
115
116
117
118
119
120
121 }
FLIClose
cout <<"\nCerrando driver de FLI :"<<cam[0].name<<endl;
cout <<"\nccd init :"<<ccd_init<<endl;
if ( ccd_init )
{
ccd_init=FALSE;
TRYFUNC ( FLIClose, dev );
cout <<"\nCerre dev";
free ( cam[1].name );
cout <<"\nFree Name ";
free ( cam );
cout <<"\nFree Cam \n";
}
Here is the call graph for this function:
FLI::close
FLIClose
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
3.2 FLI Class Reference
3.2.3.2
457 {
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516 }
int FLI::deinterlace (int cols, int rows)
unsigned short *old_iptr;
unsigned short *new_iptr;
int img_size;
int half;
cout <<"deinterlace cols="<<cols<<" rows=" <<rows<<endl;
old_iptr = img;
//tabla(old_iptr,10);
img_size = maxcols * maxrows * sizeof ( u_int16_t );
/* Allocate a new buffer to hold the deinterlaced image. */
if ( ( new_iptr = ( u_int16_t * ) malloc ( img_size ) ) == NULL )
{
sprintf ( error_string, "Error in allocating memory for deinterla
cing. \nSaving interlaced image to disk." );
free ( new_iptr );
exit ( 1 );
//return _ERROR;
}
cout <<"Reserve memoria temporar de "<<img_size<<endl;
int i;
if ( ( float ) cols/2 != ( int ) cols/2 )
{
sprintf ( error_string, "Number of cols must be EVEN for split-se
rial readout. \nSkipping deinterlace." );
free ( new_iptr );
return _ERROR;
}
half=cols*rows/2;
cout <<"mitad "<<half<<endl;
for ( i=0;i< ( cols*rows ) /2;i++ )
{
* ( new_iptr+i ) = * ( old_iptr+ ( 2*i ) );
//cout <<i<<"(A) <-- (old)"<<2*i<<endl;
//* ( new_iptr+ ( cols*rows )-i-1 ) = * ( old_iptr+ ( 2*i ) +1 );
//ultiam prueba asi:
* ( new_iptr+ ( half*2 )-i-1 ) = * ( old_iptr+ ( 2*i ) +1 );
//asi estaba
* ( new_iptr+ ( half ) +i+1 ) = * ( old_iptr+ ( 2*i ) +1 );
//cout <<" (B) "<<half+i+1<< " <-- old="<<
2*i+1 <<endl;
//if (i <20)
{
//cout <<i<<"(A) <-- (old)"<<2*i<<" (B) "<<half+i+1<< "
<-- old="<<2*i+1<<endl;
}
}
//tabla(new_iptr,10);
memcpy ( old_iptr, new_iptr, cols*rows*sizeof ( unsigned short ) );
free ( new_iptr );
return _NO_ERROR;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
27
28
3.2.3.3
402 {
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
Class Documentation
void FLI::estadistica (int ∗ minn, int ∗ maxx, double ∗ mean, double ∗ stdev, int ∗
saturated)
unsigned short j;
long i;
double sum=0.0,sum2=0.0;
*saturated=0;
for ( i=0;i<imagePixels;i++ )
{
j=img[i];
//cout <<i<<".-"<<j<<"
";
if ( j > *maxx ) *maxx=j;
if ( j < *minn )
*minn=j;
if ( j>= maxushort ) *saturated++;
sum = sum+ ( double ) j;
sum2=sum2+ ( double ) ( j ) * ( double ) ( j );
}
printf ( "sat %d of %d \n",*saturated,imagePixels );
*mean= ( double ) sum/imagePixels;
*stdev = pow ( ( sum2 - ( sum*sum ) / ( double ) ( imagePixels ) ) / ( (
double ) ( imagePixels -1 ) ),0.5 );
423 }
3.2.3.4
int FLI::expose (int msec, int myfd)
182 {
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
long tmp1;
char manda[100];
long nrow;
//modificar coordenadas por area visible
corg+=v_corg;
rorg+=v_rorg;
showinfo();
TRYFUNC ( FLISetExposureTime, dev, msec );
TRYFUNC ( FLISetHBin, dev, cbin );
TRYFUNC ( FLISetVBin, dev, rbin );
cout <<"cbin="<<cbin<< " rbin=" <<rbin<<endl;
cout <<"corg="<<corg<< " cols=" <<cols<<endl;
cout <<"rorg="<<rorg<< " rows=" <<rows<<endl;
//setting imagen size
/*
TRYFUNC ( FLISetImageArea, dev, corg, rorg,
(corg + cols ) / cbin, (rorg + rows
) / rbin );
TRYFUNC ( FLISetImageArea, dev, corg*cbin, rorg*rbin,
corg + (cols *cbin) , rorg + (rows*rbin)
*/
TRYFUNC ( FLISetImageArea, dev, corg, rorg,
corg + ( cols ) , rorg + ( rows ) );
);
cout <<"Image upper left corner "<<corg<<" , "<<rorg <<endl;
cout <<"Image lower right corner "<<corg+cols<<" , "<<rorg + rows
<<en
dl;
215
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
3.2 FLI Class Reference
216 //cout <<"FLISetImageArea "<<corg*cbin<<" "<<rorg*rbin<<" "<< corg + (cols *cbi
n)<<" "<< rorg + (rows*rbin)<<endl;
217
218
cout <<"FLISetImageArea "<<corg<<" "<<rorg<<" "<< corg + ( cols ) <<" "<<
rorg + ( rows ) <<endl;
219
220
221
222
//tipo de imagen?
223
if ( dark )
224
{
225
cout <<"Vamos hacer un dark \n";
226
TRYFUNC ( FLISetFrameType, dev, FLI_FRAME_TYPE_DARK );
227
}
228
else
229
{
230
cout <<"Vamos hacer una imagen normal \n";
231
TRYFUNC ( FLISetFrameType, dev, FLI_FRAME_TYPE_NORMAL );
232
}
233
234
TRYFUNC ( FLIExposeFrame, dev );
235
236
do
237
{
238
TRYFUNC ( FLIGetExposureStatus, dev, &tmp1 );
239
if ( r )
240
break;
241
242
//usleep ( tmp1 * 1000 );
243
sprintf ( manda,"TIME_REMAINING %ld \n",tmp1 );
244
red.responde_cliente ( manda,myfd );
245
//verificar si hay que cancelar
246
if ( cancela )
247
{
248
//do_cancela ( );
249
TRYFUNC ( FLICancelExposure, dev );
250
printf ( "Abortando Expose......!!!!!!!!!! :( ;( \n" );
251
sprintf ( manda,"CANCELADO \n" );
252
red.responde_cliente ( manda,myfd );
253
cancela=FALSE;
254
return 0;
255
}
256
usleep ( 100000 );
257
}
258
while ( tmp1 );
259
printf ( "Ya termine exposicion, voy a leer la imagen del CCD ...........
........................\n" );
260
for ( nrow = 0; nrow < rows; nrow++ )
261
{
262
TRYFUNC ( FLIGrabRow, dev, &img[nrow * cols], cols );
263
if ( r )
264
break;
265
}
266
267
268
//grabar imagen
269
//TRYFUNC ( writeraw, ( char * ) "imagen.bin", cols, rows, img );
270
printf ( "Ya termine exposicion *****************************************
**************************\n" );
271
return !r;
272 }
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
29
30
Class Documentation
Here is the call graph for this function:
FLICancelExposure
FLIExposeFrame
FLIGetExposureStatus
FLIGrabRow
FLISetExposureTime
FLI::expose
FLISetFrameType
FLISetHBin
FLISetImageArea
FLISetVBin
server::responde_cliente
FLI::showinfo
3.2.3.5
int FLI::get_filter_pos (int myfd)
626 {
627
628
629
630
631
632
long pos;
char manda[100];
if (!is_filter_init){
printf ("Rueda de filtros NO inicializada, voy a Inicializarla..
\n");
633
634
635
636
637
638
639
640
641
642
643
644
645
646 }
init_filters(myfd);
printf ("Rueda de filtros: Voy a HOME...\n");
set_filter_pos(myfd,0);
}
printf("Reading filter position \n");
TRYFUNC(FLIGetFilterPos,dev_filter,&pos);
sprintf ( manda,"FLI_POS %ld \n",pos );
printf(manda);
red.responde_cliente ( manda,myfd );
return pos;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
3.2 FLI Class Reference
31
Here is the call graph for this function:
FLIGetFilterPos
server::responde_cliente
FLI::get_filter_pos
FLIFreeList
FLI::init_filters
findfilters
FLISetFilterPos
FLIOpen
FLIList
FLI::set_filter_pos
3.2.3.6
flimode_t FLI::GetMode ()
540 {
541
542
543
544
545
546 }
static flimode_t mode_index;
//FLISetCameraMode(flidev_t dev, flimode_t mode_index)
TRYFUNC ( FLIGetCameraMode, dev, &mode_index );
return mode_index;
Here is the call graph for this function:
FLI::GetMode
FLIGetCameraMode
char ∗ FLI::GetMode_String (flimode_t mode_index)
3.2.3.7
549 {
550
551
552
553
554
555
//flimode_t mode_index;
static char mode_string[BUFF_SIZ];
cout <<"index ="<<mode_index<<endl;
TRYFUNC ( FLIGetCameraModeString, dev, mode_index, mode_string,BUFF_SIZ )
;
556
557
558
559 }
cout <<"mode string
="<<mode_string<<endl;
return mode_string;
Here is the call graph for this function:
FLI::GetMode_String
3.2.3.8
275 {
276
277
278
FLIGetCameraModeString
int FLI::init (int myfd)
int numcams;
int i=0, flushes = 2;
long tmp1, tmp2, tmp3, tmp4,
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
img_rows, row_width;
32
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
Class Documentation
double d1, d2;
char buff[BUFF_SIZ];
int img_size;
if ( ccd_init==TRUE )
{
sprintf ( buff,"info
red.responde_cliente
sprintf ( buff,"info
v_corg, v_rorg, v_cols, v_rows );
red.responde_cliente
sprintf ( buff,"info
red.responde_cliente
red.responde_cliente
Model: %s\n",model );
( buff,myfd );
Visible area: (%ld, %ld)(%ld, %ld) \n",
( buff,myfd );
Work Size: %d, %d \n", cols,rows );
( buff,myfd );
( ( char * ) "GOOD ->CCD INIT OK \n",myfd );
return 0;
}
cout << "Inicializando CCD" << endl;
//TRYFUNC ( FLISetDebugLevel, NULL /* "NO HOST" */, FLIDEBUG_ALL );
//TRYFUNC ( FLISetDebugLevel, NULL /* "NO HOST" */, FLIDEBUG_FAIL );
TRYFUNC ( FLIGetLibVersion, libver, LIBVERSIZ );
info ( "Library version ’%s’", libver );
sprintf ( buff,"info Library version: %s\n",libver );
red.responde_cliente ( buff,myfd );
numcams=findcams ( FLIDOMAIN_USB, &cam );
printf ( "cams: %d \n", numcams );
if ( numcams<1 )
{
//hay problemas
ccd_init=FALSE;
red.responde_cliente ( ( char * ) "FAIL ->Hay problemas con la in
icializacion \n",myfd );
return -1;
}
printf ( "\naqui 1\n" );
info ( "Trying camera ’%s’ from %s domain", cam[i].name, cam[i].dname );
sprintf ( buff,"info type: %s, -->%s\n",cam[i].name, cam[i].dname );
red.responde_cliente ( buff,myfd );
TRYFUNC ( FLIOpen, &dev, cam[i].name, FLIDEVICE_CAMERA | cam[i].domain );
printf ( "Resultado %ld",r );
if ( r<0 )
{
//hay problemas
ccd_init=FALSE;
red.responde_cliente ( ( char * ) "FAIL ->Hay problemas con la in
icializacion \n",myfd );
return -1;
}
cout << "dev:" << dev <<endl;
printf ( "\naqui 2\n" );
TRYFUNC ( FLIGetModel, dev, model, BUFF_SIZ );
info ( "Model:
%s", model );
sprintf ( buff,"info Model: %s\n",model );
red.responde_cliente ( buff,myfd );
TRYFUNC ( FLIGetHWRevision, dev, &tmp1 );
info ( "Hardware Rev: %ld", tmp1 );
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
3.2 FLI Class Reference
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399 }
TRYFUNC ( FLIGetFWRevision, dev, &tmp1 );
info ( "Firmware Rev: %ld", tmp1 );
TRYFUNC ( FLIGetPixelSize, dev, &d1, &d2 );
info ( "Pixel Size:
%f x %f", d1, d2 );
sprintf ( buff,"info pixel size: %f x %f\n",d1, d2 );
red.responde_cliente ( buff,myfd );
TRYFUNC ( FLIGetArrayArea, dev, &tmp1, &tmp2, &maxcols, &maxrows );
info ( "Array area:
(%ld, %ld)(%ld, %ld)", tmp1, tmp2, maxcols,
maxrows );
sprintf ( buff,"info Array area: (%ld, %ld)(%ld, %ld) \n", tmp1, tmp2,
maxcols, maxrows );
red.responde_cliente ( buff,myfd );
TRYFUNC ( FLIGetVisibleArea, dev, &v_corg, &v_rorg, &v_cols, &v_rows );
info ( "Visible area: (%ld, %ld)(%ld, %ld)", v_corg, v_rorg, v_cols,
v_rows );
cols=row_width = ( v_cols - v_corg ) / cbin;
rows=img_rows = ( v_rows - v_rorg ) / rbin;
sprintf ( buff,"info Visible area: (%ld, %ld)(%ld, %ld) \n", v_corg,
v_rorg, v_cols, v_rows );
red.responde_cliente ( buff,myfd );
sprintf ( buff,"info Work Size: %d, %d \n", cols,rows );
red.responde_cliente ( buff,myfd );
//poner modo 16 bits, algunas camaras no lo soportan
TRYFUNC ( FLISetBitDepth, dev, FLI_MODE_16BIT );
tmp1=v_corg;
tmp2=v_rorg;
tmp3=v_cols;
tmp4=v_rows;
cout <<"FLISetImageArea "<<tmp1<<" "<<tmp2<<" "<<tmp1 + ( tmp3 - tmp1 ) <
<" "<<tmp2 + ( tmp4 - tmp2 ) / rbin<<endl;
TRYFUNC ( FLISetImageArea, dev, tmp1, tmp2,
tmp1 + ( tmp3 - tmp1 ) / cbin, tmp2 + ( tmp4 - tmp2 ) / rbin );
TRYFUNC ( FLISetNFlushes, dev, flushes );
TRYFUNC ( FLIGetTemperature, dev, &ccdtemp );
info ( "Temperature: %f", ccdtemp );
sprintf ( buff,"LEE_TEMP %2.1f\n",ccdtemp );
red.responde_cliente ( buff,myfd );
//img_size = img_rows * row_width * sizeof ( u_int16_t );
img_size = maxcols * maxrows * sizeof ( u_int16_t );
printf ( "Voy a reservar memoria de %d Bytes \n", img_size );
if ( ( img = ( u_int16_t * ) malloc ( img_size ) ) == NULL )
{
err ( 1, "malloc() failed" );
exit ( 1 );
}
printf ( "Image buffer: 0x%X ( %d ) \n", img, img );
ccd_init=TRUE;
red.responde_cliente ( ( char * ) "GOOD ->CCD INIT OK \n",myfd );
return 1;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
33
34
Class Documentation
Here is the call graph for this function:
FLIFreeList
findcams
FLIList
FLIGetArrayArea
FLIGetFWRevision
FLIGetHWRevision
FLIGetLibVersion
FLIGetModel
FLIGetPixelSize
FLI::init
FLIGetTemperature
FLIGetVisibleArea
FLIOpen
FLISetBitDepth
FLISetImageArea
FLISetNFlushes
server::responde_cliente
3.2.3.9
562 {
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
int FLI::init_filters (int myfd)
int numcams;
int i=0, flushes = 2;
long tmp1, tmp2, tmp3, tmp4,
double d1, d2;
char buff[BUFF_SIZ];
int img_size;
img_rows, row_width;
cout << "Inicializando Rueda de filtros" << endl;
//TRYFUNC ( FLISetDebugLevel, NULL /* "NO HOST" */, FLIDEBUG_ALL );
//TRYFUNC ( FLISetDebugLevel, NULL /* "NO HOST" */, FLIDEBUG_FAIL );
numcams=findfilters ( FLIDOMAIN_USB, &cam );
printf ( "cams: %d \n", numcams );
if ( numcams<1 )
{
//hay problemas
ccd_init=FALSE;
red.responde_cliente ( ( char * ) "FAIL ->Hay problemas con la in
icializacion de la rueda de filtros \n",myfd );
return -1;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
3.2 FLI Class Reference
586
587
588
589
590
35
}
printf ( "\naqui 1\n" );
info ( "Trying filter wheels ’%s’ from %s domain", cam[i].name, cam[i].dn
ame );
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608 }
sprintf ( buff,"info type: %s, -->%s\n",cam[i].name, cam[i].dname );
red.responde_cliente ( buff,myfd );
TRYFUNC ( FLIOpen, &dev_filter, cam[i].name, FLIDEVICE_FILTERWHEEL | cam[
i].domain );
printf ( "Resultado %ld",r );
if ( r<0 )
{
//hay problemas
ccd_init=FALSE;
red.responde_cliente ( ( char * ) "FAIL ->Hay problemas con la in
icializacion de la rueda de filtros\n",myfd );
return -1;
}
cout << "dev:" << dev_filter <<endl;
printf ( "\naqui 2\n" );
is_filter_init=TRUE;
return 1;
Here is the call graph for this function:
FLIFreeList
findfilters
FLIList
FLI::init_filters
FLIOpen
server::responde_cliente
3.2.3.10 double FLI::lee_cooler_power (void)
153 {
154
155
156 }
TRYFUNC ( FLIGetCoolerPower
return power;
,dev, &power);
Here is the call graph for this function:
FLI::lee_cooler_power
FLIGetCoolerPower
3.2.3.11 double FLI::lee_temperatura (void)
140 {
141
142
143 }
TRYFUNC ( FLIGetTemperature, dev, &ccdtemp );
return ccdtemp;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
36
Class Documentation
Here is the call graph for this function:
FLI::lee_temperatura
FLIGetTemperature
3.2.3.12 double FLI::lee_temperatura_base (void)
146 {
147
148
149
150 }
//TRYFUNC ( FLIGetTemperature, dev, &ccdtemp );
TRYFUNC ( FLIReadTemperature ,dev, FLI_TEMPERATURE_BASE, &basetemp);
return basetemp;
Here is the call graph for this function:
FLI::lee_temperatura_base
FLIReadTemperature
3.2.3.13 void FLI::manda_imagen (int myfd)
427 {
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454 }
int i;
int tx=0;
unsigned short pixel;
//char manda[100];
FILE *fnet;
cout <<"En mandabin con descriptor "<<myfd<<endl;
fnet = fdopen ( dup ( myfd ), "w" );
if ( ( fnet == NULL ) )
{
cout <<" Err en el fdopen fnet\n";
}
cout <<"Voy a madar imagen via red "<<imagePixels<<" Fd="<<myfd<<endl;
tx=0;
for ( i=0;i<imagePixels;i++ )
{
pixel=img[i];
tx+=fwrite ( &pixel,sizeof ( pixel ),1,fnet );
}
cout <<i<<" Mande = "<<pixel<<" bytes, actual de="<<tx<<" (Total="<<image
Pixels<<" )"<<endl;
fflush ( fnet );
fclose ( fnet );
3.2.3.14 void FLI::pon_temperatura (double temp)
160 {
161
162
163
164 }
cout << "Regular temperatura a:" << temp <<endl;
TRYFUNC ( FLISetTemperature, dev, temp );
cout << "dev:" << dev <<endl;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
3.2 FLI Class Reference
37
Here is the call graph for this function:
FLI::pon_temperatura
FLISetTemperature
3.2.3.15 void FLI::set_filter_pos (int myfd, int pos)
613 {
614
615
616
if (!is_filter_init){
printf ("Rueda de filtros NO inicializada, voy a Inicializarla..
\n");
617
618
619
620
621
622
623 }
init_filters(myfd);
}
printf("Moving filter to: %d \n",pos);
TRYFUNC(FLISetFilterPos,dev_filter,pos);
cout << "dev:" << dev_filter <<endl;
Here is the call graph for this function:
FLIFreeList
FLISetFilterPos
findfilters
FLI::init_filters
FLIOpen
FLI::set_filter_pos
FLIList
server::responde_cliente
3.2.3.16 void FLI::SetMode (flimode_t mode_index)
531 {
532
533
534
535 }
//FLISetCameraMode(flidev_t dev, flimode_t mode_index)
TRYFUNC ( FLISetCameraMode, dev, mode_index );
Here is the call graph for this function:
FLI::SetMode
3.2.3.17 void FLI::showinfo (void)
167 {
168
169
170
171
172
173
printf
printf
printf
printf
printf
printf
(
(
(
(
(
(
"\n
"\n
"\n
"\n
"\n
"\n
Showinfo:" );
Modelo=%s",model );
ETIME=%d",etime );
XSIZE=%d",cols );
YSIZE=%d",rows );
CBIN=%d",cbin );
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
FLISetCameraMode
38
174
175
176
177
178
179 }
Class Documentation
printf
printf
printf
printf
printf
(
(
(
(
(
"\n
"\n
"\n
"\n
"\n
RBIN=%d",rbin );
CORG=%d",corg );
RORG=%d",rorg );
DARK=%d",dark );
DEBUG=%d\n",debug );
3.2.3.18 void FLI::tabla (unsigned short ∗ iptr, int cuantos)
519 {
520
521
522
523
524
525
526
527
528 }
unsigned short pixel;
int i;
for ( i=0;i<cuantos;i++ )
{
pixel=iptr[i];
cout <<i<<" = "<<pixel<<endl;
}
3.2.3.19 void FLI::update (void)
124 {
125
126
127
128
129
130
131
132
133
134
135
136
137 }
int x,y;
x=maxcols/cbin;
y=maxrows/rbin;
// revisa que el numero de columnas y renglones sea par
if ( x % 2 != 0 ) x--; //quitarle un numero para hacerlo par
if ( y % 2 != 0 ) y--; //quitarle un numero para hacerlo par
maxpixels=x*y;
imagesize=cols*rows*2;
imagePixels=cols*rows;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
3.2 FLI Class Reference
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
39
40
Class Documentation
3.2.4
Member Data Documentation
3.2.4.1
double FLI::basetemp
3.2.4.2
bool FLI::busy
3.2.4.3
bool FLI::cancela
3.2.4.4
int FLI::cbin
3.2.4.5
bool FLI::ccd_init
3.2.4.6
double FLI::ccdtemp
3.2.4.7
int FLI::cols
3.2.4.8
int FLI::corg
3.2.4.9
bool FLI::dark
3.2.4.10 bool FLI::debug
3.2.4.11 bool FLI::do_deinterlace
3.2.4.12 bool FLI::do_estadistica
3.2.4.13 char FLI::error_string[255]
3.2.4.14 int FLI::etime
3.2.4.15 bool FLI::full_image
3.2.4.16 int FLI::imagePixels
3.2.4.17 int FLI::imagesize
3.2.4.18 long FLI::maxcols
3.2.4.19 int FLI::maxpixels
3.2.4.20 long FLI::maxrows
3.2.4.21 char FLI::model[BUFF_SIZ]
3.2.4.22 double FLI::power
3.2.4.23 int FLI::rbin
3.2.4.24 int FLI::rorg
3.2.4.25 int FLI::rows
3.2.4.26 long FLI::v_cols
3.2.4.27 long FLI::v_corg
3.2.4.28 long FLI::v_rorg
3.2.4.29 long FLI::v_rows
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
3.2 FLI Class Reference
• fli.h
• fli.cpp
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
41
42
Class Documentation
3.3 micliente Struct Reference
#include <server.h>
Public Attributes
• string instruccion
• int local_fd
• char ip [20]
3.3.1
Member Data Documentation
3.3.1.1
string micliente::instruccion
3.3.1.2
char micliente::ip[20]
3.3.1.3
int micliente::local_fd
The documentation for this struct was generated from the following file:
• server.h
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
3.4 server Class Reference
3.4 server Class Reference
#include <server.h>
Public Member Functions
•
•
•
•
•
•
•
•
server ()
∼server ()
void init (int myport)
void netclose (void)
void set_ip (char ∗newip)
void revisa ()
int checa ()
void responde_cliente (char ∗mensaje, int myfd)
Public Attributes
•
•
•
•
•
•
•
•
•
•
•
short op
char ip [20]
short procesando
bool salida
bool busy
short status
short debug
char instruccion [200]
bool CANCELA
int client_sockfd
FILE ∗ fileSal
3.4.1
Constructor & Destructor Documentation
3.4.1.1
server::server ()
34 {
35
36
37
38
39 }
3.4.1.2
42 {
43
44 }
cout <<"Net Server V1.2 loaded..."<<endl;
ch=1;
CANCELA=false;
salida=false;
server::∼server ()
cout <<"Closing server side..."<<endl;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
43
44
Class Documentation
3.4.2
Member Function Documentation
3.4.2.1
int server::checa ()
85 {
86 //
87
88
89
90
91
92
int i;
debug=1;
if ( debug ) cout <<"Esperando datos de red\n"<<endl;
client_len=sizeof ( client_address );
//esperar una nueva conexion
client_sockfd=accept ( server_sockfd, ( struct sockaddr * ) &client_addre
ss, ( size_t * ) &client_len );
93
94
//cout <<"FD del cliente "<<client_sockfd<<endl;
95
//if ( client_sockfd<0 )
96
return client_sockfd;
97 /*
98
set_ip ( inet_ntoa ( client_address.sin_addr ) ); // return the IP
99
100
if ( debug >1 ) printf ( "\nadding client on fd %d \n",client_sockfd );
101
i=read ( client_sockfd,&instruccion,sizeof ( instruccion ) );
102
103
return ( i );
104 */
105 } //end red_revisa
3.4.2.2
void server::init (int myport)
48 {
49
50
51
52
53
54
55
56
57
58
59
60
61
62
int e;
int flag = 1;
if ( debug ) printf ( "\nServer init...\n" );
//crea socket para el servidor sin nombre
server_sockfd=socket ( AF_INET,SOCK_STREAM,0 );
//define las caracteristicas del socket
server_address.sin_family=AF_INET;
server_address.sin_addr.s_addr=htonl ( INADDR_ANY );
server_address.sin_port=htons ( myport );
memset ( server_address.sin_zero, ’\0’, sizeof server_address.sin_zero );
//fijar opciones del socket
e=setsockopt ( server_sockfd, SOL_SOCKET, SO_REUSEADDR,&flag, sizeof ( fl
ag ) );
63
64
65
66
67
68
69
if ( debug ) printf ( "\nsetsockopt=%d",e );
if ( e<0 ) perror ( "Error:" );
//asignar el nombre al socket, fijar mi ip y puerto
server_len=sizeof ( server_address );
e=bind ( server_sockfd, ( struct sockaddr * ) &server_address,server_len
);
70
71
72
73
74
75
76
77
78
if ( debug ) printf ( "\nbind=%d",e );
if ( e<0 )
{
perror ( "Error: Al conectarse por via red BIND:" );
printf ( "\nEsperar un minuto antes de volver a correr el program
a\n\n" );
exit ( 1 );
}
//crea queue para 5 conexiones
e=listen ( server_sockfd,5 );
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
3.4 server Class Reference
79
80
81 }
3.4.2.3
108 {
109
110
111
112 }
3.4.2.4
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
if ( debug ) printf ( "\nlisten=%d",e );
if ( debug ) printf ( "\nserver init...END \n" );
void server::netclose (void)
if ( debug ) printf ( "\nCerrando conexiones de red del servidor" );
close ( server_sockfd );
if ( debug ) printf ( "\nYA CERRE TODAS LA CONEXIONES red\n" );
void server::responde_cliente (char ∗ mensaje, int myfd)
{
static int i=0;
//FILE *fnet;
char salida[200];
int j;
strcpy ( salida,mensaje );
/*
fnet = fdopen ( dup ( myfd ), "w" );
if ( ( fnet == NULL ) )
{
cout <<" Err en el fdopen fnet casi_expone\n";
}
fwrite ( salida,strlen ( salida ),1,fnet );
//fflush(fnet);
fclose ( fnet );
i++;
cout <<"mande a cliente ("<<myfd<<") : "<<salida<<" #="<<i<<endl;
*/
i++;
j=write(myfd,salida,strlen ( salida ));
cout <<"mande a cliente ("<<myfd<<") : "<<salida<<" #="<<j<<endl;
}
3.4.2.5
void server::revisa ()
3.4.2.6
void server::set_ip (char ∗ newip)
115 {
116
117
118
119 }
//if (debug) printf("old ip %s",ip);
strcpy ( ip,newip );
//if (debug) printf("new ip %s \n",newip);
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
45
46
Class Documentation
3.4.3
Member Data Documentation
3.4.3.1
bool server::busy
3.4.3.2
bool server::CANCELA
3.4.3.3
int server::client_sockfd
3.4.3.4
short server::debug
3.4.3.5
FILE∗ server::fileSal
3.4.3.6
char server::instruccion[200]
3.4.3.7
char server::ip[20]
3.4.3.8
short server::op
3.4.3.9
short server::procesando
3.4.3.10 bool server::salida
3.4.3.11 short server::status
The documentation for this class was generated from the following files:
• server.h
• server.cpp
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
Chapter 4
File Documentation
4.1 fli.cpp File Reference
#include "fli.h"
#include <sys/types.h>
#include <iostream>
#include <cstdlib>
#include <math.h>
#include <sys/time.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string>
#include <sys/stat.h>
#include <stdarg.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <err.h>
#include <limits.h>
#include <errno.h>
Include dependency graph for fli.cpp:
fli.cpp
sys/types.h
iostream
cstdlib
math.h
sys/time.h
arpa/inet.h
sys/socket.h
netinet/in.h
stdio.h
string
sys/stat.h
stdarg.h
stdlib.h
unistd.h
string.h
fcntl.h
err.h
limits.h
errno.h
48
File Documentation
This graph shows which files directly or indirectly include this file:
fli.cpp
Defines
•
•
•
•
#define TRYFUNC(f,...)
#define info(format, args...) printf("%s: " format "\n", __progname, ## args)
#define warnc(c, format, args...) warnx(format ": %s", ## args, strerror(c))
#define LIBVERSIZ 1024
Functions
• int findcams (flidomain_t domain, cam_t ∗∗cam)
• int writeraw (char ∗filename, int width, int height, void ∗data)
• int findfilters (flidomain_t domain, cam_t ∗∗cam)
Variables
•
•
•
•
const unsigned short maxushort = 65534
const char ∗ __progname
server red
pthread_mutex_t mutex_busy
4.1.1
Define Documentation
4.1.1.1
#define info(format, args...) printf("%s: " format "\n", __progname, ## args)
4.1.1.2
#define LIBVERSIZ 1024
4.1.1.3
#define TRYFUNC(f, ...)
Value:
do {
if ((r = f(__VA_ARGS__)))
warnc(-r, #f "() failed");
} while (0)
\
\
\
4.1.1.4
#define warnc(c, format, args...) warnx(format ": %s", ## args, strerror(c))
4.1.2
Function Documentation
4.1.2.1
int findcams (flidomain_t domain, cam_t ∗∗ cam)
25 {
26
27
long r;
char **tmplist;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.1 fli.cpp File Reference
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 }
49
int numcams = 0;
printf ( "\nfinding cams...\n" );
TRYFUNC ( FLIList, domain | FLIDEVICE_CAMERA, &tmplist );
if ( tmplist != NULL && tmplist[0] != NULL )
{
int i, cams = 0;
for ( i = 0; tmplist[i] != NULL; i++ )
cams++;
if ( ( *cam = (cam_t*)realloc ( *cam, ( numcams + cams ) * sizeof
( cam_t ) ) ) == NULL )
err ( 1, "realloc() failed" );
for ( i = 0; tmplist[i] != NULL; i++ )
{
int j;
cam_t *tmpcam = *cam + i;
for ( j = 0; tmplist[i][j] != ’\0’; j++ )
if ( tmplist[i][j] == ’;’ )
{
tmplist[i][j] = ’\0’;
break;
}
tmpcam->domain = domain;
switch ( domain )
{
case FLIDOMAIN_PARALLEL_PORT:
tmpcam->dname = "parallel port";
break;
case FLIDOMAIN_USB:
tmpcam->dname = "USB";
break;
case FLIDOMAIN_SERIAL:
tmpcam->dname = "serial";
break;
case FLIDOMAIN_INET:
tmpcam->dname = "inet";
break;
default:
tmpcam->dname = "Unknown domain";
break;
}
tmpcam->name = strdup ( tmplist[i] );
}
numcams += cams;
}
TRYFUNC ( FLIFreeList, tmplist );
printf ( "Encontre %d camaras \n",numcams );
return numcams;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
50
File Documentation
Here is the call graph for this function:
FLIFreeList
findcams
FLIList
4.1.2.2
118 {
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
int findfilters (flidomain_t domain, cam_t ∗∗ cam)
long r;
char **tmplist;
int numcams = 0;
printf ( "\nfinding filter wheels\n" );
TRYFUNC ( FLIList, domain | FLIDEVICE_FILTERWHEEL, &tmplist );
printf("list %d \n",tmplist);
printf("list %d \n",tmplist[0]);
if ( tmplist != NULL && tmplist[0] != NULL )
{
int i, cams = 0;
for ( i = 0; tmplist[i] != NULL; i++ )
cams++;
if ( ( *cam = (cam_t*)realloc ( *cam, ( numcams + cams ) * sizeof
( cam_t ) ) ) == NULL )
err ( 1, "realloc() failed" );
for ( i = 0; tmplist[i] != NULL; i++ )
{
int j;
cam_t *tmpcam = *cam + i;
for ( j = 0; tmplist[i][j] != ’\0’; j++ )
if ( tmplist[i][j] == ’;’ )
{
tmplist[i][j] = ’\0’;
break;
}
tmpcam->domain = domain;
switch ( domain )
{
case FLIDOMAIN_PARALLEL_PORT:
tmpcam->dname = "parallel port";
break;
case FLIDOMAIN_USB:
tmpcam->dname = "USB";
break;
case FLIDOMAIN_SERIAL:
tmpcam->dname = "serial";
break;
case FLIDOMAIN_INET:
tmpcam->dname = "inet";
break;
default:
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.1 fli.cpp File Reference
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187 }
51
tmpcam->dname = "Unknown domain";
break;
}
tmpcam->name = strdup ( tmplist[i] );
}
}
numcams += cams;
else {
printf ( "No Encontre NADA
\n" );
}
TRYFUNC ( FLIFreeList, tmplist );
printf ( "Encontre %d camaras \n",numcams );
return numcams;
Here is the call graph for this function:
FLIFreeList
findfilters
FLIList
4.1.2.3
92 {
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114 }
int writeraw (char ∗ filename, int width, int height, void ∗ data)
int fd, size, err;
if ( ( fd = open ( filename, O_WRONLY | O_CREAT | /* O_EXCL */ O_TRUNC,
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ) ) == -1 )
{
warn ( "open(%s) failed", filename );
return -errno;
}
size = width * height * sizeof ( u_int16_t );
if ( ( err = write ( fd, data, size ) ) != size )
{
warn ( "write() failed" );
err = -errno;
}
else
err = 0;
close ( fd );
return err;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
52
File Documentation
4.1.3
Variable Documentation
4.1.3.1
const char∗ __progname
4.1.3.2
const unsigned short maxushort = 65534
4.1.3.3
pthread_mutex_t mutex_busy
4.1.3.4
server red
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.2 fli.h File Reference
53
4.2 fli.h File Reference
#include "libfli.h"
#include "fli_call.h"
Include dependency graph for fli.h:
fli.h
libfli.h
fli_call.h
sys/types.h
This graph shows which files directly or indirectly include this file:
fli.h
fli_server2.cpp
Classes
• class FLI
Defines
•
•
•
•
•
#define TRUE 1
#define FALSE 0
#define BUFF_SIZ 4096
#define _ERROR -1
#define _NO_ERROR 0
4.2.1
Define Documentation
4.2.1.1
#define _ERROR -1
4.2.1.2
#define _NO_ERROR 0
4.2.1.3
#define BUFF_SIZ 4096
4.2.1.4
#define FALSE 0
4.2.1.5
#define TRUE 1
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
54
File Documentation
4.3 fli_call.c File Reference
#include <sys/types.h>
#include <sys/stat.h>
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <err.h>
#include <limits.h>
#include <errno.h>
#include "libfli.h"
#include "fli_call.h"
Include dependency graph for fli_call.c:
fli_call.c
sys/stat.h
stdarg.h
stdlib.h
stdio.h
unistd.h
string.h
fcntl.h
err.h
limits.h
errno.h
libfli.h
fli_call.h
sys/types.h
Functions
• int findcams (flidomain_t domain, cam_t ∗∗cam)
• int findfilters (flidomain_t domain, cam_t ∗∗cam)
• int writeraw (char ∗filename, int width, int height, void ∗data)
4.3.1
Function Documentation
4.3.1.1
int findcams (flidomain_t domain, cam_t ∗∗ cam)
25 {
26
27
28
29
30
31
32
33
34
35
36
37
long r;
char **tmplist;
int numcams = 0;
printf ( "\nfinding cams...\n" );
TRYFUNC ( FLIList, domain | FLIDEVICE_CAMERA, &tmplist );
if ( tmplist != NULL && tmplist[0] != NULL )
{
int i, cams = 0;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.3 fli_call.c File Reference
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 }
55
for ( i = 0; tmplist[i] != NULL; i++ )
cams++;
if ( ( *cam = (cam_t*)realloc ( *cam, ( numcams + cams ) * sizeof
( cam_t ) ) ) == NULL )
err ( 1, "realloc() failed" );
for ( i = 0; tmplist[i] != NULL; i++ )
{
int j;
cam_t *tmpcam = *cam + i;
for ( j = 0; tmplist[i][j] != ’\0’; j++ )
if ( tmplist[i][j] == ’;’ )
{
tmplist[i][j] = ’\0’;
break;
}
tmpcam->domain = domain;
switch ( domain )
{
case FLIDOMAIN_PARALLEL_PORT:
tmpcam->dname = "parallel port";
break;
case FLIDOMAIN_USB:
tmpcam->dname = "USB";
break;
case FLIDOMAIN_SERIAL:
tmpcam->dname = "serial";
break;
case FLIDOMAIN_INET:
tmpcam->dname = "inet";
break;
default:
tmpcam->dname = "Unknown domain";
break;
}
tmpcam->name = strdup ( tmplist[i] );
}
numcams += cams;
}
TRYFUNC ( FLIFreeList, tmplist );
printf ( "Encontre %d camaras \n",numcams );
return numcams;
Here is the call graph for this function:
FLIFreeList
findcams
FLIList
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
56
4.3.1.2
118 {
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
File Documentation
int findfilters (flidomain_t domain, cam_t ∗∗ cam)
long r;
char **tmplist;
int numcams = 0;
printf ( "\nfinding filter wheels\n" );
TRYFUNC ( FLIList, domain | FLIDEVICE_FILTERWHEEL, &tmplist );
printf("list %d \n",tmplist);
printf("list %d \n",tmplist[0]);
if ( tmplist != NULL && tmplist[0] != NULL )
{
int i, cams = 0;
for ( i = 0; tmplist[i] != NULL; i++ )
cams++;
if ( ( *cam = (cam_t*)realloc ( *cam, ( numcams + cams ) * sizeof
( cam_t ) ) ) == NULL )
err ( 1, "realloc() failed" );
for ( i = 0; tmplist[i] != NULL; i++ )
{
int j;
cam_t *tmpcam = *cam + i;
for ( j = 0; tmplist[i][j] != ’\0’; j++ )
if ( tmplist[i][j] == ’;’ )
{
tmplist[i][j] = ’\0’;
break;
}
tmpcam->domain = domain;
switch ( domain )
{
case FLIDOMAIN_PARALLEL_PORT:
tmpcam->dname = "parallel port";
break;
case FLIDOMAIN_USB:
tmpcam->dname = "USB";
break;
case FLIDOMAIN_SERIAL:
tmpcam->dname = "serial";
break;
case FLIDOMAIN_INET:
tmpcam->dname = "inet";
break;
default:
tmpcam->dname = "Unknown domain";
break;
}
tmpcam->name = strdup ( tmplist[i] );
}
}
numcams += cams;
else {
printf ( "No Encontre NADA
\n" );
}
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.3 fli_call.c File Reference
182
183
184
185
186
187 }
57
TRYFUNC ( FLIFreeList, tmplist );
printf ( "Encontre %d camaras \n",numcams );
return numcams;
Here is the call graph for this function:
FLIFreeList
findfilters
FLIList
4.3.1.3
92 {
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114 }
int writeraw (char ∗ filename, int width, int height, void ∗ data)
int fd, size, err;
if ( ( fd = open ( filename, O_WRONLY | O_CREAT | /* O_EXCL */ O_TRUNC,
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ) ) == -1 )
{
warn ( "open(%s) failed", filename );
return -errno;
}
size = width * height * sizeof ( u_int16_t );
if ( ( err = write ( fd, data, size ) ) != size )
{
warn ( "write() failed" );
err = -errno;
}
else
err = 0;
close ( fd );
return err;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
58
File Documentation
4.4 fli_call.h File Reference
This graph shows which files directly or indirectly include this file:
fli_call.h
fli.h
fli_call.c
fli_server2.cpp
Classes
• struct cam_t
Defines
•
•
•
•
#define TRYFUNC(f,...)
#define info(format, args...) printf("%s: " format "\n", __progname, ## args)
#define warnc(c, format, args...) warnx(format ": %s", ## args, strerror(c))
#define LIBVERSIZ 1024
4.4.1
Define Documentation
4.4.1.1
#define info(format, args...) printf("%s: " format "\n", __progname, ## args)
4.4.1.2
#define LIBVERSIZ 1024
4.4.1.3
#define TRYFUNC(f, ...)
Value:
do {
if ((r = f(__VA_ARGS__)))
warnc(-r, #f "() failed");
} while (0)
4.4.1.4
\
\
\
#define warnc(c, format, args...) warnx(format ": %s", ## args, strerror(c))
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.5 fli_server2.cpp File Reference
59
4.5 fli_server2.cpp File Reference
#include <iostream>
#include <cstdlib>
#include <pthread.h>
#include <string.h>
#include <string>
#include <list>
#include <ctype.h>
#include <signal.h>
#include <semaphore.h>
#include "server.h"
#include "fli.h"
#include "libfli.h"
Include dependency graph for fli_server2.cpp:
fli_server2.cpp
iostream
cstdlib
pthread.h
string.h
list
string
ctype.h
sys/time.h
signal.h
arpa/inet.h
semaphore.h
server.h
sys/socket.h
fli.h
netinet/in.h
sys/types.h
Defines
•
•
•
•
#define PORT 9710
#define MyVersion "2.12"
#define TRUE 1
#define FALSE 0
Functions
•
•
•
•
•
void ∗ onthread_procesa_mando (void ∗arg)
int procesa_mando (int myfd, char ∗txt)
void casi_expone (char ∗params, int myfd)
void test ()
int main (int argc, char ∗argv[ ])
Variables
• server red
• pthread_t thread_red
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
stdio.h
libfli.h
fli_call.h
60
File Documentation
•
•
•
•
•
•
•
pthread_mutex_t mutex_busy
void ∗ t_result
int res
pthread_t thread_mando
list< micliente > lista
list< micliente >::iterator i
FLI ccd
4.5.1
Define Documentation
4.5.1.1
#define FALSE 0
4.5.1.2
#define MyVersion "2.12"
4.5.1.3
#define PORT 9710
4.5.1.4
#define TRUE 1
4.5.2
Function Documentation
4.5.2.1
void casi_expone (char ∗ params, int myfd)
426 {
427
float t;
428
char mensaje[200];
429
int rx;
430
int minn=70000, maxx=0,saturated=0;
431
double mean,stdev;
432
int error;
433
434
strcpy ( mensaje,params );
435
cout <<"En casi expone con params = "<<mensaje<<endl;
436
437
438 //ETIME=100 XSIZE=100 YSIZE=100 CBIN=1
RBIN=1
CORG=0
RORG=0
DARK=0 LO
OP=1
439 //ETIME=100 XSIZE=2184 YSIZE=1472 CBIN=1 RBIN=1 CORG=0 RORG=0 DARK=0
440
rx=sscanf ( mensaje,"ETIME=%d XSIZE=%d YSIZE=%d CBIN=%d RBIN=%d CORG=%d
RORG=%d DARK=%d "\
441
,&ccd.etime,&ccd.cols,&ccd.rows,&ccd.cbin,&ccd.rbin,&ccd.
corg,&ccd.rorg,&ccd.dark );
442
cout <<"Tengo "<<rx<<" Parametros \n";
443
444
ccd.showinfo();
445
446
if ( !ccd.ccd_init )
447
{
448
cout <<"No has hecho el INIT CCDTYPE ....SOB \n";
449
ccd.init ( myfd );
450
}
451
/*
452
// revisa que el numero de columnas y renglones sea par
453
if ( ccd.cols % 2 != 0 ) ccd.cols--; //quitarle un numero para ha
cerlo par
454
if ( ccd.rows % 2 != 0 ) ccd.rows--; //quitarle un numero para ha
cerlo par
455
*/
456
ccd.update();
//actualiza varios parametros
457
458
if ( ccd.maxpixels==ccd.imagePixels )
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.5 fli_server2.cpp File Reference
459
{
460
ccd.full_image=TRUE;
461
cout << "Full image Request!" <<endl;
462
}
463
else
464
{
465
ccd.full_image=FALSE;
466
cout << "ROI image Request!" <<endl;
467
}
468
cout<<"Max pixels= "<<ccd.maxpixels<<endl;
469
cout<<"Img pixels= "<<ccd.imagePixels<<endl;
470
471 //****************************************
472
ccd.cancela=!ccd.expose ( ccd.etime,myfd );
473
474
if ( !ccd.cancela )
475
{
476
sprintf ( mensaje,"BINARIO %d \n",ccd.imagePixels );
477
red.responde_cliente ( mensaje,myfd );
478
479
//mandar la temperatura
480
t=ccd.lee_temperatura();
481
sprintf ( mensaje,"LEE_TEMP %2.1f\n",t );
482
red.responde_cliente ( mensaje,myfd );
483
484
//V0.97
485
if ( ccd.do_deinterlace )
486
{
487
cout <<"Vamos hacer deinterlace por la lectura DUAL"<<end
l;
488
error=ccd.deinterlace ( ccd.cols, ccd.rows );
489
490
if ( error<0 )
491
{
492
cout <<"deinterlace error= "<<ccd.error_string<<e
ndl;
493
}
494
} else cout <<"Usamos solo un canal de salida \n";
495
496
if ( ccd.do_estadistica )
497
{
498
ccd.estadistica ( &minn,&maxx,&mean, &stdev, &saturated )
;
499
//printf ( "Estadistica min=%d, max=%d, mean=%3.2f stdev=
%3.2f saturated= %d\n",minn,maxx,mean,stdev,saturated );
500
sprintf ( mensaje,"ESTADISTICA min=%d, max=%d, mean=%3.2f
stdev=%3.2f saturated=%d\n",minn,maxx,mean,stdev,saturated );
501
//cout <<mensaje;
502
red.responde_cliente ( mensaje,myfd );
503
} else cout <<"No vamos hacer estadistica \n";
504
}
505
else
506
{
507
strcpy ( mensaje,"CANCELADO \n" );
508
cout <<mensaje;
509
red.responde_cliente ( mensaje,myfd );
510
}
511
512 //****************************************
513
ccd.cancela=false;
514
printf ( "\n Expose DONE! \n" );
515
red.responde_cliente ( ( char * ) "TERMINE \n",myfd );
516 }
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
61
62
File Documentation
Here is the call graph for this function:
FLIGrabRow
FLISetExposureTime
FLISetFrameType
FLISetHBin
FLISetVBin
FLI::deinterlace
FLICancelExposure
FLI::estadistica
FLIExposeFrame
FLI::expose
FLIGetExposureStatus
FLI::showinfo
FLISetImageArea
casi_expone
server::responde_cliente
FLISetNFlushes
FLIFreeList
findcams
FLIList
FLIGetArrayArea
FLIGetFWRevision
FLI::init
FLIGetHWRevision
FLI::lee_temperatura
FLIGetLibVersion
FLI::update
FLIGetModel
FLIGetPixelSize
FLIGetVisibleArea
FLIOpen
FLISetBitDepth
FLIGetTemperature
4.5.2.2
118 {
119
120
121
122
123
124
int main (int argc, char ∗ argv[ ])
//cam_t *cam = NULL;
int mycliente;
pthread_attr_t tattr;
system ( "clear" );
cout << "\nUNAM-IA-OAN ENSENADA" << endl;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.5 fli_server2.cpp File Reference
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
63
cout << "\nHello, world!, FLI CaM Server is running, "<<MyVersion
l<< endl;
cout << "2011 By E. Colorado " << endl;
red.procesando=FALSE;
red.busy=FALSE;
<< end
//control de procesos en thread
//inializar RED tipo servidor
red.salida=false;
red.init ( PORT );
cout <<"Ready using Sever port: "<<PORT<<endl;
cout <<"looping...";
red.op=111; //modificar para que no se cicle
//thread y mutex
res=pthread_mutex_init ( &mutex_busy,NULL );
if ( res!=0 )
{
perror ( "Fallo Mutex" );
exit ( EXIT_FAILURE );
}
//atributos del thread
pthread_attr_init ( &tattr );
pthread_attr_setdetachstate ( &tattr,PTHREAD_CREATE_DETACHED );
do
{
cout << "main red checa \n";
mycliente=red.checa(); //espera aqui hast que exista dato
//cout << "Recibi de red= "<<red.instruccion<<endl;
//generar nuevo thread
res=pthread_create ( &thread_mando,&tattr,onthread_procesa_mando,
( void * ) mycliente );
if ( res!=0 )
{
perror ( "Fallo Thread onthread_procesa_mando" );
exit ( EXIT_FAILURE );
}
cout <<"salida= "<<red.salida<<endl;
cout <<"Thread onthread_procesa_mando OK"<<endl;
159
160
161
162
163
164
165
166
167
}
168
while ( !red.salida );
169
170 //cerrar todo
171
pthread_mutex_destroy ( &mutex_busy );
172
cout << "mutex destroy \n" ;
173
red.netclose();
174
cout << "red close \n" ;
175
176
cout <<"\n FLI Server DONE! \n";
177
178
return EXIT_SUCCESS;
179 }
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
64
File Documentation
Here is the call graph for this function:
FLI::showinfo
FLI::expose
FLISetImageArea
FLI::pon_temperatura
FLISetTemperature
FLI::estadistica
server::responde_cliente
server::checa
FLIGetLibVersion
FLI::manda_imagen
server::init
main
casi_expone
FLI::update
FLISetCameraMode
FLI::deinterlace
FLIGetModel
server::netclose
FLI::SetMode
FLIGetPixelSize
onthread_procesa_mando
FLIGetVisibleArea
FLISetBitDepth
FLI::init
FLISetNFlushes
FLI::lee_temperatura
findcams
procesa_mando
FLIGetArrayArea
FLI::get_filter_pos
FLIGetFilterPos
74 {
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
FLI::init_filters
FLIGetHWRevision
FLISetFilterPos
FLIGetTemperature
FLI::close
FLI::set_filter_pos
FLI::GetMode
FLIClose
FLIOpen
test
FLIGetCameraMode
findfilters
FLI::GetMode_String
4.5.2.3
FLIGetFWRevision
FLI::lee_cooler_power
FLIGetCoolerPower
FLI::lee_temperatura_base
FLIReadTemperature
FLIGetCameraModeString
void ∗ onthread_procesa_mando (void ∗ arg)
int myfd;
char txt[200];
int local;
int i;
bool resp=TRUE;
//ignorar senales
signal ( SIGCHLD, SIG_IGN );
signal ( SIGPIPE, SIG_IGN );
//traernos cliente nuevo de los argumentos
local= ( int ) arg;
myfd=local;
cout <<"Cliente local es "<<myfd <<endl;
memset ( txt,0,200 );
//if ( ccd.debug ) cout <<"En thread procesa_mando"<<endl;
//LEER LO DE LA RED
cout <<"Voy a leer de red hasta "<<sizeof ( txt ) <<" char "<<endl;
i=read ( myfd,&txt,sizeof ( txt ) );
cout <<"Lei de red "<<i<< " ->"<<txt<<endl;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.5 fli_server2.cpp File Reference
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115 }
65
resp=procesa_mando ( myfd,txt );
//cierra conexion del cliente
if ( resp )
red.responde_cliente ( ( char * )
"CLOSE \n",myfd );
usleep ( 200000 );
cout <<"Cerrando socket con cliente...\n";
close ( myfd );
cout << "-------------------------------"<<endl ;
//if ( ccd.debug ) cout << "thread procesa_mando exit \n" ;
//memset ( txt,0,200 );
//esperar un rato a que cierre el socket
sleep ( 5 );
pthread_exit ( 0 );
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
66
File Documentation
Here is the call graph for this function:
FLI::showinfo
FLIExposeFrame
FLIGetExposureStatus
FLIGrabRow
FLI::expose
FLICancelExposure
FLISetImageArea
FLIGetFWRevision
FLIGetHWRevision
FLIGetLibVersion
FLIGetModel
casi_expone
FLI::init
FLIGetPixelSize
FLI::deinterlace
FLIGetVisibleArea
FLI::estadistica
FLISetBitDepth
FLI::update
FLISetNFlushes
FLI::lee_temperatura
findcams
FLIGetArrayArea
FLI::SetMode
FLIGetTemperature
FLISetCameraMode
server::responde_cliente
onthread_procesa_mando
FLIOpen
FLIGetFilterPos
FLI::get_filter_pos
procesa_mando
FLI::init_filters
FLI::set_filter_pos
FLI::close
FLIClose
FLI::GetMode
FLIGetCameraMode
findfilters
FLISetFilterPos
test
FLI::GetMode_String
FLI::lee_cooler_power
FLIGetCoolerPower
FLI::lee_temperatura_base
FLIReadTemperature
FLIGetCameraModeString
FLI::manda_imagen
FLI::pon_temperatura
FLISetTemperature
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.5 fli_server2.cpp File Reference
4.5.2.4
183 {
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
67
int procesa_mando (int myfd, char ∗ txt)
static char *comando,*parametro;
int r,j,i;
char mensaje[200];
double f;
int resp =TRUE;
cout <<myfd<<" <- "<<txt<<endl;
r=strlen ( txt );
cout <<"llegaron "<<r<<" datos \n";
if ( r<3 )
{
cout <<"No llegaron suficientes datos !!!!!!!\n";
return resp;
}
//pasar los datos a mayusculas
for ( i = 0; txt[i]; i++ )
txt[i] = toupper ( txt[i] );
parametro=NULL; //para que no haya basura
comando=NULL;
comando = strtok ( txt," " );
cout <<"comando="<<comando<<endl;
parametro=strtok ( NULL,"\n" );
if ( parametro!=NULL )
{
cout <<"parametros="<<parametro<<endl;
}
r=strlen ( comando );
cout <<r<<" lenght"<<endl;
red.op=100;
j=strcmp ( comando,"SALIR" );if ( !j )
j=strcmp ( comando,"INIT" );
if ( !j )
j=strcmp ( comando,"EXPONE" ); if ( !j )
j=strcmp ( comando,"GET_TEMP" );if ( !j )
j=strcmp ( comando,"LEE_TEMP" );if ( !j )
j=strcmp ( comando,"SET_TEMP" );if ( !j )
//j=strcmp ( comando,"GET_FULL" );if ( !j )
j=strcmp ( comando,"MANDABIN" );if ( !j )
j=strcmp ( comando,"CLOSE" );
if ( !j )
j=strcmp ( comando,"CANCELA" ); if ( !j )
j=strcmp ( comando,"STATUS" ); if ( !j )
j=strcmp ( comando,"ESTATUS" ); if ( !j )
j=strcmp ( comando,"TEST" );
if ( !j )
//modos de salida y velocidad de la camara
j=strcmp ( comando,"SET_CAM_MODE" );
if ( !j
j=strcmp ( comando,"GET_CAM_MODE" );
if ( !j
j=strcmp ( comando,"GET_CAM_STRING" ); if ( !j
//V2.1
j=strcmp ( comando,"LEE_TEMP_BASE" );if ( !j )
j=strcmp ( comando,"LEE_POWER" );if ( !j )
//V2.12
j=strcmp ( comando,"INIT_FILTERS" );if ( !j )
j=strcmp ( comando,"SET_FILTER_POS" );if ( !j )
j=strcmp ( comando,"GET_FILTER_POS" );if ( !j )
printf ( " ...(red.op=%d)\n",red.op );
switch ( red.op )
{
case 0:
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
red.op=0;
red.op=1;
red.op=2;
red.op=3;
red.op=3;
red.op=4;
red.op=5;
red.op=6;
red.op=7;
red.op=8;
red.op=9;
red.op=9;
red.op=10;
) red.op=11;
) red.op=12;
) red.op=13;
red.op=14;
red.op=15;
red.op=16;
red.op=17;
red.op=18;
68
File Documentation
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
{
printf ( "Hay que salir \n" );
red.salida=true;
ccd.close();
break;
}
case 1:
{
printf ( "INIT \n" );
ccd.init ( myfd );
break;
}
case 2:
{
//EXPONE
//realmente no necesito el mutex ?
printf ( "expone \n" );
pthread_mutex_lock ( &mutex_busy );
ccd.busy=TRUE;
pthread_mutex_unlock ( &mutex_busy );
casi_expone ( parametro,myfd );
pthread_mutex_lock ( &mutex_busy );
ccd.busy=FALSE;
pthread_mutex_unlock ( &mutex_busy );
break;
}
case 3:
{
//temp
cout << "Leyendo temperatura del CCD" << endl;
if ( !ccd.busy )
{
f = ccd.lee_temperatura();
}
else
{
f=ccd.ccdtemp;
cout <<"CCD ocupado, te voy a dar la Temp. anteri
or.. \n";
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
}
sprintf ( mensaje,"LEE_TEMP %2.1f\n",f );
red.responde_cliente ( mensaje,myfd );
cout << "CCD Temp=" << f<<endl;
break;
}
case 4:
{
printf ( "set temp \n" );
sscanf ( parametro,"%lf",&f );
printf ( "set temp to %3.2lf\n",f );
ccd.pon_temperatura ( f );
break;
}
case 6:
{
//MANDABIN
cout <<"Vamos hacer mandabin \n";
ccd.manda_imagen ( myfd );
resp=FALSE;
break;
}
case 7:
{
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.5 fli_server2.cpp File Reference
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
printf ( "close fli driver \n" );
ccd.close( );
break;
}
case 8:
{
cout<<"CANCELANDO!!!!!!!!!!!!!!!!!!!"<<endl;
ccd.cancela=TRUE;
break;
}
case 9:
{
cout<<"Mandando Status:"<<endl;
if ( ccd.busy ) strcpy ( mensaje,"BUSY \n" ); else strcpy
( mensaje,"READY \n" );
red.responde_cliente ( mensaje,myfd );
break;
}
case 10:
test();
break;
case 11:
printf ( "set cam mode \n" );
sscanf ( parametro,"%d",&i );
printf ( "set cam mode %d\n",i );
ccd.SetMode ( i );
case 12:
printf ( "get cam mode \n" );
i=ccd.GetMode();
sprintf ( mensaje,"CAM_MODE %d\n",i );
cout <<mensaje;
red.responde_cliente ( mensaje,myfd );
break;
case 13:
sscanf ( parametro,"%d",&i );
printf ( "get cam mode string %d\n",i );
char *t;
t=ccd.GetMode_String ( i );
sprintf ( mensaje,"CAM_MODE_STRING %s\n",t );
cout <<mensaje;
red.responde_cliente ( mensaje,myfd );
break;
case 14:
{
//temp_base
cout << "Leyendo temperatura de la base del CCD" << endl;
361
362
363
364
365
366
367
368
if ( !ccd.busy )
{
f = ccd.lee_temperatura_base();
}
else
{
f=ccd.basetemp;
cout <<"CCD ocupado, te voy a dar la Temp. base a
nterior.. \n";
369
370
371
372
373
374
375
376
377
378
}
sprintf ( mensaje,"LEE_TEMP_BASE %2.1f\n",f );
red.responde_cliente ( mensaje,myfd );
cout << "CCD Base Temp=" << f<<endl;
break;
}
case 15:
{
//power
cout << "Leyendo el cooler power" << endl;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
69
70
File Documentation
379
380
381
382
383
384
385
386
if ( !ccd.busy )
{
f = ccd.lee_cooler_power();
}
else
{
f=ccd.power;
cout <<"CCD ocupado, te voy a dar el power anteri
or.. \n";
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422 }
}
sprintf ( mensaje,"LEE_POWER %2.1f\n",f );
red.responde_cliente ( mensaje,myfd );
cout << "CCD cooler power=" << f<<endl;
break;
}
case 16:
printf ( "INIT Filters\n" );
ccd.init_filters ( myfd );
break;
case 17:
printf ( "Move Filters ... \n" );
sscanf ( parametro,"%d",&i );
printf ( "to: %d \n",i );
ccd.set_filter_pos(myfd,i);
break;
case 18:
printf ( "get Filters pos ... \n" );
ccd.get_filter_pos(myfd);
break;
case 100:
{
printf ( "!!!!!Mando no Reconocido... \n" );
strcpy ( mensaje,"!!!!!Mando no Reconocido... \n" );
red.responde_cliente ( mensaje,myfd );
break;
}
}
; //end switch
return resp;
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.5 fli_server2.cpp File Reference
71
Here is the call graph for this function:
FLIGetExposureStatus
FLIGrabRow
FLISetExposureTime
FLICancelExposure
FLI::expose
FLIExposeFrame
FLI::showinfo
FLISetImageArea
FLISetBitDepth
FLISetNFlushes
findcams
casi_expone
FLI::update
FLIGetArrayArea
FLI::deinterlace
FLIGetFWRevision
FLI::estadistica
FLIGetHWRevision
FLI::init
FLIGetLibVersion
FLIGetModel
FLI::lee_temperatura
FLIGetPixelSize
FLIGetVisibleArea
FLIGetTemperature
FLIGetFilterPos
server::responde_cliente
FLI::get_filter_pos
FLIOpen
FLI::init_filters
findfilters
FLI::set_filter_pos
FLI::close
FLIClose
FLI::GetMode
FLIGetCameraMode
FLISetFilterPos
procesa_mando
FLI::GetMode_String
test
FLI::lee_cooler_power
FLIGetCoolerPower
FLI::lee_temperatura_base
FLIReadTemperature
FLI::manda_imagen
FLI::pon_temperatura
FLISetTemperature
FLI::SetMode
FLISetCameraMode
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
FLIGetCameraModeString
72
4.5.2.5
519 {
520
521
522
523
524
525
526
527 }
File Documentation
void test ()
cout <<"modo 0
cout <<"modo 1
cout <<"modo 2
//cout <<"modo
"<<ccd.GetMode_String ( 0 ) <<endl;
"<<ccd.GetMode_String ( 1 ) <<endl;
"<<ccd.GetMode_String ( 2 ) <<endl;
3 "<<ccd.GetMode_String(3)<<endl;
Here is the call graph for this function:
test
FLI::GetMode_String
4.5.3
Variable Documentation
4.5.3.1
FLI ccd
4.5.3.2
list<micliente>::iterator i
4.5.3.3
list<micliente> lista
4.5.3.4
pthread_mutex_t mutex_busy
4.5.3.5
server red
4.5.3.6
int res
4.5.3.7
void∗ t_result
4.5.3.8
pthread_t thread_mando
4.5.3.9
pthread_t thread_red
FLIGetCameraModeString
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.6 libfli.h File Reference
73
4.6 libfli.h File Reference
#include <sys/types.h>
Include dependency graph for libfli.h:
libfli.h
sys/types.h
This graph shows which files directly or indirectly include this file:
libfli.h
fli.h
fli_call.c
fli_server2.cpp
Defines
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
#define FLI_INVALID_DEVICE (-1)
#define FLIDOMAIN_NONE (0x00)
#define FLIDOMAIN_PARALLEL_PORT (0x01)
#define FLIDOMAIN_USB (0x02)
#define FLIDOMAIN_SERIAL (0x03)
#define FLIDOMAIN_INET (0x04)
#define FLIDOMAIN_SERIAL_19200 (0x05)
#define FLIDOMAIN_SERIAL_1200 (0x06)
#define FLIDEVICE_NONE (0x000)
#define FLIDEVICE_CAMERA (0x100)
#define FLIDEVICE_FILTERWHEEL (0x200)
#define FLIDEVICE_FOCUSER (0x300)
#define FLIDEVICE_HS_FILTERWHEEL (0x0400)
#define FLIDEVICE_RAW (0x0f00)
#define FLIDEVICE_ENUMERATE_BY_CONNECTION (0x8000)
#define FLI_FRAME_TYPE_NORMAL (0)
#define FLI_FRAME_TYPE_DARK (1)
#define FLI_FRAME_TYPE_FLOOD (2)
#define FLI_FRAME_TYPE_RBI_FLUSH (FLI_FRAME_TYPE_FLOOD | FLI_FRAME_TYPE_DARK)
• #define FLI_MODE_8BIT (0)
• #define FLI_MODE_16BIT (1)
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
74
File Documentation
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#define FLI_SHUTTER_CLOSE (0x0000)
#define FLI_SHUTTER_OPEN (0x0001)
#define FLI_SHUTTER_EXTERNAL_TRIGGER (0x0002)
#define FLI_SHUTTER_EXTERNAL_TRIGGER_LOW (0x0002)
#define FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH (0x0004)
#define FLI_SHUTTER_EXTERNAL_EXPOSURE_CONTROL (0x0008)
#define FLI_BGFLUSH_STOP (0x0000)
#define FLI_BGFLUSH_START (0x0001)
#define FLI_TEMPERATURE_INTERNAL (0x0000)
#define FLI_TEMPERATURE_EXTERNAL (0x0001)
#define FLI_TEMPERATURE_CCD (0x0000)
#define FLI_TEMPERATURE_BASE (0x0001)
#define FLI_CAMERA_STATUS_UNKNOWN (0xffffffff)
#define FLI_CAMERA_STATUS_MASK (0x000000ff)
#define FLI_CAMERA_STATUS_IDLE (0x00)
#define FLI_CAMERA_STATUS_WAITING_FOR_TRIGGER (0x01)
#define FLI_CAMERA_STATUS_EXPOSING (0x02)
#define FLI_CAMERA_STATUS_READING_CCD (0x03)
#define FLI_CAMERA_DATA_READY (0x80000000)
#define FLI_FOCUSER_STATUS_UNKNOWN (0xffffffff)
#define FLI_FOCUSER_STATUS_HOMING (0x00000004)
#define FLI_FOCUSER_STATUS_MOVING_IN (0x00000001)
#define FLI_FOCUSER_STATUS_MOVING_OUT (0x00000002)
#define FLI_FOCUSER_STATUS_MOVING_MASK (0x00000007)
#define FLI_FOCUSER_STATUS_HOME (0x00000080)
#define FLI_FOCUSER_STATUS_LIMIT (0x00000040)
#define FLI_FOCUSER_STATUS_LEGACY (0x10000000)
#define FLIDEBUG_NONE (0x00)
#define FLIDEBUG_INFO (0x01)
#define FLIDEBUG_WARN (0x02)
#define FLIDEBUG_FAIL (0x04)
#define FLIDEBUG_ALL (FLIDEBUG_INFO | FLIDEBUG_WARN | FLIDEBUG_FAIL)
#define FLI_IO_P0 (0x01)
#define FLI_IO_P1 (0x02)
#define FLI_IO_P2 (0x04)
#define FLI_IO_P3 (0x08)
#define FLI_FAN_SPEED_OFF (0x00)
#define FLI_FAN_SPEED_ON (0xffffffff)
#define LIBFLIAPI long
Typedefs
•
•
•
•
•
•
•
•
typedef long flidev_t
typedef long flidomain_t
typedef long fliframe_t
typedef long flibitdepth_t
typedef long flishutter_t
typedef long flibgflush_t
typedef long flichannel_t
typedef long flidebug_t
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.6 libfli.h File Reference
•
•
•
•
typedef long flimode_t
typedef long flistatus_t
typedef long flitdirate_t
typedef long flitdiflags_t
Functions
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
LIBFLIAPI FLIOpen (flidev_t ∗dev, char ∗name, flidomain_t domain)
LIBFLIAPI FLISetDebugLevel (char ∗host, flidebug_t level)
LIBFLIAPI FLIClose (flidev_t dev)
LIBFLIAPI FLIGetLibVersion (char ∗ver, size_t len)
LIBFLIAPI FLIGetModel (flidev_t dev, char ∗model, size_t len)
LIBFLIAPI FLIGetPixelSize (flidev_t dev, double ∗pixel_x, double ∗pixel_y)
LIBFLIAPI FLIGetHWRevision (flidev_t dev, long ∗hwrev)
LIBFLIAPI FLIGetFWRevision (flidev_t dev, long ∗fwrev)
LIBFLIAPI FLIGetArrayArea (flidev_t dev, long ∗ul_x, long ∗ul_y, long ∗lr_x, long ∗lr_y)
LIBFLIAPI FLIGetVisibleArea (flidev_t dev, long ∗ul_x, long ∗ul_y, long ∗lr_x, long ∗lr_y)
LIBFLIAPI FLISetExposureTime (flidev_t dev, long exptime)
LIBFLIAPI FLISetImageArea (flidev_t dev, long ul_x, long ul_y, long lr_x, long lr_y)
LIBFLIAPI FLISetHBin (flidev_t dev, long hbin)
LIBFLIAPI FLISetVBin (flidev_t dev, long vbin)
LIBFLIAPI FLISetFrameType (flidev_t dev, fliframe_t frametype)
LIBFLIAPI FLICancelExposure (flidev_t dev)
LIBFLIAPI FLIGetExposureStatus (flidev_t dev, long ∗timeleft)
LIBFLIAPI FLISetTemperature (flidev_t dev, double temperature)
LIBFLIAPI FLIGetTemperature (flidev_t dev, double ∗temperature)
LIBFLIAPI FLIGetCoolerPower (flidev_t dev, double ∗power)
LIBFLIAPI FLIGrabRow (flidev_t dev, void ∗buff, size_t width)
LIBFLIAPI FLIExposeFrame (flidev_t dev)
LIBFLIAPI FLIFlushRow (flidev_t dev, long rows, long repeat)
LIBFLIAPI FLISetNFlushes (flidev_t dev, long nflushes)
LIBFLIAPI FLISetBitDepth (flidev_t dev, flibitdepth_t bitdepth)
LIBFLIAPI FLIReadIOPort (flidev_t dev, long ∗ioportset)
LIBFLIAPI FLIWriteIOPort (flidev_t dev, long ioportset)
LIBFLIAPI FLIConfigureIOPort (flidev_t dev, long ioportset)
LIBFLIAPI FLILockDevice (flidev_t dev)
LIBFLIAPI FLIUnlockDevice (flidev_t dev)
LIBFLIAPI FLIControlShutter (flidev_t dev, flishutter_t shutter)
LIBFLIAPI FLIControlBackgroundFlush (flidev_t dev, flibgflush_t bgflush)
LIBFLIAPI FLISetDAC (flidev_t dev, unsigned long dacset)
LIBFLIAPI FLIList (flidomain_t domain, char ∗∗∗names)
LIBFLIAPI FLIFreeList (char ∗∗names)
LIBFLIAPI FLISetFilterPos (flidev_t dev, long filter)
LIBFLIAPI FLIGetFilterPos (flidev_t dev, long ∗filter)
LIBFLIAPI FLIGetFilterCount (flidev_t dev, long ∗filter)
LIBFLIAPI FLIStepMotor (flidev_t dev, long steps)
LIBFLIAPI FLIStepMotorAsync (flidev_t dev, long steps)
LIBFLIAPI FLIGetStepperPosition (flidev_t dev, long ∗position)
LIBFLIAPI FLIGetStepsRemaining (flidev_t dev, long ∗steps)
LIBFLIAPI FLIHomeFocuser (flidev_t dev)
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
75
76
File Documentation
• LIBFLIAPI FLICreateList (flidomain_t domain)
• LIBFLIAPI FLIDeleteList (void)
• LIBFLIAPI FLIListFirst (flidomain_t ∗domain, char ∗filename, size_t fnlen, char ∗name, size_t
namelen)
• LIBFLIAPI FLIListNext (flidomain_t ∗domain, char ∗filename, size_t fnlen, char ∗name, size_t
namelen)
• LIBFLIAPI FLIReadTemperature (flidev_t dev, flichannel_t channel, double ∗temperature)
• LIBFLIAPI FLIGetFocuserExtent (flidev_t dev, long ∗extent)
• LIBFLIAPI FLIUsbBulkIO (flidev_t dev, int ep, void ∗buf, long ∗len)
• LIBFLIAPI FLIGetDeviceStatus (flidev_t dev, long ∗status)
• LIBFLIAPI FLIGetCameraModeString (flidev_t dev, flimode_t mode_index, char ∗mode_string,
size_t siz)
• LIBFLIAPI FLIGetCameraMode (flidev_t dev, flimode_t ∗mode_index)
• LIBFLIAPI FLISetCameraMode (flidev_t dev, flimode_t mode_index)
• LIBFLIAPI FLIHomeDevice (flidev_t dev)
• LIBFLIAPI FLIGrabFrame (flidev_t dev, void ∗buff, size_t buffsize, size_t ∗bytesgrabbed)
• LIBFLIAPI FLISetTDI (flidev_t dev, flitdirate_t tdi_rate, flitdiflags_t flags)
• LIBFLIAPI FLIGrabVideoFrame (flidev_t dev, void ∗buff, size_t size)
• LIBFLIAPI FLIStopVideoMode (flidev_t dev)
• LIBFLIAPI FLIStartVideoMode (flidev_t dev)
• LIBFLIAPI FLIGetSerialString (flidev_t dev, char ∗serial, size_t len)
• LIBFLIAPI FLIEndExposure (flidev_t dev)
• LIBFLIAPI FLITriggerExposure (flidev_t dev)
• LIBFLIAPI FLISetFanSpeed (flidev_t dev, long fan_speed)
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.6 libfli.h File Reference
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
77
78
File Documentation
4.6.1
Define Documentation
4.6.1.1
#define DllExport __declspec( dllexport )
4.6.1.2
#define DllImport __declspec( dllimport )
4.6.1.3
#define FLI_BGFLUSH_START (0x0001)
4.6.1.4
#define FLI_BGFLUSH_STOP (0x0000)
4.6.1.5
#define FLI_CAMERA_DATA_READY (0x80000000)
4.6.1.6
#define FLI_CAMERA_STATUS_EXPOSING (0x02)
4.6.1.7
#define FLI_CAMERA_STATUS_IDLE (0x00)
4.6.1.8
#define FLI_CAMERA_STATUS_MASK (0x000000ff)
4.6.1.9
#define FLI_CAMERA_STATUS_READING_CCD (0x03)
4.6.1.10 #define FLI_CAMERA_STATUS_UNKNOWN (0xffffffff)
4.6.1.11 #define FLI_CAMERA_STATUS_WAITING_FOR_TRIGGER (0x01)
4.6.1.12 #define FLI_FAN_SPEED_OFF (0x00)
4.6.1.13 #define FLI_FAN_SPEED_ON (0xffffffff)
4.6.1.14 #define FLI_FOCUSER_STATUS_HOME (0x00000080)
4.6.1.15 #define FLI_FOCUSER_STATUS_HOMING (0x00000004)
4.6.1.16 #define FLI_FOCUSER_STATUS_LEGACY (0x10000000)
4.6.1.17 #define FLI_FOCUSER_STATUS_LIMIT (0x00000040)
4.6.1.18 #define FLI_FOCUSER_STATUS_MOVING_IN (0x00000001)
4.6.1.19 #define FLI_FOCUSER_STATUS_MOVING_MASK (0x00000007)
4.6.1.20 #define FLI_FOCUSER_STATUS_MOVING_OUT (0x00000002)
4.6.1.21 #define FLI_FOCUSER_STATUS_UNKNOWN (0xffffffff)
4.6.1.22 #define FLI_FRAME_TYPE_DARK (1)
4.6.1.23 #define FLI_FRAME_TYPE_FLOOD (2)
4.6.1.24 #define FLI_FRAME_TYPE_NORMAL (0)
4.6.1.25 #define FLI_FRAME_TYPE_RBI_FLUSH (FLI_FRAME_TYPE_FLOOD |
FLI_FRAME_TYPE_DARK)
4.6.1.26 #define FLI_INVALID_DEVICE (-1)
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
An opaque handle used by library functions to refer to FLI hardware.
4.6 libfli.h File Reference
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
79
80
File Documentation
4.6.1.27 #define FLI_IO_P0 (0x01)
4.6.1.28 #define FLI_IO_P1 (0x02)
4.6.1.29 #define FLI_IO_P2 (0x04)
4.6.1.30 #define FLI_IO_P3 (0x08)
4.6.1.31 #define FLI_MODE_16BIT (1)
4.6.1.32 #define FLI_MODE_8BIT (0)
4.6.1.33 #define FLI_SHUTTER_CLOSE (0x0000)
4.6.1.34 #define FLI_SHUTTER_EXTERNAL_EXPOSURE_CONTROL (0x0008)
4.6.1.35 #define FLI_SHUTTER_EXTERNAL_TRIGGER (0x0002)
4.6.1.36 #define FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH (0x0004)
4.6.1.37 #define FLI_SHUTTER_EXTERNAL_TRIGGER_LOW (0x0002)
4.6.1.38 #define FLI_SHUTTER_OPEN (0x0001)
4.6.1.39 #define FLI_TEMPERATURE_BASE (0x0001)
4.6.1.40 #define FLI_TEMPERATURE_CCD (0x0000)
4.6.1.41 #define FLI_TEMPERATURE_EXTERNAL (0x0001)
4.6.1.42 #define FLI_TEMPERATURE_INTERNAL (0x0000)
4.6.1.43 #define FLIDEBUG_ALL (FLIDEBUG_INFO | FLIDEBUG_WARN |
FLIDEBUG_FAIL)
4.6.1.44 #define FLIDEBUG_FAIL (0x04)
4.6.1.45 #define FLIDEBUG_INFO (0x01)
4.6.1.46 #define FLIDEBUG_NONE (0x00)
4.6.1.47 #define FLIDEBUG_WARN (0x02)
4.6.1.48 #define FLIDEVICE_CAMERA (0x100)
4.6.1.49 #define FLIDEVICE_ENUMERATE_BY_CONNECTION (0x8000)
4.6.1.50 #define FLIDEVICE_FILTERWHEEL (0x200)
4.6.1.51 #define FLIDEVICE_FOCUSER (0x300)
4.6.1.52 #define FLIDEVICE_HS_FILTERWHEEL (0x0400)
4.6.1.53 #define FLIDEVICE_NONE (0x000)
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.6.1.54 #define FLIDEVICE_RAW (0x0f00)
4.6.1.55 #define FLIDOMAIN_INET (0x04)
4.6.1.56 #define FLIDOMAIN_NONE (0x00)
4.6 libfli.h File Reference
81
See also
FLIControlBackgroundFlush
4.6.2.2
typedef long flibitdepth_t
The gray-scale bit depth for an FLI camera device. Valid bit depths are {FLI_MODE_8BIT} and {FLI_MODE_16BIT}.
See also
FLISetBitDepth
4.6.2.3
typedef long flichannel_t
Type used to determine which temperature channel to read.
Valid channel types are {FLI_TEMPERATURE_INTERNAL} and {FLI_TEMPERATURE_EXTERNAL}.
See also
FLIReadTemperature
4.6.2.4
typedef long flidebug_t
Type specifying library debug levels. Valid debug levels are {FLIDEBUG_NONE}, {FLIDEBUG_INFO},
{FLIDEBUG_WARN}, and {FLIDEBUG_FAIL}.
See also
FLISetDebugLevel
4.6.2.5
typedef long flidev_t
4.6.2.6
typedef long flidomain_t
The domain of an FLI device.
This consists of a bitwise ORed combination of interface
method and device type. Valid interfaces are {FLIDOMAIN_PARALLEL_PORT}, {FLIDOMAIN_USB}, {FLIDOMAIN_SERIAL}, and {FLIDOMAIN_INET}. Valid device types are {FLIDEVICE_CAMERA}, {FLIDOMAIN_FILTERWHEEL}, and {FLIDOMAIN_FOCUSER}.
See also
FLIOpen
FLIList
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
82
File Documentation
4.6.2.7
typedef long fliframe_t
The frame type for an FLI CCD camera device. Valid frame types are {FLI_FRAME_TYPE_NORMAL}
and {FLI_FRAME_TYPE_DARK}.
See also
FLISetFrameType
4.6.2.8
typedef long flimode_t
4.6.2.9
typedef long flishutter_t
Type used for shutter operations for an FLI camera device. Valid shutter types are {FLI_SHUTTER_CLOSE}, {FLI_SHUTTER_OPEN}, {FLI_SHUTTER_EXTERNAL_TRIGGER}, {FLI_SHUTTER_EXTERNAL_TRIGGER_LOW}, and {FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH}.
See also
FLIControlShutter
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.6 libfli.h File Reference
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
83
84
File Documentation
4.6.2.10 typedef long flistatus_t
4.6.2.11 typedef long flitdiflags_t
4.6.2.12 typedef long flitdirate_t
4.6.3
Function Documentation
4.6.3.1
LIBFLIAPI FLICancelExposure (flidev_t dev)
4.6.3.2
LIBFLIAPI FLIClose (flidev_t dev)
4.6.3.3
LIBFLIAPI FLIConfigureIOPort (flidev_t dev, long ioportset)
4.6.3.4
LIBFLIAPI FLIControlBackgroundFlush (flidev_t dev, flibgflush_t bgflush)
4.6.3.5
LIBFLIAPI FLIControlShutter (flidev_t dev, flishutter_t shutter)
4.6.3.6
LIBFLIAPI FLICreateList (flidomain_t domain)
4.6.3.7
LIBFLIAPI FLIDeleteList (void)
4.6.3.8
LIBFLIAPI FLIEndExposure (flidev_t dev)
4.6.3.9
LIBFLIAPI FLIExposeFrame (flidev_t dev)
4.6.3.10 LIBFLIAPI FLIFlushRow (flidev_t dev, long rows, long repeat)
4.6.3.11 LIBFLIAPI FLIFreeList (char ∗∗ names)
4.6.3.12 LIBFLIAPI FLIGetArrayArea (flidev_t dev, long ∗ ul_x, long ∗ ul_y, long ∗ lr_x, long ∗
lr_y)
4.6.3.13 LIBFLIAPI FLIGetCameraMode (flidev_t dev, flimode_t ∗ mode_index)
4.6.3.14 LIBFLIAPI FLIGetCameraModeString (flidev_t dev, flimode_t mode_index, char ∗
mode_string, size_t siz)
4.6.3.15 LIBFLIAPI FLIGetCoolerPower (flidev_t dev, double ∗ power)
4.6.3.16 LIBFLIAPI FLIGetDeviceStatus (flidev_t dev, long ∗ status)
4.6.3.17 LIBFLIAPI FLIGetExposureStatus (flidev_t dev, long ∗ timeleft)
4.6.3.18 LIBFLIAPI FLIGetFilterCount (flidev_t dev, long ∗ filter)
4.6.3.19 LIBFLIAPI FLIGetFilterPos (flidev_t dev, long ∗ filter)
4.6.3.20 LIBFLIAPI FLIGetFocuserExtent (flidev_t dev, long ∗ extent)
4.6.3.21 LIBFLIAPI FLIGetFWRevision (flidev_t dev, long ∗ fwrev)
4.6.3.22 LIBFLIAPI FLIGetHWRevision (flidev_t dev, long ∗ hwrev)
on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
4.6.3.23 LIBFLIAPI FLIGetLibVersion (char ∗ ver, Generated
size_t len)
4.6.3.24 LIBFLIAPI FLIGetModel (flidev_t dev, char ∗ model, size_t len)
4.6.3.25 LIBFLIAPI FLIGetPixelSize (flidev_t dev, double ∗ pixel_x, double ∗ pixel_y)
4.7 server.cpp File Reference
85
4.7 server.cpp File Reference
#include "server.h"
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/ioctl.h>
#include <pthread.h>
#include <signal.h>
#include <semaphore.h>
#include <iostream>
#include <string.h>
#include <string>
#include <list>
Include dependency graph for server.cpp:
server.cpp
server.h
sys/time.h
arpa/inet.h
sys/types.h
sys/socket.h
stdlib.h
netinet/in.h
stdio.h
string
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
unistd.h
sys/ioctl.h
pthread.h
signal.h
semaphore.h
iostream
string.h
list
86
File Documentation
4.8 server.h File Reference
#include <sys/time.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string>
Include dependency graph for server.h:
server.h
sys/time.h
arpa/inet.h
sys/types.h
sys/socket.h
netinet/in.h
stdio.h
string
This graph shows which files directly or indirectly include this file:
server.h
fli_server2.cpp
server.cpp
Classes
• struct micliente
• class server
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
Index
∼FLI
FLI, 26
∼server
server, 43
_ERROR
fli.h, 53
_NO_ERROR
fli.h, 53
__progname
fli.cpp, 52
basetemp
FLI, 40
BUFF_SIZ
fli.h, 53
busy
FLI, 40
server, 46
cam_t, 23
dname, 23
domain, 23
name, 23
CANCELA
server, 46
cancela
FLI, 40
casi_expone
fli_server2.cpp, 60
cbin
FLI, 40
ccd
fli_server2.cpp, 72
ccd_init
FLI, 40
ccdtemp
FLI, 40
checa
server, 44
client_sockfd
server, 46
close
FLI, 26
cols
FLI, 40
corg
FLI, 40
dark
FLI, 40
debug
FLI, 40
server, 46
deinterlace
FLI, 26
DllExport
libfli.h, 78
DllImport
libfli.h, 78
dname
cam_t, 23
do_deinterlace
FLI, 40
do_estadistica
FLI, 40
domain
cam_t, 23
error_string
FLI, 40
estadistica
FLI, 27
etime
FLI, 40
expose
FLI, 28
FALSE
fli.h, 53
fli_server2.cpp, 60
fileSal
server, 46
findcams
fli.cpp, 48
fli_call.c, 54
findfilters
fli.cpp, 50
fli_call.c, 55
FLI, 24
∼FLI, 26
88
basetemp, 40
busy, 40
cancela, 40
cbin, 40
ccd_init, 40
ccdtemp, 40
close, 26
cols, 40
corg, 40
dark, 40
debug, 40
deinterlace, 26
do_deinterlace, 40
do_estadistica, 40
error_string, 40
estadistica, 27
etime, 40
expose, 28
FLI, 25
full_image, 40
get_filter_pos, 30
GetMode, 31
GetMode_String, 31
imagePixels, 40
imagesize, 40
init, 31
init_filters, 34
lee_cooler_power, 35
lee_temperatura, 35
lee_temperatura_base, 36
manda_imagen, 36
maxcols, 40
maxpixels, 40
maxrows, 40
model, 40
pon_temperatura, 36
power, 40
rbin, 40
rorg, 40
rows, 40
set_filter_pos, 37
SetMode, 37
showinfo, 37
tabla, 38
update, 38
v_cols, 40
v_corg, 40
v_rorg, 40
v_rows, 40
fli.cpp, 47
__progname, 52
findcams, 48
findfilters, 50
info, 48
INDEX
LIBVERSIZ, 48
maxushort, 52
mutex_busy, 52
red, 52
TRYFUNC, 48
warnc, 48
writeraw, 51
fli.h, 53
_ERROR, 53
_NO_ERROR, 53
BUFF_SIZ, 53
FALSE, 53
TRUE, 53
FLI_BGFLUSH_START
libfli.h, 78
FLI_BGFLUSH_STOP
libfli.h, 78
fli_call.c, 54
findcams, 54
findfilters, 55
writeraw, 57
fli_call.h, 58
info, 58
LIBVERSIZ, 58
TRYFUNC, 58
warnc, 58
FLI_CAMERA_DATA_READY
libfli.h, 78
FLI_CAMERA_STATUS_EXPOSING
libfli.h, 78
FLI_CAMERA_STATUS_IDLE
libfli.h, 78
FLI_CAMERA_STATUS_MASK
libfli.h, 78
FLI_CAMERA_STATUS_READING_CCD
libfli.h, 78
FLI_CAMERA_STATUS_UNKNOWN
libfli.h, 78
FLI_CAMERA_STATUS_WAITING_FOR_TRIGGER
libfli.h, 78
FLI_FAN_SPEED_OFF
libfli.h, 78
FLI_FAN_SPEED_ON
libfli.h, 78
FLI_FOCUSER_STATUS_HOME
libfli.h, 78
FLI_FOCUSER_STATUS_HOMING
libfli.h, 78
FLI_FOCUSER_STATUS_LEGACY
libfli.h, 78
FLI_FOCUSER_STATUS_LIMIT
libfli.h, 78
FLI_FOCUSER_STATUS_MOVING_IN
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
INDEX
libfli.h, 78
FLI_FOCUSER_STATUS_MOVING_MASK
libfli.h, 78
FLI_FOCUSER_STATUS_MOVING_OUT
libfli.h, 78
FLI_FOCUSER_STATUS_UNKNOWN
libfli.h, 78
FLI_FRAME_TYPE_DARK
libfli.h, 78
FLI_FRAME_TYPE_FLOOD
libfli.h, 78
FLI_FRAME_TYPE_NORMAL
libfli.h, 78
FLI_FRAME_TYPE_RBI_FLUSH
libfli.h, 78
FLI_INVALID_DEVICE
libfli.h, 78
FLI_IO_P0
libfli.h, 78
FLI_IO_P1
libfli.h, 80
FLI_IO_P2
libfli.h, 80
FLI_IO_P3
libfli.h, 80
FLI_MODE_16BIT
libfli.h, 80
FLI_MODE_8BIT
libfli.h, 80
fli_server2.cpp, 59
casi_expone, 60
ccd, 72
FALSE, 60
i, 72
lista, 72
main, 62
mutex_busy, 72
MyVersion, 60
onthread_procesa_mando, 64
PORT, 60
procesa_mando, 66
red, 72
res, 72
t_result, 72
test, 72
thread_mando, 72
thread_red, 72
TRUE, 60
FLI_SHUTTER_CLOSE
libfli.h, 80
FLI_SHUTTER_EXTERNAL_EXPOSURE_CONTROL
libfli.h, 80
FLI_SHUTTER_EXTERNAL_TRIGGER
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
89
libfli.h, 80
FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH
libfli.h, 80
FLI_SHUTTER_EXTERNAL_TRIGGER_LOW
libfli.h, 80
FLI_SHUTTER_OPEN
libfli.h, 80
FLI_TEMPERATURE_BASE
libfli.h, 80
FLI_TEMPERATURE_CCD
libfli.h, 80
FLI_TEMPERATURE_EXTERNAL
libfli.h, 80
FLI_TEMPERATURE_INTERNAL
libfli.h, 80
flibgflush_t
libfli.h, 80
flibitdepth_t
libfli.h, 81
FLICancelExposure
libfli.h, 84
flichannel_t
libfli.h, 81
FLIClose
libfli.h, 84
FLIConfigureIOPort
libfli.h, 84
FLIControlBackgroundFlush
libfli.h, 84
FLIControlShutter
libfli.h, 84
FLICreateList
libfli.h, 84
FLIDEBUG_ALL
libfli.h, 80
FLIDEBUG_FAIL
libfli.h, 80
FLIDEBUG_INFO
libfli.h, 80
FLIDEBUG_NONE
libfli.h, 80
flidebug_t
libfli.h, 81
FLIDEBUG_WARN
libfli.h, 80
FLIDeleteList
libfli.h, 84
flidev_t
libfli.h, 81
FLIDEVICE_CAMERA
libfli.h, 80
FLIDEVICE_ENUMERATE_BY_CONNECTION
libfli.h, 80
FLIDEVICE_FILTERWHEEL
90
libfli.h, 80
FLIDEVICE_FOCUSER
libfli.h, 80
FLIDEVICE_HS_FILTERWHEEL
libfli.h, 80
FLIDEVICE_NONE
libfli.h, 80
FLIDEVICE_RAW
libfli.h, 80
FLIDOMAIN_INET
libfli.h, 80
FLIDOMAIN_NONE
libfli.h, 80
FLIDOMAIN_PARALLEL_PORT
libfli.h, 80
FLIDOMAIN_SERIAL
libfli.h, 80
FLIDOMAIN_SERIAL_1200
libfli.h, 80
FLIDOMAIN_SERIAL_19200
libfli.h, 80
flidomain_t
libfli.h, 81
FLIDOMAIN_USB
libfli.h, 80
FLIEndExposure
libfli.h, 84
FLIExposeFrame
libfli.h, 84
FLIFlushRow
libfli.h, 84
fliframe_t
libfli.h, 81
FLIFreeList
libfli.h, 84
FLIGetArrayArea
libfli.h, 84
FLIGetCameraMode
libfli.h, 84
FLIGetCameraModeString
libfli.h, 84
FLIGetCoolerPower
libfli.h, 84
FLIGetDeviceStatus
libfli.h, 84
FLIGetExposureStatus
libfli.h, 84
FLIGetFilterCount
libfli.h, 84
FLIGetFilterPos
libfli.h, 84
FLIGetFocuserExtent
libfli.h, 84
FLIGetFWRevision
INDEX
libfli.h, 84
FLIGetHWRevision
libfli.h, 84
FLIGetLibVersion
libfli.h, 84
FLIGetModel
libfli.h, 84
FLIGetPixelSize
libfli.h, 84
FLIGetSerialString
libfli.h, 84
FLIGetStepperPosition
libfli.h, 84
FLIGetStepsRemaining
libfli.h, 84
FLIGetTemperature
libfli.h, 84
FLIGetVisibleArea
libfli.h, 84
FLIGrabFrame
libfli.h, 84
FLIGrabRow
libfli.h, 84
FLIGrabVideoFrame
libfli.h, 84
FLIHomeDevice
libfli.h, 84
FLIHomeFocuser
libfli.h, 84
FLIList
libfli.h, 84
FLIListFirst
libfli.h, 84
FLIListNext
libfli.h, 84
FLILockDevice
libfli.h, 84
flimode_t
libfli.h, 82
FLIOpen
libfli.h, 84
FLIReadIOPort
libfli.h, 84
FLIReadTemperature
libfli.h, 84
FLISetBitDepth
libfli.h, 84
FLISetCameraMode
libfli.h, 84
FLISetDAC
libfli.h, 84
FLISetDebugLevel
libfli.h, 84
FLISetExposureTime
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
INDEX
libfli.h, 84
FLISetFanSpeed
libfli.h, 84
FLISetFilterPos
libfli.h, 84
FLISetFrameType
libfli.h, 84
FLISetHBin
libfli.h, 84
FLISetImageArea
libfli.h, 84
FLISetNFlushes
libfli.h, 84
FLISetTDI
libfli.h, 84
FLISetTemperature
libfli.h, 84
FLISetVBin
libfli.h, 84
flishutter_t
libfli.h, 82
FLIStartVideoMode
libfli.h, 84
flistatus_t
libfli.h, 82
FLIStepMotor
libfli.h, 84
FLIStepMotorAsync
libfli.h, 84
FLIStopVideoMode
libfli.h, 84
flitdiflags_t
libfli.h, 84
flitdirate_t
libfli.h, 84
FLITriggerExposure
libfli.h, 84
FLIUnlockDevice
libfli.h, 84
FLIUsbBulkIO
libfli.h, 84
FLIWriteIOPort
libfli.h, 84
full_image
FLI, 40
get_filter_pos
FLI, 30
GetMode
FLI, 31
GetMode_String
FLI, 31
i
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
91
fli_server2.cpp, 72
imagePixels
FLI, 40
imagesize
FLI, 40
info
fli.cpp, 48
fli_call.h, 58
init
FLI, 31
server, 44
init_filters
FLI, 34
instruccion
micliente, 42
server, 46
ip
micliente, 42
server, 46
lee_cooler_power
FLI, 35
lee_temperatura
FLI, 35
lee_temperatura_base
FLI, 36
libfli.h, 73
DllExport, 78
DllImport, 78
FLI_BGFLUSH_START, 78
FLI_BGFLUSH_STOP, 78
FLI_CAMERA_DATA_READY, 78
FLI_CAMERA_STATUS_EXPOSING, 78
FLI_CAMERA_STATUS_IDLE, 78
FLI_CAMERA_STATUS_MASK, 78
FLI_CAMERA_STATUS_READING_CCD,
78
FLI_CAMERA_STATUS_UNKNOWN, 78
FLI_CAMERA_STATUS_WAITING_FOR_TRIGGER, 78
FLI_FAN_SPEED_OFF, 78
FLI_FAN_SPEED_ON, 78
FLI_FOCUSER_STATUS_HOME, 78
FLI_FOCUSER_STATUS_HOMING, 78
FLI_FOCUSER_STATUS_LEGACY, 78
FLI_FOCUSER_STATUS_LIMIT, 78
FLI_FOCUSER_STATUS_MOVING_IN, 78
FLI_FOCUSER_STATUS_MOVING_MASK, 78
FLI_FOCUSER_STATUS_MOVING_OUT,
78
FLI_FOCUSER_STATUS_UNKNOWN, 78
FLI_FRAME_TYPE_DARK, 78
FLI_FRAME_TYPE_FLOOD, 78
92
INDEX
FLI_FRAME_TYPE_NORMAL, 78
FLI_FRAME_TYPE_RBI_FLUSH, 78
FLI_INVALID_DEVICE, 78
FLI_IO_P0, 78
FLI_IO_P1, 80
FLI_IO_P2, 80
FLI_IO_P3, 80
FLI_MODE_16BIT, 80
FLI_MODE_8BIT, 80
FLI_SHUTTER_CLOSE, 80
FLI_SHUTTER_EXTERNAL_EXPOSURE_CONTROL, 80
FLI_SHUTTER_EXTERNAL_TRIGGER, 80
FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH, 80
FLI_SHUTTER_EXTERNAL_TRIGGER_LOW, 80
FLI_SHUTTER_OPEN, 80
FLI_TEMPERATURE_BASE, 80
FLI_TEMPERATURE_CCD, 80
FLI_TEMPERATURE_EXTERNAL, 80
FLI_TEMPERATURE_INTERNAL, 80
flibgflush_t, 80
flibitdepth_t, 81
FLICancelExposure, 84
flichannel_t, 81
FLIClose, 84
FLIConfigureIOPort, 84
FLIControlBackgroundFlush, 84
FLIControlShutter, 84
FLICreateList, 84
FLIDEBUG_ALL, 80
FLIDEBUG_FAIL, 80
FLIDEBUG_INFO, 80
FLIDEBUG_NONE, 80
flidebug_t, 81
FLIDEBUG_WARN, 80
FLIDeleteList, 84
flidev_t, 81
FLIDEVICE_CAMERA, 80
FLIDEVICE_ENUMERATE_BY_CONNECTION, 80
FLIDEVICE_FILTERWHEEL, 80
FLIDEVICE_FOCUSER, 80
FLIDEVICE_HS_FILTERWHEEL, 80
FLIDEVICE_NONE, 80
FLIDEVICE_RAW, 80
FLIDOMAIN_INET, 80
FLIDOMAIN_NONE, 80
FLIDOMAIN_PARALLEL_PORT, 80
FLIDOMAIN_SERIAL, 80
FLIDOMAIN_SERIAL_1200, 80
FLIDOMAIN_SERIAL_19200, 80
flidomain_t, 81
FLIDOMAIN_USB, 80
FLIEndExposure, 84
FLIExposeFrame, 84
FLIFlushRow, 84
fliframe_t, 81
FLIFreeList, 84
FLIGetArrayArea, 84
FLIGetCameraMode, 84
FLIGetCameraModeString, 84
FLIGetCoolerPower, 84
FLIGetDeviceStatus, 84
FLIGetExposureStatus, 84
FLIGetFilterCount, 84
FLIGetFilterPos, 84
FLIGetFocuserExtent, 84
FLIGetFWRevision, 84
FLIGetHWRevision, 84
FLIGetLibVersion, 84
FLIGetModel, 84
FLIGetPixelSize, 84
FLIGetSerialString, 84
FLIGetStepperPosition, 84
FLIGetStepsRemaining, 84
FLIGetTemperature, 84
FLIGetVisibleArea, 84
FLIGrabFrame, 84
FLIGrabRow, 84
FLIGrabVideoFrame, 84
FLIHomeDevice, 84
FLIHomeFocuser, 84
FLIList, 84
FLIListFirst, 84
FLIListNext, 84
FLILockDevice, 84
flimode_t, 82
FLIOpen, 84
FLIReadIOPort, 84
FLIReadTemperature, 84
FLISetBitDepth, 84
FLISetCameraMode, 84
FLISetDAC, 84
FLISetDebugLevel, 84
FLISetExposureTime, 84
FLISetFanSpeed, 84
FLISetFilterPos, 84
FLISetFrameType, 84
FLISetHBin, 84
FLISetImageArea, 84
FLISetNFlushes, 84
FLISetTDI, 84
FLISetTemperature, 84
FLISetVBin, 84
flishutter_t, 82
FLIStartVideoMode, 84
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
INDEX
flistatus_t, 82
FLIStepMotor, 84
FLIStepMotorAsync, 84
FLIStopVideoMode, 84
flitdiflags_t, 84
flitdirate_t, 84
FLITriggerExposure, 84
FLIUnlockDevice, 84
FLIUsbBulkIO, 84
FLIWriteIOPort, 84
LIBFLIAPI, 80
LIBFLIAPI
libfli.h, 80
LIBVERSIZ
fli.cpp, 48
fli_call.h, 58
lista
fli_server2.cpp, 72
local_fd
micliente, 42
main
fli_server2.cpp, 62
manda_imagen
FLI, 36
maxcols
FLI, 40
maxpixels
FLI, 40
maxrows
FLI, 40
maxushort
fli.cpp, 52
micliente, 42
instruccion, 42
ip, 42
local_fd, 42
model
FLI, 40
mutex_busy
fli.cpp, 52
fli_server2.cpp, 72
MyVersion
fli_server2.cpp, 60
name
cam_t, 23
netclose
server, 45
onthread_procesa_mando
fli_server2.cpp, 64
op
server, 46
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
93
pon_temperatura
FLI, 36
PORT
fli_server2.cpp, 60
power
FLI, 40
procesa_mando
fli_server2.cpp, 66
procesando
server, 46
rbin
FLI, 40
red
fli.cpp, 52
fli_server2.cpp, 72
res
fli_server2.cpp, 72
responde_cliente
server, 45
revisa
server, 45
rorg
FLI, 40
rows
FLI, 40
salida
server, 46
server, 43
∼server, 43
busy, 46
CANCELA, 46
checa, 44
client_sockfd, 46
debug, 46
fileSal, 46
init, 44
instruccion, 46
ip, 46
netclose, 45
op, 46
procesando, 46
responde_cliente, 45
revisa, 45
salida, 46
server, 43
set_ip, 45
status, 46
server.cpp, 85
server.h, 86
set_filter_pos
FLI, 37
set_ip
94
INDEX
server, 45
SetMode
FLI, 37
showinfo
FLI, 37
status
server, 46
t_result
fli_server2.cpp, 72
tabla
FLI, 38
test
fli_server2.cpp, 72
thread_mando
fli_server2.cpp, 72
thread_red
fli_server2.cpp, 72
TRUE
fli.h, 53
fli_server2.cpp, 60
TRYFUNC
fli.cpp, 48
fli_call.h, 58
update
FLI, 38
v_cols
FLI, 40
v_corg
FLI, 40
v_rorg
FLI, 40
v_rows
FLI, 40
warnc
fli.cpp, 48
fli_call.h, 58
writeraw
fli.cpp, 51
fli_call.c, 57
Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen
Descargar