Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Socket - Base de données - dk51

siskozed, le jeudi 14 février 2008 à 12:07:23
Bonjour,

Je réalise un programme qui gère une exploitation maraichaire. Nous sommes 4 étudiants sur le projet et en gros, nous devons gérer des moteurs en fonction de données climatiques acquisent par une station météo et de différents capteurs (température, hygrométrie etc.)

Le programme que je dois réaliser doit donc communiquer avec la station météo et avec le programme principal, l'ihm. Il sera donc sur un module dk51 (sc12-sc13), il tournera en boucle et récuperera les données météo toutes les 35sec.

La tâche sur laquelle je travaille en ce moment est sur la mise à disposition des mesures. Je dois donc faire le programme qui récupert ces données météorologiques, les envoyer au programme pour avoir les informations dans l'IHM. Je dois ensuite les enregistrer dans une base de données dans le but d'éditer des statistiques de la météo.

Alors voilà, je pense partir sur de la programmation par socket en c/c++.

J'ai plusieurs zones de flou : d'abord sur la programmation socket
puis la communication entre programme en c/c++ et base de données

Si vous savez le faire, ce serait très gentil de me filer quelques petits trucs.
MERCI D'AVANCE.
Configuration: Windows XP
VISUAL C++, ECLIPSE, BORLAND C++
DK51 (CARTE SC13) beck
Base de données MYSQL (à priori)
Répondre à siskozed  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
siskozed, le mardi 4 mars 2008 à 08:25:31
up
Répondre à siskozed

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
siskozed, le mardi 11 mars 2008 à 10:19:48
up !
Répondre à siskozed

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
siskozed, le mardi 8 avril 2008 à 11:20:59
Salut, j'ai réussi à récupérer et analyser les trames qui arrivent. Voici le code. Si ca interesse quelqu'un, vous pouvez me joindre sur mon mail leny@frid.fr

/////////////////////////////////////////////////////////// programme développé sous borland pour carte SC12 ou SC13 avec module DK51
//////////////////////////////////////////////FICHIER PRINCIPAL ///////////////// METEO.CPP

//***** APPLI DK50 AUTHOR : Leny FRID ; DATE : 03/08 ***********

#include "FOSSIL.H"
#include "CLIB.H"
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "METEO.H"

