From 5033b9b096dfec5c7189b9d62ecdcf9b5d3cc359 Mon Sep 17 00:00:00 2001 From: Edward Emelianov Date: Wed, 21 Dec 2022 15:41:54 +0300 Subject: [PATCH] add HIKROBOT support --- CMakeLists.txt | 11 +- HIKROBOT_cameras/CMakeLists.txt | 12 + HIKROBOT_cameras/mvsfunc.c | 543 ++++++++++++++++++++++++++++++++ ccdfunc.c | 1 + cmdlnopts.c | 1 + cmdlnopts.h | 1 - locale/ru/messages.po | 280 ++++++++-------- locale/ru/ru.po | 238 +++++++------- main.c | 1 - 9 files changed, 820 insertions(+), 268 deletions(-) create mode 100644 HIKROBOT_cameras/CMakeLists.txt create mode 100644 HIKROBOT_cameras/mvsfunc.c diff --git a/CMakeLists.txt b/CMakeLists.txt index e2cc8af..485e344 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,23 +70,20 @@ if(DEFINED IMAGEVIEW AND IMAGEVIEW STREQUAL "yes") endif() add_subdirectory(Dummy_cameras) -#list(APPEND ${PROJ}_INCLUDE_DIRS Dummy_cameras) -#list(APPEND ${PROJ}_LIBRARIES ${DUMMYLIB}) -#include_directories(Dummy_cameras) - -#add_custom_target(plugins) -#add_dependencies(plugins devdummy) # additional modules with CCD/CMOS support if(DEFINED ZWO AND ZWO STREQUAL "yes") add_subdirectory(ZWO_cameras) endif() -# additional modules with CCD/CMOS support if(DEFINED FLI AND FLI STREQUAL "yes") add_subdirectory(FLI_cameras) endif() +if(DEFINED HIKROBOT AND HIKROBOT STREQUAL "yes") + add_subdirectory(HIKROBOT_cameras) +endif() + # directory should contain dir locale/ru for gettext translations set(LCPATH ${CMAKE_SOURCE_DIR}/locale/ru) diff --git a/HIKROBOT_cameras/CMakeLists.txt b/HIKROBOT_cameras/CMakeLists.txt new file mode 100644 index 0000000..a0b33d5 --- /dev/null +++ b/HIKROBOT_cameras/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.20) +set(CCDLIB devhikrobot) + +find_package(PkgConfig REQUIRED) +pkg_check_modules(${CCDLIB} REQUIRED mvs>=2.1 usefull_macros) + +aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} SRC) +include_directories(${${CCDLIB}_INCLUDE_DIRS} ..) +link_directories(${${CCDLIB}_LIBRARY_DIRS}) + +add_library(${CCDLIB} SHARED ${SRC}) +target_link_libraries(${CCDLIB} ${${CCDLIB}_LIBRARIES} -fPIC) diff --git a/HIKROBOT_cameras/mvsfunc.c b/HIKROBOT_cameras/mvsfunc.c new file mode 100644 index 0000000..533fdce --- /dev/null +++ b/HIKROBOT_cameras/mvsfunc.c @@ -0,0 +1,543 @@ +/* + * This file is part of the CCD_Capture project. + * Copyright 2022 Edward V. Emelianov . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +#include +#include + +#include "basestructs.h" + +#ifndef FLT_EPSILON +#define FLT_EPSILON 1.19209290E-07F +#endif + +extern Camera camera; + +static MV_CC_DEVICE_INFO_LIST stDeviceList; +static void *handle = NULL; +static char camname[BUFSIZ] = {0}; +//static long cam_err, tmpl; +static capture_status capStatus = CAPTURE_NO; +static int curhbin = 1, curvbin = 1; +static double starttime = 0.; // time when exposure started +static float exptime = 0.; // exposition time (in seconds) +static MV_FRAME_OUT_INFO_EX stImageInfo = {0}; // last image info +static uint16_t *pdata = NULL; +static int pdatasz = 0; + +static struct{ + float maxgain; + float mingain; + float maxbright; + float minbright; + float minexp; + float maxexp; + int maxbin; +} extrvalues = {0}; // extremal values + +static int changeenum(const char *key, uint32_t val){ + if(!handle) return FALSE; + MVCC_ENUMVALUE e; + if(MV_OK != MV_CC_GetEnumValue(handle, key, &e)){ + WARNX("Enum '%s' is absent", key); + return FALSE; + } + if(e.nCurValue == val) return TRUE; + if(MV_OK != MV_CC_SetEnumValue(handle, key, val)){ + WARNX("Cant change %s to %d, supported values are:", key, val); + for(int i = 0; i < (int)e.nSupportedNum; ++i){ + fprintf(stderr, "%s%u", i ? ", " : "", e.nSupportValue[i]); + } + fprintf(stderr, "\n"); + return FALSE; + } + if(MV_OK != MV_CC_GetEnumValue(handle, key, &e)) return FALSE; + if(e.nCurValue == val) return TRUE; + WARNX("New value of '%s' changed to %d, not to %d", key, e.nCurValue, val); + return FALSE; +} + +static int changeint(const char *key, uint32_t val){ + if(!handle) return FALSE; + MVCC_INTVALUE i; + if(MV_OK != MV_CC_GetIntValue(handle, key, &i)){ + WARNX("Int '%s' is absent", key); + return FALSE; + } + if(i.nCurValue == val) return TRUE; + if(MV_OK != MV_CC_SetIntValue(handle, key, val)){ + WARNX("Cant change %s to %u; available range is %u..%u", key, val, i.nMin, i.nMax); + return FALSE; + } + if(MV_OK != MV_CC_GetIntValue(handle, key, &i)) return FALSE; + if(i.nCurValue == val) return TRUE; + WARNX("New value of '%s' changed to %d, not to %d", key, i.nCurValue, val); + return FALSE; +} + +static int changefloat(const char *key, float val){ + if(!handle) return FALSE; + MVCC_FLOATVALUE f; + if(MV_OK != MV_CC_GetFloatValue(handle, key, &f)){ + WARNX("Float '%s' is absent", key); + return FALSE; + } + if(fabs(f.fCurValue - val) < FLT_EPSILON) return TRUE; + if(MV_OK != MV_CC_SetFloatValue(handle, key, val)){ + WARNX("Cant change %s to %g; available range is %g..%g", key, val, f.fMin, f.fMax); + return FALSE; + } + if(MV_OK != MV_CC_GetFloatValue(handle, key, &f)) return FALSE; + if(fabs(f.fCurValue - val) < FLT_EPSILON) return TRUE; + WARNX("New value of '%s' changed to %g, not to %g", key, f.fCurValue, val); + return FALSE; +} + +static int cam_setbin(int binh, int binv){ + FNAME(); + if(!handle) return FALSE; + if(!changeenum("BinningHorizontal", binh)) return FALSE; + if(!changeenum("BinningVertical", binv)) return FALSE; + curhbin = binh; + curvbin = binv; + return TRUE; +} + +static int cam_getbin(int *h, int *v){ + MVCC_ENUMVALUE e; + if(MV_OK != MV_CC_GetEnumValue(handle, "BinningHorizontal", &e)) return FALSE; + curhbin = e.nCurValue; + //printf("Hbin supported = %d", e.nSupportedNum); + //for(int i = 0; i < (int)e.nSupportedNum; ++i) printf("\t%d", e.nSupportValue[i]); + if(MV_OK != MV_CC_GetEnumValue(handle, "BinningVertical", &e)) return FALSE; + curvbin = e.nCurValue; + //printf("Vbin supported = %d", e.nSupportedNum); + //for(int i = 0; i < (int)e.nSupportedNum; ++i) printf("\t%d", e.nSupportValue[i]); + if(h) *h = curhbin; + if(v) *v = curvbin; + return TRUE; +} + +static int cam_getgain(float *g){ + if(!handle) return FALSE; + MVCC_FLOATVALUE gain; + if(MV_OK != MV_CC_GetFloatValue(handle, "Gain", &gain)) return FALSE; + if(g) *g = gain.fCurValue; + extrvalues.maxgain = gain.fMax; + extrvalues.mingain = gain.fMin; + DBG("Gain: cur=%g, min=%g, max=%g", gain.fCurValue, gain.fMin, gain.fMax); + return TRUE; +} + +static int cam_getmaxgain(float *g){ + if(!handle) return FALSE; + if(g) *g = extrvalues.maxgain; + return TRUE; +} + +static int cam_setgain(float g){ + if(!handle) return FALSE; + return changefloat("Gain", g); +} + +static int cam_getbright(float *b){ + if(!handle) return FALSE; + MVCC_INTVALUE bright; + if(MV_OK != MV_CC_GetIntValue(handle, "Brightness", &bright)){ + return FALSE; + } + if(b) *b = bright.nCurValue; + extrvalues.maxgain = bright.nMax; + extrvalues.mingain = bright.nMin; + DBG("Brightness: cur=%d, min=%d, max=%d", bright.nCurValue, bright.nMin, bright.nMax); + return TRUE; +} + +static int cam_setbright(float b){ + if(!handle) return FALSE; + return changeint("Brightness", (uint32_t)b); +} + +static void PrintDeviceInfo(MV_CC_DEVICE_INFO* pstMVDevInfo){ + if(!pstMVDevInfo) return; + if(pstMVDevInfo->nTLayerType == MV_GIGE_DEVICE){ + int nIp1 = ((pstMVDevInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0xff000000) >> 24); + int nIp2 = ((pstMVDevInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0x00ff0000) >> 16); + int nIp3 = ((pstMVDevInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0x0000ff00) >> 8); + int nIp4 = (pstMVDevInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0x000000ff); + printf("Device Model Name: %s\n", pstMVDevInfo->SpecialInfo.stGigEInfo.chModelName); + strncpy(camname, (char*)pstMVDevInfo->SpecialInfo.stGigEInfo.chModelName, BUFSIZ-1); + printf("CurrentIp: %d.%d.%d.%d\n" , nIp1, nIp2, nIp3, nIp4); + printf("UserDefinedName: %s\n\n" , pstMVDevInfo->SpecialInfo.stGigEInfo.chUserDefinedName); + }else if (pstMVDevInfo->nTLayerType == MV_USB_DEVICE){ + printf("Device Model Name: %s\n", pstMVDevInfo->SpecialInfo.stUsb3VInfo.chModelName); + printf("UserDefinedName: %s\n\n", pstMVDevInfo->SpecialInfo.stUsb3VInfo.chUserDefinedName); + strncpy(camname, (char*)pstMVDevInfo->SpecialInfo.stUsb3VInfo.chModelName, BUFSIZ-1); + }else { + printf("Not support.\n"); + } +} + +static void cam_closecam(){ + DBG("CAMERA CLOSE"); + if(handle){ + MV_CC_StopGrabbing(handle); + if(MV_OK != MV_CC_CloseDevice(handle)) WARNX("Can't close opened camera"); + if(MV_OK != MV_CC_DestroyHandle(handle)) WARNX("Can't destroy camera handle"); + handle = NULL; + } + FREE(pdata); + pdatasz = 0; +} + +static int cam_findCCD(){ + DBG("Try to find HIKROBOT cameras .. "); + memset(&stDeviceList, 0, sizeof(MV_CC_DEVICE_INFO_LIST)); + if(MV_OK != MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE, &stDeviceList)){ + WARNX("No HIKROBOT cameras found"); + return FALSE; + } + camera.Ndevices = stDeviceList.nDeviceNum; + if(stDeviceList.nDeviceNum > 0){ + for(uint32_t i = 0; i < stDeviceList.nDeviceNum; ++i){ + DBG("[device %d]:\n", i); + MV_CC_DEVICE_INFO* pDeviceInfo = stDeviceList.pDeviceInfo[i]; + if(!pDeviceInfo) continue; + PrintDeviceInfo(pDeviceInfo); + } + } else{ + WARNX("No HIKROBOT cameras found"); + return FALSE; + } + return TRUE; +} + +static int cam_setActiceCam(int n){ + DBG("SET ACTIVE #%d", n); + if(!camera.Ndevices && !cam_findCCD()) return FALSE; + if(n >= camera.Ndevices){ + return FALSE; + } + cam_closecam(); + if(MV_OK != MV_CC_CreateHandleWithoutLog(&handle, stDeviceList.pDeviceInfo[n])){ + WARNX("Can't create camera handle"); + return FALSE; + } + if(MV_OK != MV_CC_OpenDevice(handle, MV_ACCESS_Exclusive, 0)){ + WARNX("Can't open camera file"); + return FALSE; + } + if(stDeviceList.pDeviceInfo[n]->nTLayerType == MV_GIGE_DEVICE){ + int nPacketSize = MV_CC_GetOptimalPacketSize(handle); + if(nPacketSize > 0){ + if(!changeint("GevSCPSPacketSize", nPacketSize)){ + WARNX("Can't set optimal packet size"); + } + } else{ + WARNX("Can't get optimal packet size"); + } + } + // set software trigger +/* MVCC_ENUMVALUE enumval; + MV_CC_GetEnumValue(handle, "TriggerMode", &enumval); + DBG("TRmode: %d", enumval.nSupportedNum); + for(uint16_t i = 0; i < enumval.nSupportedNum; ++i) fprintf(stderr, "\t%d: %u\n", i, enumval.nSupportValue[i]); + */ + if(!changeenum("TriggerMode", MV_TRIGGER_MODE_OFF)){ + WARNX("Can't turn off triggered mode"); + return FALSE; + } + if(!changeenum("AcquisitionMode", MV_ACQ_MODE_SINGLE)){ + WARNX("Can't set acquisition mode to single"); + return FALSE; + } + if(!changeenum("ExposureMode", MV_EXPOSURE_MODE_TIMED)){ + WARNX("Can't change exposure mode to timed"); + return FALSE; + } + if(!changeenum("ExposureAuto", MV_EXPOSURE_AUTO_MODE_OFF)){ + WARNX("Can't turn off auto exposure mode"); + return FALSE; + } + if(!changeenum("GainAuto", 0)){ + WARNX("Can't turn off auto gain"); + return FALSE; + } + MVCC_ENUMVALUE EnumValue; + if(MV_OK == MV_CC_GetEnumValue(handle, "PixelFormat", &EnumValue)){ + DBG("PixelFormat=%x", EnumValue.nCurValue); +#ifdef EBUG + for(int i = 0; i < (int)EnumValue.nSupportedNum; ++i) fprintf(stderr, "\t\t%x\n", EnumValue.nSupportValue[i]); +#endif + } + if(MV_OK == MV_CC_GetEnumValue(handle, "PixelSize", &EnumValue)){ + DBG("PixelSize=%d", EnumValue.nCurValue); +#ifdef EBUG + for(int i = 0; i < (int)EnumValue.nSupportedNum; ++i) fprintf(stderr, "\t\t%d\n", EnumValue.nSupportValue[i]); +#endif + } + cam_getgain(NULL); // get extremal gain values + cam_getbright(NULL); // get extremal brightness values + cam_getbin(NULL, NULL); // get current binning + MVCC_FLOATVALUE FloatValue; + // get extremal exptime values + if(MV_OK != MV_CC_GetFloatValue(handle, "ExposureTime", &FloatValue)) WARNX("Can't get min/max exp"); + else{ + extrvalues.maxexp = FloatValue.fMax / 1e6; + extrvalues.minexp = FloatValue.fMin / 1e6; + exptime = FloatValue.fCurValue / 1e6; + } + printf("Min exp: %g s, max exp: %g s\n", extrvalues.minexp, extrvalues.maxexp); + camera.pixX = camera.pixY = 0.; // unknown + MVCC_INTVALUE IntValue; + camera.array.xoff = camera.array.yoff = 0; + int *values[6] = {&camera.array.w, &camera.array.h, &camera.geometry.w, &camera.geometry.h, &camera.geometry.xoff, &camera.geometry.yoff}; + const char *names[2] = {"WidthMax", "HeightMax"};//, "Width", "Height", "OffsetX", "OffsetY"}; + for(int i = 0; i < 2; ++i){ + if(MV_OK != MV_CC_GetIntValue(handle, names[i], &IntValue)){ + WARNX("Can't get %s", names[i]); return FALSE; + } + *values[i] = IntValue.nCurValue; + DBG("%s = %d", names[i], *values[i]); + } + camera.array.h *= curvbin; + camera.array.w *= curhbin; + camera.geometry = camera.array; + camera.field = camera.array; + pdatasz = camera.array.h * camera.array.w; + DBG("\t\t2*w*h = %d", pdatasz*2); + pdata = MALLOC(uint16_t, pdatasz); // allocate max available buffer + return TRUE; +} + +static int cam_geomlimits(frameformat *l, frameformat *s){ + if(l) *l = camera.array; + if(s) *s = (frameformat){.w = 1, .h = 1, .xoff = 1, .yoff = 1}; + return TRUE; +} + +static int cam_startexp(){ + if(!handle || !pdata) return FALSE; + DBG("Start exposition"); + MV_CC_StopGrabbing(handle); + if(MV_OK != MV_CC_StartGrabbing(handle)) return FALSE; + starttime = dtime(); + capStatus = CAPTURE_PROCESS; + return TRUE; +} + +static int cam_pollcapt(capture_status *st, float *remain){ + if(!handle || !pdata) return FALSE; + DBG("capStatus = %d", capStatus); + if(capStatus == CAPTURE_READY){ + DBG("Capture ends"); + goto retn; + } + if(capStatus == CAPTURE_NO){ // start capture + goto retn; + } + if(capStatus == CAPTURE_PROCESS){ + if(MV_OK == MV_CC_GetOneFrameTimeout(handle, (uint8_t*)pdata, pdatasz, &stImageInfo, 50)){ + DBG("OK, ready"); + if(remain) *remain = 0.f; + if(st) *st = CAPTURE_READY; + capStatus = CAPTURE_NO; + return TRUE; + } + DBG("not ready"); + if(remain){ + float diff = exptime - (dtime() - starttime); + DBG("diff = %g", diff); + if(diff < -5.0){ + capStatus = CAPTURE_NO; + if(st) *st = CAPTURE_ABORTED; + return FALSE; + } + if(diff < 0.f) diff = 0.f; + *remain = diff; + } + }else{ // some error + if(st) *st = CAPTURE_ABORTED; + capStatus = CAPTURE_NO; + return FALSE; + } +retn: + if(st) *st = capStatus; + return TRUE; +} + +static int cam_capt(IMG *ima){ + if(!handle || !pdata) return FALSE; + if(!ima || !ima->data) return FALSE; + ; + int bytes = ima->h*ima->w*2, stbytes = stImageInfo.nWidth * stImageInfo.nHeight * 2; + if(bytes != stbytes) WARNX("Different sizes of image buffer & grabbed image"); + if(stbytes > bytes) bytes = stbytes; + DBG("Copy %d bytes (stbytes=%d)", bytes, stbytes); + MVCC_ENUMVALUE EnumValue; + if(MV_OK == MV_CC_GetEnumValue(handle, "PixelSize", &EnumValue)){ + if(EnumValue.nCurValue == 16){ + memcpy(ima->data, pdata, bytes); + }else if(EnumValue.nCurValue != 8){ + WARNX("Unsupported pixel size"); + return FALSE; + } + } + // transform 8bits to 16 + DBG("TRANSFORM 8 bit to 16"); + bytes /= 2; + uint8_t *ptr = (uint8_t*) pdata; + for(int i = 0; i < bytes; ++i){ + ima->data[i] = (uint16_t) *ptr++; + } + return TRUE; +} + +static int cam_modelname(char *buf, int bufsz){ + strncpy(buf, camname, bufsz); + return TRUE; +} + +static int cam_setgeometry(frameformat *f){ + FNAME(); + if(!f || !handle) return FALSE; + DBG("getbin"); + if(!cam_getbin(NULL, NULL)) return FALSE; + DBG("set geom %dx%d (off: %dx%d)", f->w, f->h, f->xoff, f->yoff); + if(!changeint("Width", f->w * curhbin)) return FALSE; + if(!changeint("Height", f->h * curvbin)) return FALSE; + if(!changeint("OffsetX", f->xoff * curhbin)) return FALSE; + if(!changeint("OffsetY", f->yoff * curvbin)) return FALSE; + DBG("Success!"); + return TRUE; +} + +static int cam_settemp(float t){ + if(!handle) return FALSE; + if(!changeenum("DeviceTemperatureSelector", 0)) return FALSE; + if(!changeenum("DeviceTemperature", t)) return FALSE; + return TRUE; +} + +static int cam_gettemp(float *t){ + MVCC_FLOATVALUE fl; + if(MV_OK != MV_CC_GetFloatValue(handle, "DeviceTemperature", &fl)) return FALSE; + if(t) *t = fl.fCurValue; + return TRUE; +} + +static int cam_gettchip(float *t){ + if(!handle) return FALSE; + changeenum("DeviceTemperatureSelector", 0); // there's can be camera without this enume + return cam_gettemp(t); +} + +static int cam_gettbody(_U_ float *t){ + if(!handle) return FALSE; + if(!changeenum("DeviceTemperatureSelector", 1)) return FALSE; + return cam_gettemp(t); +} + +static void cam_cancel(){ + if(!handle) return; + MV_CC_StopGrabbing(handle); +} + +static int cam_shutter(_U_ shutter_op cmd){ + return FALSE; +} + +/* +static int cam_confio(int io){ + if(!handle) return FALSE; + MVCC_ENUMVALUE e; + if(MV_OK != MV_CC_GetEnumValue(handle, "LineSelector", &e)) return FALSE; + int bit = 1; + for(int i = 0; i < (int)e.nSupportedNum; ++i, bit <<= 1){ + green("line %d: %d\n", e.nSupportValue[i]); + if(io & bit) printf("bit %d\n", i); + } + return TRUE; +} +*/ + +static int cam_setexp(float t){ // t is in seconds!! + if(!handle) return FALSE; + if(!changefloat("ExposureTime", t*1e6)) return FALSE; + exptime = t; + return TRUE; +} + +static int cam_setbitdepth(int i){ + if(!handle) return FALSE; + int d = i ? 16 : 8; + if(!changeenum("PixelSize", d)) return FALSE; + d = i ? PixelType_Gvsp_Mono16 : PixelType_Gvsp_Mono8; + if(!changeenum("PixelFormat", d)) return FALSE; + return TRUE; +} + +static int cam_setfanspd(_U_ fan_speed s){ + return FALSE; +} + +//static int cam_ffalse(_U_ float f){ return FALSE; } +static int cam_fpfalse(_U_ float *f){ return FALSE; } +static int cam_ifalse(_U_ int i){ return FALSE; } +static int cam_ipfalse(_U_ int *i){ return FALSE; } + +/* + * Global objects: camera, focuser and wheel + */ +Camera camera = { + .check = cam_findCCD, + .close = cam_closecam, + .pollcapture = cam_pollcapt, + .capture = cam_capt, + .cancel = cam_cancel, + .startexposition = cam_startexp, + // setters: + .setDevNo = cam_setActiceCam, + .setbrightness = cam_setbright, + .setexp = cam_setexp, + .setgain = cam_setgain, + .setT = cam_settemp, + .setbin = cam_setbin, + .setnflushes = cam_ifalse, + .shuttercmd = cam_shutter, + .confio = cam_ifalse, + .setio = cam_ifalse, + .setframetype = cam_ifalse, // set DARK or NORMAL: no shutter -> no darks + .setbitdepth = cam_setbitdepth, + .setfastspeed = cam_ifalse, + .setgeometry = cam_setgeometry, + .setfanspeed = cam_setfanspd, + // getters: + .getbrightness = cam_getbright, + .getModelName = cam_modelname, + .getgain = cam_getgain, + .getmaxgain = cam_getmaxgain, + .getgeomlimits = cam_geomlimits, + .getTcold = cam_gettchip, + .getThot = cam_gettbody, + .getTbody = cam_fpfalse, + .getbin = cam_getbin, + .getio = cam_ipfalse, +}; diff --git a/ccdfunc.c b/ccdfunc.c index a586bce..0b443f2 100644 --- a/ccdfunc.c +++ b/ccdfunc.c @@ -760,6 +760,7 @@ void ccds(){ uint16_t *img = MALLOC(uint16_t, raw_width * raw_height); + DBG("\n\nAllocated image 2x%dx%d=%d", raw_width, raw_height, 2 * raw_width * raw_height); IMG ima = {.data = img, .w = raw_width, .h = raw_height}; #ifdef IMAGEVIEW windowData *mainwin = NULL; diff --git a/cmdlnopts.c b/cmdlnopts.c index 86a68c3..daf7675 100644 --- a/cmdlnopts.c +++ b/cmdlnopts.c @@ -8,6 +8,7 @@ #include #include "cmdlnopts.h" +#include "basestructs.h" #define DEFAULT_PID_FILE "/tmp/CCD_Capture.pid" diff --git a/cmdlnopts.h b/cmdlnopts.h index 833cc00..d0bcaa6 100644 --- a/cmdlnopts.h +++ b/cmdlnopts.h @@ -20,7 +20,6 @@ #ifndef CMDLNOPTS_H__ #define CMDLNOPTS_H__ -#include "ccdfunc.h" #include /* diff --git a/locale/ru/messages.po b/locale/ru/messages.po index 9829656..a4fa13f 100644 --- a/locale/ru/messages.po +++ b/locale/ru/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-19 14:59+0300\n" +"POT-Creation-Date: 2022-12-21 15:25+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,231 +17,231 @@ msgstr "" "Content-Type: text/plain; charset=koi8-r\n" "Content-Transfer-Encoding: 8bit\n" -#: cmdlnopts.c:42 +#: cmdlnopts.c:43 msgid "common device plugin (e.g devfli.so)" msgstr "" -#: cmdlnopts.c:43 +#: cmdlnopts.c:44 msgid "camera device plugin (e.g. devfli.so)" msgstr "" -#: cmdlnopts.c:44 +#: cmdlnopts.c:45 msgid "focuser device plugin (e.g. devzwo.so)" msgstr "" -#: cmdlnopts.c:45 +#: cmdlnopts.c:46 msgid "wheel device plugin (e.g. devdummy.so)" msgstr "" -#: cmdlnopts.c:46 +#: cmdlnopts.c:47 msgid "list connected devices" msgstr "" -#: cmdlnopts.c:47 +#: cmdlnopts.c:48 msgid "camera device number (if many: 0, 1, 2 etc)" msgstr "" -#: cmdlnopts.c:48 +#: cmdlnopts.c:49 msgid "filter wheel device number (if many: 0, 1, 2 etc)" msgstr "" -#: cmdlnopts.c:49 +#: cmdlnopts.c:50 msgid "focuser device number (if many: 0, 1, 2 etc)" msgstr "" -#: cmdlnopts.c:50 +#: cmdlnopts.c:51 msgid "show this help" msgstr "" -#: cmdlnopts.c:51 +#: cmdlnopts.c:52 msgid "rewrite output file if exists" msgstr "" -#: cmdlnopts.c:52 +#: cmdlnopts.c:53 msgid "verbose level (-V - messages, -VV - debug, -VVV - all shit)" msgstr "" -#: cmdlnopts.c:53 +#: cmdlnopts.c:54 msgid "not open shutter, when exposing (\"dark frames\")" msgstr "" -#: cmdlnopts.c:54 +#: cmdlnopts.c:55 msgid "run in 8-bit mode" msgstr "" -#: cmdlnopts.c:55 +#: cmdlnopts.c:56 msgid "fast readout mode" msgstr "" -#: cmdlnopts.c:56 +#: cmdlnopts.c:57 msgid "set CCD temperature to given value (degr C)" msgstr "" -#: cmdlnopts.c:57 +#: cmdlnopts.c:58 msgid "set fan speed (0 - off, 1 - low, 2 - high)" msgstr "" -#: cmdlnopts.c:59 +#: cmdlnopts.c:60 msgid "program author" msgstr "" -#: cmdlnopts.c:60 +#: cmdlnopts.c:61 msgid "object type (neon, object, flat etc)" msgstr "" -#: cmdlnopts.c:61 +#: cmdlnopts.c:62 msgid "instrument name" msgstr "" -#: cmdlnopts.c:62 +#: cmdlnopts.c:63 msgid "object name" msgstr "" -#: cmdlnopts.c:63 +#: cmdlnopts.c:64 msgid "observers' names" msgstr "" -#: cmdlnopts.c:64 +#: cmdlnopts.c:65 msgid "observing program name" msgstr "" -#: cmdlnopts.c:65 +#: cmdlnopts.c:66 msgid "add records to header from given file[s]" msgstr "" -#: cmdlnopts.c:66 +#: cmdlnopts.c:67 msgid "output file name" msgstr "" -#: cmdlnopts.c:67 +#: cmdlnopts.c:68 msgid "wait while exposition ends" msgstr "" -#: cmdlnopts.c:69 +#: cmdlnopts.c:70 msgid "N flushes before exposing (default: 1)" msgstr "" -#: cmdlnopts.c:70 +#: cmdlnopts.c:71 msgid "horizontal binning to N pixels" msgstr "" -#: cmdlnopts.c:71 +#: cmdlnopts.c:72 msgid "vertical binning to N pixels" msgstr "" -#: cmdlnopts.c:72 +#: cmdlnopts.c:73 msgid "make series of N frames" msgstr "" -#: cmdlnopts.c:73 +#: cmdlnopts.c:74 msgid "make pause for N seconds between expositions" msgstr "" -#: cmdlnopts.c:74 +#: cmdlnopts.c:75 msgid "set exposure time to given value (seconds!)" msgstr "" -#: cmdlnopts.c:75 +#: cmdlnopts.c:76 msgid "cancel current exposition" msgstr "" -#: cmdlnopts.c:76 +#: cmdlnopts.c:77 msgid "" "absolute (not divided by binning!) frame X0 coordinate (-1 - all with " "overscan)" msgstr "" -#: cmdlnopts.c:77 +#: cmdlnopts.c:78 msgid "absolute frame Y0 coordinate (-1 - all with overscan)" msgstr "" -#: cmdlnopts.c:78 +#: cmdlnopts.c:79 msgid "absolute frame X1 coordinate (-1 - all with overscan)" msgstr "" -#: cmdlnopts.c:79 +#: cmdlnopts.c:80 msgid "absolute frame Y1 coordinate (-1 - all with overscan)" msgstr "" -#: cmdlnopts.c:81 +#: cmdlnopts.c:82 msgid "open shutter" msgstr "" -#: cmdlnopts.c:82 +#: cmdlnopts.c:83 msgid "close shutter" msgstr "" -#: cmdlnopts.c:83 +#: cmdlnopts.c:84 msgid "run exposition on LOW @ pin5 I/O port" msgstr "" -#: cmdlnopts.c:84 +#: cmdlnopts.c:85 msgid "run exposition on HIGH @ pin5 I/O port" msgstr "" -#: cmdlnopts.c:85 +#: cmdlnopts.c:86 msgid "get value of I/O port pins" msgstr "" -#: cmdlnopts.c:86 +#: cmdlnopts.c:87 msgid "move stepper motor asynchronous" msgstr "" -#: cmdlnopts.c:88 +#: cmdlnopts.c:89 msgid "set I/O port pins to given value (decimal number, pin1 is LSB)" msgstr "" -#: cmdlnopts.c:89 +#: cmdlnopts.c:90 msgid "" "configure I/O port pins to given value (decimal number, pin1 is LSB, 1 == " "output, 0 == input)" msgstr "" -#: cmdlnopts.c:91 +#: cmdlnopts.c:92 msgid "move focuser to absolute position, mm" msgstr "" -#: cmdlnopts.c:92 +#: cmdlnopts.c:93 msgid "move focuser to relative position, mm (only for standalone)" msgstr "" -#: cmdlnopts.c:94 +#: cmdlnopts.c:95 msgid "set wheel position" msgstr "" -#: cmdlnopts.c:96 +#: cmdlnopts.c:97 msgid "CMOS gain level" msgstr "" -#: cmdlnopts.c:97 +#: cmdlnopts.c:98 msgid "CMOS brightness level" msgstr "" -#: cmdlnopts.c:99 +#: cmdlnopts.c:100 msgid "logging file name (if run as server)" msgstr "" -#: cmdlnopts.c:100 +#: cmdlnopts.c:101 msgid "UNIX socket name" msgstr "" -#: cmdlnopts.c:101 +#: cmdlnopts.c:102 msgid "local INET socket port" msgstr "" -#: cmdlnopts.c:102 +#: cmdlnopts.c:103 msgid "run as client" msgstr "" -#: cmdlnopts.c:103 +#: cmdlnopts.c:104 msgid "PID file (default: " msgstr "" -#: cmdlnopts.c:104 +#: cmdlnopts.c:105 msgid "restart image server" msgstr "" -#: cmdlnopts.c:107 +#: cmdlnopts.c:108 msgid "Display image in OpenGL window" msgstr "" @@ -265,287 +265,287 @@ msgstr "" msgid "Can't find wheel in plugin %s: %s" msgstr "" -#: ccdfunc.c:155 +#: ccdfunc.c:183 msgid "Camera device unknown" msgstr "" -#: ccdfunc.c:161 +#: ccdfunc.c:189 msgid "Neither filename nor filename prefix pointed!" msgstr "" #. Не могу сохранить файл -#: ccdfunc.c:180 +#: ccdfunc.c:208 #, c-format msgid "Can't save file with prefix %s" msgstr "" -#: ccdfunc.c:334 +#: ccdfunc.c:357 #, c-format msgid "File saved as '%s'" msgstr "" -#: ccdfunc.c:343 +#: ccdfunc.c:366 msgid "Error saving file" msgstr "" -#: ccdfunc.c:383 +#: ccdfunc.c:406 #, c-format msgid "Image stat:\n" msgstr "" -#: ccdfunc.c:391 +#: ccdfunc.c:414 msgid "Focuser device not pointed" msgstr "" -#: ccdfunc.c:398 +#: ccdfunc.c:421 msgid "No focusers found" msgstr "" -#: ccdfunc.c:430 +#: ccdfunc.c:453 #, c-format msgid "Found %d focusers, you point number %d" msgstr "" -#: ccdfunc.c:434 +#: ccdfunc.c:457 msgid "Can't set active focuser number" msgstr "" -#: ccdfunc.c:448 +#: ccdfunc.c:471 msgid "Can't get focuser limit positions" msgstr "" -#: ccdfunc.c:455 +#: ccdfunc.c:478 msgid "Can't get current focuser position" msgstr "" -#: ccdfunc.c:469 +#: ccdfunc.c:492 #, c-format msgid "Can't set position %g: out of limits [%g, %g]" msgstr "" -#: ccdfunc.c:473 +#: ccdfunc.c:496 msgid "Can't home focuser" msgstr "" -#: ccdfunc.c:475 +#: ccdfunc.c:498 #, c-format msgid "Can't set position %g" msgstr "" -#: ccdfunc.c:483 +#: ccdfunc.c:506 msgid "Wheel device not pointed" msgstr "" -#: ccdfunc.c:490 +#: ccdfunc.c:513 msgid "No wheels found" msgstr "" -#: ccdfunc.c:522 +#: ccdfunc.c:545 #, c-format msgid "Found %d wheels, you point number %d" msgstr "" -#: ccdfunc.c:526 +#: ccdfunc.c:549 msgid "Can't set active wheel number" msgstr "" -#: ccdfunc.c:542 +#: ccdfunc.c:565 msgid "Can't get max wheel position" msgstr "" -#: ccdfunc.c:549 +#: ccdfunc.c:572 #, c-format msgid "Wheel position should be from 0 to %d" msgstr "" -#: ccdfunc.c:553 +#: ccdfunc.c:576 #, c-format msgid "Can't set wheel position %d" msgstr "" -#: ccdfunc.c:570 +#: ccdfunc.c:593 #, c-format msgid "%.1f seconds till exposition ends" msgstr "" -#: ccdfunc.c:584 +#: ccdfunc.c:607 msgid "Camera device not pointed" msgstr "" -#: ccdfunc.c:591 ccdfunc.c:592 +#: ccdfunc.c:614 ccdfunc.c:615 msgid "No cameras found" msgstr "" -#: ccdfunc.c:627 -#, c-format -msgid "Found %d cameras, you point number %d" -msgstr "" - -#: ccdfunc.c:631 -msgid "Can't set active camera number" -msgstr "" - -#: ccdfunc.c:637 -msgid "Can't set fan speed" -msgstr "" - -#: ccdfunc.c:638 -#, c-format -msgid "Set fan speed to %d" -msgstr "" - -#: ccdfunc.c:643 -#, c-format -msgid "Camera model: %s" -msgstr "" - -#: ccdfunc.c:644 -#, c-format -msgid "Pixel size: %g x %g" -msgstr "" - #: ccdfunc.c:650 #, c-format +msgid "Found %d cameras, you point number %d" +msgstr "" + +#: ccdfunc.c:654 +msgid "Can't set active camera number" +msgstr "" + +#: ccdfunc.c:660 +msgid "Can't set fan speed" +msgstr "" + +#: ccdfunc.c:661 +#, c-format +msgid "Set fan speed to %d" +msgstr "" + +#: ccdfunc.c:666 +#, c-format +msgid "Camera model: %s" +msgstr "" + +#: ccdfunc.c:667 +#, c-format +msgid "Pixel size: %g x %g" +msgstr "" + +#: ccdfunc.c:673 +#, c-format msgid "Full array: %s" msgstr "" -#: ccdfunc.c:653 +#: ccdfunc.c:676 #, c-format msgid "Field of view: %s" msgstr "" -#: ccdfunc.c:656 +#: ccdfunc.c:679 #, c-format msgid "Can't set T to %g degC" msgstr "" -#: ccdfunc.c:663 +#: ccdfunc.c:686 #, c-format msgid "Shutter command: %s\n" msgstr "" -#: ccdfunc.c:665 +#: ccdfunc.c:688 #, c-format msgid "Can't run shutter command %s (unsupported?)" msgstr "" #. "Попытка сконфигурировать порт I/O как %d\n" -#: ccdfunc.c:669 +#: ccdfunc.c:692 #, c-format msgid "Try to configure I/O port as %d" msgstr "" -#: ccdfunc.c:671 +#: ccdfunc.c:694 msgid "Can't configure (unsupported?)" msgstr "" -#: ccdfunc.c:677 +#: ccdfunc.c:700 msgid "Can't get IOport state (unsupported?)" msgstr "" #. "Попытка записи %d в порт I/O\n" -#: ccdfunc.c:681 +#: ccdfunc.c:704 #, c-format msgid "Try to write %d to I/O port" msgstr "" -#: ccdfunc.c:683 +#: ccdfunc.c:706 msgid "Can't set IOport" msgstr "" -#: ccdfunc.c:690 +#: ccdfunc.c:713 #, c-format msgid "Set gain to %g" msgstr "" -#: ccdfunc.c:691 +#: ccdfunc.c:714 #, c-format msgid "Can't set gain to %g" msgstr "" -#: ccdfunc.c:696 +#: ccdfunc.c:719 #, c-format msgid "Set brightness to %g" msgstr "" -#: ccdfunc.c:697 +#: ccdfunc.c:720 #, c-format msgid "Can't set brightness to %g" msgstr "" -#: ccdfunc.c:705 server.c:223 +#: ccdfunc.c:728 server.c:223 #, c-format msgid "Can't set binning %dx%d" msgstr "" -#: ccdfunc.c:715 server.c:224 +#: ccdfunc.c:738 server.c:224 msgid "Can't set given geometry" msgstr "" -#: ccdfunc.c:719 +#: ccdfunc.c:742 #, c-format msgid "Can't set %d flushes" msgstr "" -#: ccdfunc.c:723 +#: ccdfunc.c:746 #, c-format msgid "Can't set exposure time to %f seconds" msgstr "" -#: ccdfunc.c:726 +#: ccdfunc.c:749 msgid "Can't change frame type" msgstr "" -#: ccdfunc.c:729 +#: ccdfunc.c:752 msgid "Can't set bit depth" msgstr "" -#: ccdfunc.c:731 +#: ccdfunc.c:754 msgid "Can't set readout speed" msgstr "" -#: ccdfunc.c:732 +#: ccdfunc.c:755 #, c-format msgid "Readout mode: %s" msgstr "" -#: ccdfunc.c:733 +#: ccdfunc.c:756 msgid "Only show statistics" msgstr "" #. GET binning should be AFTER setgeometry! -#: ccdfunc.c:735 +#: ccdfunc.c:758 msgid "Can't get current binning" msgstr "" -#: ccdfunc.c:748 +#: ccdfunc.c:772 msgid "Can't open OpenGL window, image preview will be inaccessible" msgstr "" #. Захват кадра %d\n -#: ccdfunc.c:756 +#: ccdfunc.c:780 #, c-format msgid "Capture frame %d" msgstr "" -#: ccdfunc.c:758 server.c:121 +#: ccdfunc.c:782 server.c:121 msgid "Can't start exposition" msgstr "" -#: ccdfunc.c:762 ccdfunc.c:784 ccdfunc.c:825 +#: ccdfunc.c:786 ccdfunc.c:808 ccdfunc.c:849 msgid "Can't capture image" msgstr "" -#: ccdfunc.c:765 +#: ccdfunc.c:789 msgid "Read grabbed image" msgstr "" -#: ccdfunc.c:768 ccdfunc.c:788 ccdfunc.c:829 +#: ccdfunc.c:792 ccdfunc.c:812 ccdfunc.c:853 msgid "Can't grab image" msgstr "" #. %d секунд до окончания паузы\n -#: ccdfunc.c:805 client.c:260 +#: ccdfunc.c:829 client.c:260 #, c-format msgid "%d seconds till pause ends\n" msgstr "" diff --git a/locale/ru/ru.po b/locale/ru/ru.po index f609139..b1f2dd0 100644 --- a/locale/ru/ru.po +++ b/locale/ru/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2022-04-19 14:59+0300\n" + "POT-Creation-Date: 2022-12-20 15:47+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,13 +16,13 @@ msgstr "Project-Id-Version: PACKAGE VERSION\n" "Content-Type: text/plain; charset=koi8-r\n" "Content-Transfer-Encoding: 8bit\n" -#: ccdfunc.c:570 +#: ccdfunc.c:593 #, c-format msgid "%.1f seconds till exposition ends" msgstr "%.1f " #. %d секунд до окончания паузы\n -#: ccdfunc.c:805 client.c:260 +#: ccdfunc.c:829 client.c:260 #, c-format msgid "%d seconds till pause ends\n" msgstr "%d \n" @@ -31,36 +31,36 @@ msgstr "%d msgid "Already initialized!" msgstr " !" -#: cmdlnopts.c:97 +#: cmdlnopts.c:98 msgid "CMOS brightness level" msgstr " CMOS" -#: cmdlnopts.c:96 +#: cmdlnopts.c:97 msgid "CMOS gain level" msgstr " Gain CMOS" -#: ccdfunc.c:584 +#: ccdfunc.c:607 msgid "Camera device not pointed" msgstr " " -#: ccdfunc.c:155 +#: ccdfunc.c:183 msgid "Camera device unknown" msgstr " " -#: ccdfunc.c:643 +#: ccdfunc.c:666 #, c-format msgid "Camera model: %s" msgstr " : %s" -#: ccdfunc.c:762 ccdfunc.c:784 ccdfunc.c:825 +#: ccdfunc.c:786 ccdfunc.c:808 ccdfunc.c:849 msgid "Can't capture image" msgstr " " -#: ccdfunc.c:726 +#: ccdfunc.c:749 msgid "Can't change frame type" msgstr " " -#: ccdfunc.c:671 +#: ccdfunc.c:694 msgid "Can't configure (unsupported?)" msgstr " ( ?)" @@ -84,32 +84,32 @@ msgstr " msgid "Can't find wheel in plugin %s: %s" msgstr " %s: %s" -#: ccdfunc.c:677 +#: ccdfunc.c:700 msgid "Can't get IOport state (unsupported?)" msgstr " I/O ( ?)" #. GET binning should be AFTER setgeometry! -#: ccdfunc.c:735 +#: ccdfunc.c:758 msgid "Can't get current binning" msgstr " " -#: ccdfunc.c:455 +#: ccdfunc.c:478 msgid "Can't get current focuser position" msgstr " " -#: ccdfunc.c:448 +#: ccdfunc.c:471 msgid "Can't get focuser limit positions" msgstr " " -#: ccdfunc.c:542 +#: ccdfunc.c:565 msgid "Can't get max wheel position" msgstr " " -#: ccdfunc.c:768 ccdfunc.c:788 ccdfunc.c:829 +#: ccdfunc.c:792 ccdfunc.c:812 ccdfunc.c:853 msgid "Can't grab image" msgstr " " -#: ccdfunc.c:473 +#: ccdfunc.c:496 msgid "Can't home focuser" msgstr " " @@ -121,109 +121,109 @@ msgstr " msgid "Can't make exposition" msgstr " " -#: ccdfunc.c:748 +#: ccdfunc.c:772 msgid "Can't open OpenGL window, image preview will be inaccessible" msgstr " OpenGL, " -#: ccdfunc.c:665 +#: ccdfunc.c:688 #, c-format msgid "Can't run shutter command %s (unsupported?)" msgstr " %s ( ?)" #. Не могу сохранить файл -#: ccdfunc.c:180 +#: ccdfunc.c:208 #, c-format msgid "Can't save file with prefix %s" msgstr " %s" -#: ccdfunc.c:719 +#: ccdfunc.c:742 #, c-format msgid "Can't set %d flushes" msgstr " %d " -#: ccdfunc.c:683 +#: ccdfunc.c:706 msgid "Can't set IOport" msgstr " I/O" -#: ccdfunc.c:656 +#: ccdfunc.c:679 #, c-format msgid "Can't set T to %g degC" msgstr " %g " -#: ccdfunc.c:631 +#: ccdfunc.c:654 msgid "Can't set active camera number" msgstr " " -#: ccdfunc.c:434 +#: ccdfunc.c:457 msgid "Can't set active focuser number" msgstr " " -#: ccdfunc.c:526 +#: ccdfunc.c:549 msgid "Can't set active wheel number" msgstr " " -#: ccdfunc.c:705 server.c:223 +#: ccdfunc.c:728 server.c:223 #, c-format msgid "Can't set binning %dx%d" msgstr " %dx%d" -#: ccdfunc.c:729 +#: ccdfunc.c:752 msgid "Can't set bit depth" msgstr " " -#: ccdfunc.c:697 +#: ccdfunc.c:720 #, c-format msgid "Can't set brightness to %g" msgstr " %g" -#: ccdfunc.c:723 +#: ccdfunc.c:746 #, c-format msgid "Can't set exposure time to %f seconds" msgstr " %f " -#: ccdfunc.c:637 +#: ccdfunc.c:660 msgid "Can't set fan speed" msgstr " " -#: ccdfunc.c:691 +#: ccdfunc.c:714 #, c-format msgid "Can't set gain to %g" msgstr " Gain %g" -#: ccdfunc.c:715 server.c:224 +#: ccdfunc.c:738 server.c:224 msgid "Can't set given geometry" msgstr " " -#: ccdfunc.c:475 +#: ccdfunc.c:498 #, c-format msgid "Can't set position %g" msgstr " %g" -#: ccdfunc.c:469 +#: ccdfunc.c:492 #, c-format msgid "Can't set position %g: out of limits [%g, %g]" msgstr " %g: [%g, %g]" -#: ccdfunc.c:731 +#: ccdfunc.c:754 msgid "Can't set readout speed" msgstr " " -#: ccdfunc.c:553 +#: ccdfunc.c:576 #, c-format msgid "Can't set wheel position %d" msgstr " %d" -#: ccdfunc.c:758 server.c:121 +#: ccdfunc.c:782 server.c:121 msgid "Can't start exposition" msgstr " " #. Захват кадра %d\n -#: ccdfunc.c:756 +#: ccdfunc.c:780 #, c-format msgid "Capture frame %d" msgstr " %d" -#: cmdlnopts.c:107 +#: cmdlnopts.c:108 msgid "Display image in OpenGL window" msgstr " OpenGL" @@ -232,40 +232,40 @@ msgstr " msgid "Equalization of histogram: %s" msgstr " : %s" -#: ccdfunc.c:343 +#: ccdfunc.c:366 msgid "Error saving file" msgstr " " -#: ccdfunc.c:653 +#: ccdfunc.c:676 #, c-format msgid "Field of view: %s" msgstr " : %s" -#: ccdfunc.c:334 +#: ccdfunc.c:357 #, c-format msgid "File saved as '%s'" msgstr " '%s'" -#: ccdfunc.c:391 +#: ccdfunc.c:414 msgid "Focuser device not pointed" msgstr " " -#: ccdfunc.c:627 +#: ccdfunc.c:650 #, c-format msgid "Found %d cameras, you point number %d" msgstr " %d , %d" -#: ccdfunc.c:430 +#: ccdfunc.c:453 #, c-format msgid "Found %d focusers, you point number %d" msgstr " %d , %d" -#: ccdfunc.c:522 +#: ccdfunc.c:545 #, c-format msgid "Found %d wheels, you point number %d" msgstr " %d , %d" -#: ccdfunc.c:650 +#: ccdfunc.c:673 #, c-format msgid "Full array: %s" msgstr " : %s" @@ -275,16 +275,16 @@ msgstr " msgid "Histogram conversion: %s" msgstr " : %s" -#: ccdfunc.c:383 +#: ccdfunc.c:406 #, c-format msgid "Image stat:\n" msgstr " : \n" -#: cmdlnopts.c:69 +#: cmdlnopts.c:70 msgid "N flushes before exposing (default: 1)" msgstr "N ( : 1)" -#: ccdfunc.c:161 +#: ccdfunc.c:189 msgid "Neither filename nor filename prefix pointed!" msgstr " , !" @@ -292,36 +292,36 @@ msgstr " msgid "No camera device" msgstr " " -#: ccdfunc.c:591 ccdfunc.c:592 +#: ccdfunc.c:614 ccdfunc.c:615 msgid "No cameras found" msgstr " " -#: ccdfunc.c:398 +#: ccdfunc.c:421 msgid "No focusers found" msgstr " " -#: ccdfunc.c:490 +#: ccdfunc.c:513 msgid "No wheels found" msgstr " " -#: ccdfunc.c:733 +#: ccdfunc.c:756 msgid "Only show statistics" msgstr " " -#: cmdlnopts.c:103 +#: cmdlnopts.c:104 msgid "PID file (default: " msgstr "PID- ( : " -#: ccdfunc.c:644 +#: ccdfunc.c:667 #, c-format msgid "Pixel size: %g x %g" msgstr " : %g x %g" -#: ccdfunc.c:765 +#: ccdfunc.c:789 msgid "Read grabbed image" msgstr " " -#: ccdfunc.c:732 +#: ccdfunc.c:755 #, c-format msgid "Readout mode: %s" msgstr " : %s" @@ -330,177 +330,177 @@ msgstr " msgid "Server timeout" msgstr " " -#: ccdfunc.c:696 +#: ccdfunc.c:719 #, c-format msgid "Set brightness to %g" msgstr " %g" -#: ccdfunc.c:638 +#: ccdfunc.c:661 #, c-format msgid "Set fan speed to %d" msgstr " %d" -#: ccdfunc.c:690 +#: ccdfunc.c:713 #, c-format msgid "Set gain to %g" msgstr " Gain %g" -#: ccdfunc.c:663 +#: ccdfunc.c:686 #, c-format msgid "Shutter command: %s\n" msgstr " : %s\n" #. "Попытка сконфигурировать порт I/O как %d\n" -#: ccdfunc.c:669 +#: ccdfunc.c:692 #, c-format msgid "Try to configure I/O port as %d" msgstr " I/O %d" #. "Попытка записи %d в порт I/O\n" -#: ccdfunc.c:681 +#: ccdfunc.c:704 #, c-format msgid "Try to write %d to I/O port" msgstr " %d I/O" -#: cmdlnopts.c:100 +#: cmdlnopts.c:101 msgid "UNIX socket name" msgstr " UNIX-" -#: ccdfunc.c:483 +#: ccdfunc.c:506 msgid "Wheel device not pointed" msgstr " " -#: ccdfunc.c:549 +#: ccdfunc.c:572 #, c-format msgid "Wheel position should be from 0 to %d" msgstr " 0 %d" -#: cmdlnopts.c:76 +#: cmdlnopts.c:77 msgid "absolute (not divided by binning!) frame X0 coordinate (-1 - all " "with overscan)" msgstr " ( !) X0 (-1 - " ")" -#: cmdlnopts.c:78 +#: cmdlnopts.c:79 msgid "absolute frame X1 coordinate (-1 - all with overscan)" msgstr " X1 (-1 - )" -#: cmdlnopts.c:77 +#: cmdlnopts.c:78 msgid "absolute frame Y0 coordinate (-1 - all with overscan)" msgstr " Y0 (-1 - )" -#: cmdlnopts.c:79 +#: cmdlnopts.c:80 msgid "absolute frame Y1 coordinate (-1 - all with overscan)" msgstr " Y1 (-1 - )" -#: cmdlnopts.c:65 +#: cmdlnopts.c:66 msgid "add records to header from given file[s]" msgstr " FITS- " -#: cmdlnopts.c:47 +#: cmdlnopts.c:48 msgid "camera device number (if many: 0, 1, 2 etc)" msgstr " " -#: cmdlnopts.c:43 +#: cmdlnopts.c:44 msgid "camera device plugin (e.g. devfli.so)" msgstr " (, devfli.so)" -#: cmdlnopts.c:75 +#: cmdlnopts.c:76 msgid "cancel current exposition" msgstr " " -#: cmdlnopts.c:82 +#: cmdlnopts.c:83 msgid "close shutter" msgstr " " -#: cmdlnopts.c:42 +#: cmdlnopts.c:43 msgid "common device plugin (e.g devfli.so)" msgstr " (, devfli.so)" -#: cmdlnopts.c:89 +#: cmdlnopts.c:90 msgid "configure I/O port pins to given value (decimal number, pin1 is LSB, " "1 == output, 0 == input)" msgstr " I/O ( , " "pin1 - , 1 - , 0 - )" -#: cmdlnopts.c:55 +#: cmdlnopts.c:56 msgid "fast readout mode" msgstr " " -#: cmdlnopts.c:48 +#: cmdlnopts.c:49 msgid "filter wheel device number (if many: 0, 1, 2 etc)" msgstr " " -#: cmdlnopts.c:49 +#: cmdlnopts.c:50 msgid "focuser device number (if many: 0, 1, 2 etc)" msgstr " " -#: cmdlnopts.c:44 +#: cmdlnopts.c:45 msgid "focuser device plugin (e.g. devzwo.so)" msgstr " (, devzwo.so)" -#: cmdlnopts.c:85 +#: cmdlnopts.c:86 msgid "get value of I/O port pins" msgstr " I/O" -#: cmdlnopts.c:70 +#: cmdlnopts.c:71 msgid "horizontal binning to N pixels" msgstr " N " -#: cmdlnopts.c:61 +#: cmdlnopts.c:62 msgid "instrument name" msgstr " " -#: cmdlnopts.c:46 +#: cmdlnopts.c:47 msgid "list connected devices" msgstr " " -#: cmdlnopts.c:101 +#: cmdlnopts.c:102 msgid "local INET socket port" msgstr " " -#: cmdlnopts.c:99 +#: cmdlnopts.c:100 msgid "logging file name (if run as server)" msgstr " ( )" -#: cmdlnopts.c:73 +#: cmdlnopts.c:74 msgid "make pause for N seconds between expositions" msgstr " N " -#: cmdlnopts.c:72 +#: cmdlnopts.c:73 msgid "make series of N frames" msgstr " N " -#: cmdlnopts.c:91 +#: cmdlnopts.c:92 msgid "move focuser to absolute position, mm" msgstr " , " -#: cmdlnopts.c:92 +#: cmdlnopts.c:93 msgid "move focuser to relative position, mm (only for standalone)" msgstr " , ( /" ")" -#: cmdlnopts.c:86 +#: cmdlnopts.c:87 msgid "move stepper motor asynchronous" msgstr " " -#: cmdlnopts.c:53 +#: cmdlnopts.c:54 msgid "not open shutter, when exposing (\"dark frames\")" msgstr " (\"\")" -#: cmdlnopts.c:62 +#: cmdlnopts.c:63 msgid "object name" msgstr " " -#: cmdlnopts.c:60 +#: cmdlnopts.c:61 msgid "object type (neon, object, flat etc)" msgstr " (neon, object, flat ..)" -#: cmdlnopts.c:63 +#: cmdlnopts.c:64 msgid "observers' names" msgstr " " -#: cmdlnopts.c:64 +#: cmdlnopts.c:65 msgid "observing program name" msgstr " " @@ -512,78 +512,78 @@ msgstr " msgid "on" msgstr "" -#: cmdlnopts.c:81 +#: cmdlnopts.c:82 msgid "open shutter" msgstr " " -#: cmdlnopts.c:66 +#: cmdlnopts.c:67 msgid "output file name" msgstr " " -#: cmdlnopts.c:59 +#: cmdlnopts.c:60 msgid "program author" msgstr " " -#: cmdlnopts.c:104 +#: cmdlnopts.c:105 msgid "restart image server" msgstr " " -#: cmdlnopts.c:51 +#: cmdlnopts.c:52 msgid "rewrite output file if exists" msgstr " " -#: cmdlnopts.c:102 +#: cmdlnopts.c:103 msgid "run as client" msgstr " " -#: cmdlnopts.c:84 +#: cmdlnopts.c:85 msgid "run exposition on HIGH @ pin5 I/O port" msgstr "" -#: cmdlnopts.c:83 +#: cmdlnopts.c:84 msgid "run exposition on LOW @ pin5 I/O port" msgstr "" -#: cmdlnopts.c:54 +#: cmdlnopts.c:55 msgid "run in 8-bit mode" msgstr "8- " -#: cmdlnopts.c:56 +#: cmdlnopts.c:57 msgid "set CCD temperature to given value (degr C)" msgstr " ()" -#: cmdlnopts.c:88 +#: cmdlnopts.c:89 msgid "set I/O port pins to given value (decimal number, pin1 is LSB)" msgstr " I/O ( , pin1 - )" -#: cmdlnopts.c:74 +#: cmdlnopts.c:75 msgid "set exposure time to given value (seconds!)" msgstr " (!)" -#: cmdlnopts.c:57 +#: cmdlnopts.c:58 msgid "set fan speed (0 - off, 1 - low, 2 - high)" msgstr " (0 - , 1 - , 2 - )" -#: cmdlnopts.c:94 +#: cmdlnopts.c:95 msgid "set wheel position" msgstr " " -#: cmdlnopts.c:50 +#: cmdlnopts.c:51 msgid "show this help" msgstr " " -#: cmdlnopts.c:52 +#: cmdlnopts.c:53 msgid "verbose level (-V - messages, -VV - debug, -VVV - all shit)" msgstr " (-V - , -VV - , -VVV - )" -#: cmdlnopts.c:71 +#: cmdlnopts.c:72 msgid "vertical binning to N pixels" msgstr " N " -#: cmdlnopts.c:67 +#: cmdlnopts.c:68 msgid "wait while exposition ends" msgstr ", " -#: cmdlnopts.c:45 +#: cmdlnopts.c:46 msgid "wheel device plugin (e.g. devdummy.so)" msgstr " (, devdummy.so)" diff --git a/main.c b/main.c index aafafbd..8f47a22 100644 --- a/main.c +++ b/main.c @@ -34,7 +34,6 @@ #ifdef IMAGEVIEW #include "imageview.h" #endif -#include "omp.h" #include "socket.h" static int isserver = FALSE;