bool SVSGigECard::RefreshData() { if( !Camera_isCameraFeature(m_hCamera, CAMERA_FEATURE_AOI) ) { Camera_getImagerWidth(m_hCamera, reinterpret_cast<int*>(&m_roi.width)); Camera_getImagerHeight(m_hCamera, reinterpret_cast<int*>(&m_roi.height)); } else { Camera_getSizeX(m_hCamera, reinterpret_cast<int*>(&m_roi.width)); Camera_getSizeY(m_hCamera, reinterpret_cast<int*>(&m_roi.height)); } if (SVGigE_SUCCESS != Camera_getPitch(m_hCamera, reinterpret_cast<int*>(&m_roi.bytesPerRow))) { return false; } m_roi.bytesPerPixel = 1; m_roi.bitsPerPixel = 8; return true; }
static int svs_core_Camera_init(svs_core_Camera *self, PyObject *args, PyObject *kwds) { static char *kwlist[] = { "ip", "source_ip", "buffer_count", "packet_size", "queue_length", NULL }; const char *ip = NULL; const char *source_ip = NULL; unsigned int buffer_count = 10; unsigned int packet_size = 9000; uint32_t ip_num, source_ip_num; char *manufacturer, *model; int ret; self->main_thread = PyGILState_GetThisThreadState(); self->ready = NOT_READY; TAILQ_INIT(&self->images); self->images_length = 0; self->images_max = 50; /* * This means the definition is: * def __init__(self, ip, source_ip, buffer_count=10, packet_size=9000, * queue_length=50): */ if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss|III", kwlist, &ip, &source_ip, &buffer_count, &packet_size, &self->images_max)) { return -1; } ip_num = ip_string_to_int(ip); source_ip_num = ip_string_to_int(source_ip); ret = openCamera(&self->handle, ip_num, source_ip_num, HEARTBEAT_TIMEOUT); if (ret != SVGigE_SUCCESS) { raise_general_error(ret); return -1; } self->ready = CONNECTED; manufacturer = strdup(Camera_getManufacturerName(self->handle)); if (!manufacturer) { PyErr_SetString(PyExc_MemoryError, "Unable to allocate name"); return -1; } model = strdup(Camera_getModelName(self->handle)); if (!model) { free(manufacturer); PyErr_SetString(PyExc_MemoryError, "Unable to allocate name"); return -1; } self->name = PyBytes_FromFormat("%s %s", manufacturer, model); free(manufacturer); free(model); if (!self->name) { return -1; } self->ready = NAME_ALLOCATED; ret = Camera_getTimestampTickFrequency(self->handle, &self->tick_frequency); if (ret != SVGigE_SUCCESS) { raise_general_error(ret); return -1; } ret = Camera_getImagerWidth(self->handle, &self->width); if (ret != SVGigE_SUCCESS) { raise_general_error(ret); return -1; } ret = Camera_getImagerHeight(self->handle, &self->height); if (ret != SVGigE_SUCCESS) { raise_general_error(ret); return -1; } /* 12-bit pixel depth */ self->depth = 12; ret = Camera_setPixelDepth(self->handle, SVGIGE_PIXEL_DEPTH_12); if (ret != SVGigE_SUCCESS) { raise_general_error(ret); return -1; } /* Image buffer size in bytes */ ret = Camera_getBufferSize(self->handle, &self->buffer_size); if (ret != SVGigE_SUCCESS) { raise_general_error(ret); return -1; } /* Open stream */ ret = addStream(self->handle, &self->stream, &self->stream_ip, &self->stream_port, self->buffer_size, buffer_count, packet_size, PACKET_RESEND_TIMEOUT, svs_core_Camera_stream_callback, self); if (ret != SVGigE_SUCCESS) { raise_general_error(ret); return -1; } ret = enableStream(self->stream, 1); if (ret != SVGigE_SUCCESS) { raise_general_error(ret); return -1; } self->ready = READY; return 0; }