int main()
{
int retStatu1;
int i = 0;
int j = 0;
int a = 0;
unsigned char dummy;
unsigned char meteobuffer[16];
char* grandeur ;
char* signe;

// init fossil --------------------
if( fossil_init( 0 ) != 0x1954 ) // code drivers fossil
{ // il faut le mettre avant le
printf("\r\nInit fossil ERREUR\r\n"); // printf "appli dk50 projet 2008"
}
sleep(1);
//initialisation liaison dk51 - station
fossil_set_flowcontrol( 0, 1 );

printf("\r\n-- PRIMSOL CLIMAT - L.BERNARD - 2008 --\r\n");
printf("\r\n- -\r\n");

// init baudrate ------------------------------------

fossil_setbaud(0,9600, FOSSIL_PARITY_NO, 8, 1);
pfe_enable_pio (10,5); // initialise pio10 en sortie au niveau bas
pfe_enable_pio (9,1); // initialise pio9 en entrée pour qu'il soit capable de lire avant d'émettre


sleep(1);


// purge des buffers entrée et sortie
fossil_purge_output( 0 );
fossil_purge_input( 0 );

retStatu1 = fossil_status_request ( 0 );

if ((retStatu1 && 0x40) == 1 ) // test du bit 6 Buffer empty
{
printf("\rLe buffer est vide\n") ;
}
else
{
printf("\rProbleme, le buffer devrait etre vide\n");
}

// reception et analyse de la trame-----------------------------------------

do
{
i = 0;
dummy = fossil_getbyte_wait ( 0 ); // le getbyte récupere les octets
//envoyés par liaison RS232
meteobuffer[i] = dummy;

if(meteobuffer[0]==0xff) // ON TESTE SI ON A RECU FF 1 FOIS
{
printf( "\n<%2x> ", meteobuffer[i] ); // On affiche l'octet recu
i++;
dummy = fossil_getbyte_wait ( 0 );
meteobuffer[i] = dummy;
printf( "<%2x> ", meteobuffer[i] ); // On affiche l'octet recu

if(meteobuffer[1]==0xff) // ON TESTE SI ON A RECU FF 2 FOIS
{//si on a recu <ff> <ff>, on analyse le troisieme octet pour définir le type de mesure

i++;
dummy = fossil_getbyte_wait ( 0 );
meteobuffer[i] = dummy;

printf( "<%2x> ", meteobuffer[i] ); // On affiche l'octet recu

switch (meteobuffer[2]) // en fonction de meteobuffer[2]
{
/////////////////////// VENT ///////////////////////////
case 0:
// on en deduit que c'est le vent
grandeur = "C'est le vent";
j = 10;

// boucle pour récupérer les mesures du vent
do
{
i++;
dummy = fossil_getbyte_wait ( 0 );
meteobuffer[i] = dummy;
printf( "<%2x> ", meteobuffer[i] ); // On affiche l'octet recu
}while (i < j);
printf( "\n Grandeur mesuree : %s\n\n", grandeur);
//////////////////////// Rafales et vitesse moyenne ////////
capteur_station.vrafvent = ((meteobuffer[5]&0xf0)>>4)+(meteobuffer[6]&0x0f)*10+((meteobuffer[6]&0xf0)>>4)*100;
capteur_station.vmoyvent = (meteobuffer[7]&0x0f)+( (meteobuffer[7]&0xf0)>>4)+(meteobuffer[8]&0x0f)*10;
/////////////// Direction du vent exprimee en ° //////////////
capteur_station.dvent = (meteobuffer[4]&0x0f)+((meteobuffer[4]&0xf0)>>4)*10
+(meteobuffer[5]&0x0f)*100;

printf("Vitesse moyenne du vent : %i\nVitesse des rafales : %i\nDirection du vent : %i\n",capteur_station.vmoyvent, capteur_station.vrafvent, capteur_station.dvent);

break;

/////////////////////// PLUIE ///////////////////////////
case 1:
j = 15;
// on en deduit que c'est la pluie
grandeur = "C'est la pluie";

// boucle pour récupérer les mesures de la pluie
do
{
i++;
dummy = fossil_getbyte_wait ( 0 );
meteobuffer[i] = dummy;
printf( "<%2x> ", meteobuffer[i] ); // On affiche l'octet recu
}while (i < j);
printf( "\n Grandeur mesuree : %s\n\n", grandeur);

//////////////////////// pluviometrie en mm/h ///////////////
capteur_station.pluv = (meteobuffer[4]&0x0f)+((meteobuffer[4]&0xf0)>>4)*10+(meteobuffer[5]&0x0f)*100;
printf("Pluviometrie : %i mm/h\n",capteur_station.pluv);

break;

/////////////////////// THERMO, HYGRO ///////////////////////
case 3:
j =7;
// on en deduit que c'est la temperature et l'hygrometrie
grandeur = " temperature et de l'hygrometrie";

// boucle pour récupérer les mesures
do
{
i++;
dummy = fossil_getbyte_wait ( 0 );
meteobuffer[i] = dummy;
printf( "<%2x> ", meteobuffer[i] ); // On affiche l'octet recu
}while (i < j);
printf( "\n On a la mesure de la%s\n\n", grandeur);

capteur_station.signe =(meteobuffer[5]&0x0f)>>7;
if (capteur_station.signe==0)
{
signe = "+";
}
else
{
signe = "-";
}
capteur_station.temp =((meteobuffer[4]&0xf0)>>4)+(meteobuffer[5]&0x0f)*10+((meteobuffer[5]&0x30)>>4)*100;
capteur_station.temp2 =(meteobuffer[4]&0x0f);
printf("Temperature : %s%i.%i °C\n",signe,capteur_station.temp,capteur_station.temp2);

capteur_station.hygr =(meteobuffer[6]&0x0f)+((meteobuffer[6]&0xf0)>>4)*10;
printf("Hygrometrie : %i %\n",capteur_station.hygr);

break;

default:
// on en deduit que c'est une grandeur que l'on ne traite pas
j = 0;
grandeur = "grandeur non geree, trame suivante";
printf( "\n Grandeur mesuree : %s\n\n", grandeur);
break;
}; // fin switch case
}// fin if recup ff une deuxieme fois
} // fin if recup ff une premiere fois
} // fin do-while general
while(a==0);

}
/////////////////////////////////////////////////////////////////////////////////////INCLUDE FILE METEO.H

