summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Vogelgesang <matthias.vogelgesang@gmail.com>2012-05-29 12:34:27 +0200
committerMatthias Vogelgesang <matthias.vogelgesang@gmail.com>2012-05-29 12:34:27 +0200
commitbfaf9c9bf082974876be0562792b80706f916701 (patch)
tree233af9ba0aa4d23548568a4f05dabaff719749e3
parent14961a34d7eac8557c3ad982c3d41ce5fbb5470c (diff)
downloaduca-bfaf9c9bf082974876be0562792b80706f916701.tar.gz
uca-bfaf9c9bf082974876be0562792b80706f916701.tar.bz2
uca-bfaf9c9bf082974876be0562792b80706f916701.tar.xz
uca-bfaf9c9bf082974876be0562792b80706f916701.zip
Fix exposure and delay time
-rw-r--r--src/cameras/uca-pco-camera.c24
-rw-r--r--test/grab.c5
2 files changed, 18 insertions, 11 deletions
diff --git a/src/cameras/uca-pco-camera.c b/src/cameras/uca-pco-camera.c
index 7444744..c168c01 100644
--- a/src/cameras/uca-pco-camera.c
+++ b/src/cameras/uca-pco-camera.c
@@ -289,15 +289,15 @@ static gdouble convert_timebase(guint16 timebase)
{
switch (timebase) {
case TIMEBASE_NS:
- return 10e-9;
+ return 1e-9;
case TIMEBASE_US:
- return 10e-6;
+ return 1e-6;
case TIMEBASE_MS:
- return 10e-3;
+ return 1e-3;
default:
g_warning("Unknown timebase");
}
- return 10e-3;
+ return 1e-3;
}
static void read_timebase(UcaPcoCameraPrivate *priv)
@@ -307,11 +307,11 @@ static void read_timebase(UcaPcoCameraPrivate *priv)
static gdouble get_suitable_timebase(gdouble time)
{
- if (time * 10e3 >= 1.0)
+ if (time * 1e3 >= 1.0)
return TIMEBASE_MS;
- if (time * 10e6 >= 1.0)
+ if (time * 1e6 >= 1.0)
return TIMEBASE_US;
- if (time * 10e9 >= 1.0)
+ if (time * 1e9 >= 1.0)
return TIMEBASE_NS;
return TIMEBASE_INVALID;
}
@@ -486,6 +486,8 @@ static void uca_pco_camera_trigger(UcaCamera *camera, GError **error)
static void uca_pco_camera_grab(UcaCamera *camera, gpointer *data, GError **error)
{
+ static const gint MAX_TIMEOUT = G_MAXINT;
+
g_return_if_fail(UCA_IS_PCO_CAMERA(camera));
UcaPcoCameraPrivate *priv = UCA_PCO_CAMERA_GET_PRIVATE(camera);
@@ -508,7 +510,7 @@ static void uca_pco_camera_grab(UcaCamera *camera, gpointer *data, GError **erro
}
pco_request_image(priv->pco);
- priv->last_frame = Fg_getLastPicNumberBlockingEx(priv->fg, priv->last_frame+1, priv->fg_port, 5, priv->fg_mem);
+ priv->last_frame = Fg_getLastPicNumberBlockingEx(priv->fg, priv->last_frame+1, priv->fg_port, MAX_TIMEOUT, priv->fg_mem);
if (priv->last_frame <= 0) {
guint err = FG_OK + 1;
@@ -557,12 +559,14 @@ static void uca_pco_camera_set_property(GObject *object, guint property_id, cons
else {
if (suitable_timebase != priv->exposure_timebase) {
priv->exposure_timebase = suitable_timebase;
- pco_set_timebase(priv->pco, priv->delay_timebase, suitable_timebase);
+ if (pco_set_timebase(priv->pco, priv->delay_timebase, suitable_timebase) != PCO_NOERROR)
+ g_warning("Could not set timebase via libpco");
}
gdouble timebase = convert_timebase(suitable_timebase);
guint32 timesteps = time / timebase;
- pco_set_exposure_time(priv->pco, timesteps);
+ if (pco_set_exposure_time(priv->pco, timesteps) != PCO_NOERROR)
+ g_warning("Could not set exposure time via libpco");
}
}
break;
diff --git a/test/grab.c b/test/grab.c
index 12290de..debdb6e 100644
--- a/test/grab.c
+++ b/test/grab.c
@@ -54,9 +54,12 @@ int main(int argc, char *argv[])
"sensor-bitdepth", &bits,
NULL);
+ g_object_set(G_OBJECT(camera),
+ "exposure-time", 0.1,
+ NULL);
+
const int pixel_size = bits == 8 ? 1 : 2;
gpointer buffer = g_malloc0(width * height * pixel_size);
-
gchar filename[FILENAME_MAX];
for (int i = 0; i < 2; i++) {