Aller au contenu

compiler en C avec Indigo


turboIII

Messages recommandés

Bonjour

 

une question très basique 

je voudrai faire un essai de compilation de l'exemple client  du site

https://github.com/indigo-astronomy/indigo/blob/master/indigo_docs/CLIENT_DEVELOPMENT_BASICS.md

 

savez-vous le nom de la bibliothèque à appeler pour compiler avec GCC?

j'ai testé à tout hasard  libindigo

Mais j'ai eu une erreur

 

Package libindigo was not found in the pkg-config search path.
Perhaps you should add the directory containing `libindigo.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libindigo' found

 Avez vous fait la démarche déjà

 

je trouve que la doc incite à tester cela semble très interessant

Lien vers le commentaire
Partager sur d’autres sites

Salut

je ne connais pas GCC mais comme je fais de la programmation arduino en langage C  je sais comment tu dois appeler les bibliothèques : comme c'est écrit et pas autrement

les bibliothèques que tu dois appeler c'est celles-ci, le code que tu as sur ton lien est bon

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <indigo/indigo_bus.h>
#include <indigo/indigo_client.h>

est-ce que tu as bien ajouté les librairies ???

cdt

Modifié par manu69
Lien vers le commentaire
Partager sur d’autres sites

Bonjour

 

Merci de ces deux réponses 

Je vais pouvoir continuer mes tests . J’ai bien les commandes d’entêtes mais je n’avais pas installé libindigo-dev. 

 

Et pour la commande de compilation on appelle bien la librairie  par indigo ou libindigo 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

un retour sur  mon chantier pour tester Indigo. Après  avoir installé la bibliothèque de développement  libindigo-dev comme suggéré par lock042

La commande de compilation

 

gcc -std=c11 -Wall -fmax-errors=10 -Wextra indigo_ex_03.c -o indigo_ex_03 /usr/lib/libindigo.so `pkg-config --cflags --libs `

 

 

le code du fichier  indigo_ex_03.c que j'ai repris tel quel ou presque  pour regarder comment se comporte le simulateur de CCD

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <indigo/indigo_bus.h>
#include <indigo/indigo_client.h>

/*  indigo_ex_03.c
 * Compile with:
 *  gcc -std=c11 -Wall -fmax-errors=10 -Wextra indigo_ex_03.c -o indigo_ex_03 /usr/lib/libindigo.so `pkg-config --cflags --libs `
 */
#define CCD_SIMULATOR "CCD Imager Simulator @ indigosky"

static bool connected = false;
static int count = 5;

static indigo_result client_attach(indigo_client *client) 
{
	indigo_log("attached to INDIGO bus...");
	indigo_enumerate_properties(client, &INDIGO_ALL_PROPERTIES);
	return INDIGO_OK;
}

static indigo_result client_define_property(indigo_client *client,
			indigo_device *device,
			indigo_property *property,
			const char *message) 
{
	if (strcmp(property->device, CCD_SIMULATOR))
		return INDIGO_OK;
	if (!strcmp(property->name, CONNECTION_PROPERTY_NAME)) {
		if (indigo_get_switch(property, CONNECTION_CONNECTED_ITEM_NAME)) {
			connected = true;
			indigo_log("already connected...");
			static const char * items[] = { CCD_EXPOSURE_ITEM_NAME };
			static double values[] = { 3.0 };
			indigo_change_number_property(client, CCD_SIMULATOR, CCD_EXPOSURE_PROPERTY_NAME, 1, items, values);
		} else {
			indigo_device_connect(client, CCD_SIMULATOR);
			return INDIGO_OK;
		}
	}
	if (!strcmp(property->name, CCD_IMAGE_PROPERTY_NAME)) {
		if (device->version >= INDIGO_VERSION_2_0)
			indigo_enable_blob(client, property, INDIGO_ENABLE_BLOB_URL);
		else
			indigo_enable_blob(client, property, INDIGO_ENABLE_BLOB_ALSO);
	}
	if (!strcmp(property->name, CCD_IMAGE_FORMAT_PROPERTY_NAME)) {
		static const char * items[] = { CCD_IMAGE_FORMAT_FITS_ITEM_NAME };
		static bool values[] = { true };
		indigo_change_switch_property(client, CCD_SIMULATOR, CCD_IMAGE_FORMAT_PROPERTY_NAME, 1, items, values);
	}
	return INDIGO_OK;
	(void)message;
}

static indigo_result client_update_property(
	indigo_client *client,
	indigo_device *device,
	indigo_property *property,
	const char *message) 
{
	if (strcmp(property->device, CCD_SIMULATOR))
		return INDIGO_OK;
	static const char * items[] = { CCD_EXPOSURE_ITEM_NAME };
	static double values[] = { 3.0 };
	if (!strcmp(property->name, CONNECTION_PROPERTY_NAME) && property->state == INDIGO_OK_STATE) {
		if (indigo_get_switch(property, CONNECTION_CONNECTED_ITEM_NAME)) {
			if (!connected) {
				connected = true;
				indigo_log("connected...");
				indigo_change_number_property(client, CCD_SIMULATOR, CCD_EXPOSURE_PROPERTY_NAME, 1, items, values);
			}
		} else {
			if (connected) {
				indigo_log("disconnected...");
				connected = false;
			}
		}
		return INDIGO_OK;
	}
	if (!strcmp(property->name, CCD_IMAGE_PROPERTY_NAME) && property->state == INDIGO_OK_STATE) {
		/* URL blob transfer is available only in client - server setup.
		   This will never be called in case of a client loading a driver. */
		if (*property->items[0].blob.url && indigo_populate_http_blob_item(&property->items[0]))
			indigo_log("image URL received (%s, %d bytes)...", property->items[0].blob.url, property->items[0].blob.size);

		if (property->items[0].blob.value) {
			char name[32];
			sprintf(name, "img_%02d.fits", count);
			FILE *f = fopen(name, "wb");
			fwrite(property->items[0].blob.value, property->items[0].blob.size, 1, f);
			fclose(f);
			indigo_log("image saved to %s...", name);
			/* In case we have URL BLOB transfer we need to release the blob ourselves */
			if (*property->items[0].blob.url) {
				free(property->items[0].blob.value);
				property->items[0].blob.value = NULL;
			}
		}
	}
	if (!strcmp(property->name, CCD_EXPOSURE_PROPERTY_NAME)) {
		if (property->state == INDIGO_BUSY_STATE) {
			indigo_log("exposure %gs...", property->items[0].number.value);
		} else if (property->state == INDIGO_OK_STATE) {
			indigo_log("exposure done...");
			if (--count > 0) {
				indigo_change_number_property(
					client, CCD_SIMULATOR,
					CCD_EXPOSURE_PROPERTY_NAME,
					1,
					items,
					values);
			} else {
				indigo_device_disconnect(client, CCD_SIMULATOR);
			}
		}
		return INDIGO_OK;
	}
	return INDIGO_OK;
	(void)device;
	(void)message;
}

static indigo_result client_detach(indigo_client *client) {
	indigo_log("detached from INDIGO bus...");
	return INDIGO_OK;
	(void)client;
}

static indigo_client client = {
	"Remote server client N°1", false, NULL, INDIGO_OK, INDIGO_VERSION_CURRENT, NULL,
	client_attach,
	client_define_property,
	client_update_property,
	NULL,
	NULL,
	client_detach
};

int main(int argc, const char * argv[]) {
	indigo_main_argc = argc;
	indigo_main_argv = argv;
#if defined(INDIGO_WINDOWS)
	freopen("indigo.log", "w", stderr);
#endif

	indigo_set_log_level(INDIGO_LOG_INFO);
	indigo_start();

	indigo_server_entry *server;
	indigo_attach_client(&client);
	indigo_connect_server("indigosky", "indigosky.local", 7624, &server); // Check correct host name in 2nd arg!!!
	while (count > 0) {
		  indigo_usleep(ONE_SECOND_DELAY);
	}
	indigo_disconnect_server(server);
	indigo_detach_client(&client);
	indigo_stop();
	return 0;
}

 

A l'exécution je ne comprends pas tout

D'après le log ci-dessous, je comprends  :

1- le serveur est bien lancé

2- puisque le client est attaché au bus logiciel

3- le nom du serveur distant n'est pas résolu ou trouvé

 

Comme je suis débtant avez-vous une idée du problème

 

18:01:18.413783 indigo_ex_03: attached to INDIGO bus...
18:01:18.414131 indigo_ex_03: Server indigosky.local:7624 thread started
18:01:23.417501 indigo_ex_03: Can't resolve host name indigosky.local (Name or service not known)
18:01:33.419584 indigo_ex_03: Can't resolve host name indigosky.local (Name or service not known)
18:01:43.421684 indigo_ex_03: Can't resolve host name indigosky.local (Name or service not known)
18:01:53.424990 indigo_ex_03: Can't resolve host name indigosky.local (Name or service not known)
18:02:03.426499 indigo_ex_03: Can't resolve host name indigosky.local (Name or service not known)
18:02:13.429782 indigo_ex_03: Can't resolve host name indigosky.local (Name or service not known)

 

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation !

Vous pouvez répondre maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous pour poster avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.