//*****************************************************************************/
// Programme primsol climat, par Leny FRID, Avril 2008
//*****************************************************************************/
#ifndef _METEO_H_
#define _METEO_H_
/*****************************************************************************/
/*****************************************************************************/
/*
* definitions Structure
*/
/*****************************************************************************/
struct capteurs_station_tag
{
int vmoyvent; // vitesse des rafales du vent
int vrafvent; // vitesse moyenne du vent
int dvent; // direction du vent exprimee en °C
int temp; // temperature
int temp2; // temperature
int signe; // signe temperature
int hygr; // hygrometrie
int pluv; // pluviometrie
}capteur_station ;

#endif /* __METEO_H__ */

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Ne pas oublier de bien parametrer le projet.

Plateform = "dos (standard)",
"no exceptions" pour les librairies,
cocher "class librairy" dans frameworks,
"none" pour match support.

Puis dans les Options --> project, il faut sélectionner un processeur 80186, nécessaire pour l'R-TOS du dk51
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Ne pas oublier aussi d'inclure le fichier CLIB2001.lib qui inclut direct tous les fichiers nécessaires (fossil.h, fossil.cpp, api etc...)

Pour in imprim-écran allez ici :

http://www.cppfrance.com/infomsg_LIAISON-RS232-AVEC-DK50_1087404.aspx

Je me concentre maintenant sur la communication socket... si quelqu'un gère bien là-dessus, je veux bien de l'aide... Je souhaiterais envoyer mes données à mon programme principal programmé en visual c++ sous windows donc... par TCP/IP

Répondre à siskozed

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
siskozed, le mardi 22 avril 2008 à 09:52:51
quelqu'un pourrait me filer de l'aide sur les sockets ??

J'ai besoin de faire un client sur windows en visual C++ et un serveur sur une carte avec systeme d'exploitation 16bits 80186 (avec borland quoi)... si vous avez des billes là-dedans ca m'aiderait.

Merci
Répondre à siskozed

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Legora93, le mercredi 28 mai 2008 à 18:52:31
Salut, si tu veux je peux te passer mon SocketClient.h et .cpp.
J'utilise un DK40.

Je te passe mon msn : leyougo_3@hotmail.com
Répondre à Legora93

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 siskozed, le mercredi 28 mai 2008 à 23:54:31
merci beaucoup, je veux bienle code de ton serveur plutôt car j'ai réussi quelques trucs quand même mais il me reste un problème. Mon programme serveur sur la carte BECK au bout de 57 connexions du client n'est plus capables de recevoir de connexions socket... C'est contraignant, je ne sais pas pour quelle raison... si vous avez une piste, je suis à l'écoute (je mettrais mon code demain matin, 9h30).

Merci

