Socket - Base de données - dk51
Fermé
siskozed
Messages postés
69
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2009
-
14 févr. 2008 à 12:07
y9 - 22 janv. 2014 à 09:44
y9 - 22 janv. 2014 à 09:44
A voir également:
- Socket - Base de données - dk51
- Formules excel de base - Guide
- Tnt base de données vide - Forum TNT / Satellite / Réception
- Désolé l'utilisation de la base de données a expiré epic games - Forum Jeux vidéo
- Germain veut gérer les activités de son association avec une base de données. il a commencé à créer des tables dans un fichier, mais il n’est pas sûr du résultat. le fichier à télécharger contient uniquement le schéma de cette base de données. en l’état actuel, que peut-on en déduire ? - Forum Outlook
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
5 réponses
siskozed
Messages postés
69
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2009
86
4 mars 2008 à 08:25
4 mars 2008 à 08:25
up
up !
siskozed
Messages postés
69
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2009
86
8 avril 2008 à 11:20
8 avril 2008 à 11:20
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 :
https://codes-sources.commentcamarche.net/
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
/////////////////////////////////////////////////////////// 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 :
https://codes-sources.commentcamarche.net/
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
siskozed
Messages postés
69
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2009
86
22 avril 2008 à 09:52
22 avril 2008 à 09:52
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
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
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
J'utilise un DK40.
Je te passe mon msn : leyougo_3@hotmail.com
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
siskozed
Messages postés
69
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2009
86
28 mai 2008 à 23:54
28 mai 2008 à 23:54
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
Merci