Jesus a dit : Avant je croyais, maintenant je suis fixé...
Répondre à siskozed
[PHP/MySQL]Interrogation d'une base de donnée (Résolu) Salut, Je souhaite créer un petit site où je référence tous mes DVD avec un petit résumé. Pour cela, j'ai créé une page web pour enregistrer mes nouveaux DVD dans une base données et jusque là tout va bien. Mais maintenant, j'essaye de créer... www.commentcamarche.net/forum/affich-1569934-php-mysql-interrogation-d-une-base-de-donnee
Supprimer des donées de la base de données (Résolu) Bonjour, j'ai un petit soucis. Je souhaiterais supprimer des données dans ma base donné mais je n'y arrive pas. J'ai essayé différentes méthodes sans succes. Voici mon code. supprimer-user.php Supprimer un... www.commentcamarche.net/forum/affich-4839907-supprimer-des-donees-de-la-base-de-donnees
Comment crier un site web??? (Résolu) Salut tous le monde, je veux crier un site web de A à Z. mon site sera compose de forum + quelque page html on utilise base donne pour stocke les commenter et les articles .je maîtrise html, CSS, SQL, XML et initialise en javascript .je veux savoir... www.commentcamarche.net/forum/affich-4970749-comment-crier-un-site-web
[Organisation] Créer une base de connaissancesLe but d'une base de connaissances est de modéliser et stocker de manière informatique un ensemble de connaissances, idées, concepts ou données et de permettre leur consultation/utilisation. Il existe plusieurs méthodes et logiciels différents pour... www.commentcamarche.net/faq/sujet-4855-organisation-creer-une-base-de-connaissances
Créer une base de données sous IngresPour créer une base de donées Ingres , il faut utiliser la commande createdb La syntaxe la plus simple est : createdb mabase Dans ce cas, la base utilisera les locations par défaut (II_DATABASE, II_WORK, II_CHECKPOINT, II_DUMP et... www.commentcamarche.net/faq/sujet-5417-creer-une-base-de-donnees-sous-ingres
Connexion à une base Oracle en php1. Périmètre Cet article est un exemple de connexion à une base Oracle par le biais d'un script php. Cet article ne traite pas la configuration de votre serveur Oracle, et de votre client Oracle. Nous partons du principe que vous pouvez accéder à... www.commentcamarche.net/faq/sujet-123-connexion-a-une-base-oracle-en-php
C'est quoi Mysql? (Résolu)Bonjour, J'aimerrai bien connaitre est ce que Mysql est un logéciel ou un langage de base donnée comme sql? Merci. www.commentcamarche.net/forum/affich-3036555-c-est-quoi-mysql
Cmnt mettre une image sur un fichier audio? (Résolu)Bonjour, voila mon probleme j'aimerai associer une image a un fichier audio du style mp3, id est pouvoir voir la jaquette de l'album de la chanson sur windows media player et cela avec la version da base donner sur le cd d'installation... www.commentcamarche.net/forum/affich-3077369-cmnt-mettre-une-image-sur-un-fichier-audio
(Excel) Conversion de date (Résolu)Bonjour Je suis en présence d'un fichier Excel comportant 5025 entrées dont une colonne date sous la forme "jj/mm/aaaa", je dois convertir ces dates en "aaaa/mm/jj" afin de rendre ce fichier utilisable pour la mise à jour d'une base donnée... www.commentcamarche.net/forum/affich-3140785-excel-conversion-de-date
Télécharger GrantGateGrantGate est tout simplement un assitant de recherche de subventions conçu pour les organismes à but non lucratif. L'application combine une base données de milliers de subvention. Le logiciel est entièrement gratuit et en anglais. www.commentcamarche.net/telecharger/telecharger-34057532-grantgate
Télécharger Recettes de Cuisine 2004Recettes de Cuisine 2004 est un didacticiel de la cuisine qui offre plus de 10 000 recettes de cuisine et 1 300 cocktails. L’application offre la possibilité d’imprimer la recette choisie par l’utilisateur. Toutes informations pour la meilleure... www.commentcamarche.net/telecharger/telecharger-34056006-recettes-de-cuisine-2004
Planetoscope : lancement d'une base de données en temps réel sur l'écologie sur le Net(Paris - Relax news) - La Toile accueillera à partir du mercredi 17 septembre le site Internet Planetoscope, une base de données sur le développement durable mise à jour en temps réel. Déchets, déforestation mais aussi naissance et décès, les... www.commentcamarche.net/actualites/planetoscope-lancement-d-une-base-de-donnees-en-temps-reel-sur-l-ecologie-sur-le-net-5847355-actualite.php3
Bases de données - IntroductionQu'est-ce qu'une base de données ? Une base de données (son abréviation est BD, en anglais DB, database) est une entité dans laquelle il est possible de stocker des données de façon structurée et avec le moins de redondance possible. Ces données... www.commentcamarche.net/contents/bdd/bddintro.php3
Connexion à la base de données avec JDBCConnexion à la base de données L'API (Application Programming Interface) JDBC, c'est-à-dire la bibliothèque de classes JDBC, se charge de trois étapes indispensables à la connexion à une base de données : la création d'une connexion à la... www.commentcamarche.net/contents/jdbc/jdbcconnect.php3
Bases de données - Utilisation de formulairesUtilisation de formulaires Afin d'exploiter les bases de données, il faut fournir une interface à l'utilisateur lui permettant de visualiser des données en fonction de certains critères. Pour cela il existe un outil : les formulaires. Un formulaire... www.commentcamarche.net/contents/bdd/bddform.php3