Rechercher : dans
Par :

Problème projet informatique industrielle

Dernière réponse le 12 jun 2008 à 11:37:47 dubzh, le 12 jun 2008 à 11:22:38 
 Signaler ce message aux modérateurs

Bonjour,
J'ai un projet informatique à effectuer pour la fin de l'année et j'ai déja bien avancé mais mon code ne plait pas au prof pcq c mal foutu. Il faudrait des classes, un tableau à double dimension et récupérer les données dans des structures.
Malheureusement je ne suis pas un pro en prog alors je galère.
Voila mon code :

/***********************************************************­*********/
/* Station Météo */
/* Communication et Récupération des données */
/*********************************************a*************­**********/

#include <stddef.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <math.h>
#include <winsock2.h>
#include <iostream>
#include<string>
#include <cstdlib>
#include <fstream>
//#include <fstream>

using namespace std;

#define TAILLE_BUF 100
#define REVEIL_OK 1
#define ESSAI_MAX 12
#define SERVER_PORT_NUM 10001 /* server's port number for bind() */
#define NBRDATA 10
#define SERVER_PORT_NUM1 20
#define SERVER_PORT_NUM2 21
#define SERVER_PORT_BIND 5000

/*Prototypes*/

void commande(int);

int main ( )

{
char serverName[]="192.168.3.221";
char message_recept[512];

struct sockaddr_in serverAddr; /* server's socket address */
int sockAddrSize; /* size of socket address structure */
int sFd; /* socket file descriptor */
int status,rcv ;
WSADATA WSAData;


status=WSAStartup(MAKEWORD(2,0), &WSAData);

sFd = socket (AF_INET, SOCK_STREAM, 0);

sockAddrSize = sizeof (struct sockaddr_in);

serverAddr.sin_family = AF_INET;

serverAddr.sin_port = htons (SERVER_PORT_NUM);

serverAddr.sin_addr.s_addr= inet_addr (serverName);

status=connect (sFd, (struct sockaddr *) &serverAddr, sockAddrSize);
if(status==-1) cout << "ERREUR"<<endl;

commande(sFd); /* appelle de la fonction recup_donne */

closesocket (sFd);

WSACleanup();

return 0;

}

void commande(int sFd)
{ int i,status;
u_long temp;

// Start Length Device-Option Number Command Data Field Checksum
char Trame_IG[TAILLE_BUF]={0x80,0x80,0x80,0x00,0x00,0x00,0x04,0x04};
ioctlsocket(sFd,FIONREAD,&temp);
if (temp) i=recv(sFd,(char *)Trame_IG,sizeof(Trame_IG),0);
status=send(sFd,Trame_IG,8,0);
Sleep(100);
i=recv(sFd,(char *)Trame_IG,sizeof(Trame_IG),0);
printf(" Recuperation des donnees del'onduleur numero : %d\n",Trame_IG[i-2]);

//Acquisition de la puissance
Sleep(500);
char TrameP[TAILLE_BUF]={0x80,0x80,0x80,0x00,0x01,0x01,0x10,0x12};
ioctlsocket(sFd,FIONREAD,&temp);
if (temp) i=recv(sFd,(char *)TrameP,sizeof(TrameP),0);
status=send(sFd,TrameP,8,0);
Sleep(100);

i=recv(sFd,(char *)TrameP,sizeof(TrameP),0);
printf("La puissance actuelle est de %.2f W\n",(((unsigned char)TrameP[i-4]*256) + (unsigned char)TrameP[i-3])*pow(10,(char)TrameP[i-2]));

//Acquisition de l'énergie totale produite
Sleep(500);
char Trame_nrj[TAILLE_BUF]={0x80,0x80,0x80,0x00,0x01,0x01,0x11,0x13};
ioctlsocket(sFd,FIONREAD,&temp);
if (temp) i=recv(sFd,(char *)Trame_nrj,sizeof(Trame_nrj),0);
status=send(sFd,Trame_nrj,8,0);
Sleep(100);

i=recv(sFd,(char *)Trame_nrj,sizeof(Trame_nrj),0);
printf("Energie totale : %.2f Wh\n",(((unsigned char)Trame_nrj[i-4]*256) + (unsigned char)Trame_nrj[i-3])*pow(10,(char)Trame_nrj[i-2]));

//Acquisition de l'énergie jour produite
Sleep(500);
char Trame_nrjjr[TAILLE_BUF]={0x80,0x80,0x80,0x00,0x01,0x01,0x12,0x14};
ioctlsocket(sFd,FIONREAD,&temp);
if (temp) i=recv(sFd,(char *)Trame_nrjjr,sizeof(Trame_nrjjr),0);
status=send(sFd,Trame_nrjjr,8,0);
Sleep(100);

i=recv(sFd,(char *)Trame_nrjjr,sizeof(Trame_nrjjr),0);
printf("Energie aujourdhui : %.2f Wh/j\n",(((unsigned char)Trame_nrjjr[i-4]*256) + (unsigned char)Trame_nrjjr[i-3])*pow(10,(char)Trame_nrjjr[i-2]));

//Acquisition AC courant
Sleep(500);
char Trame_ac_courant[TAILLE_BUF]={0x80,0x80,0x80,0x00,0x01,0x01,0x14,0x16};
ioctlsocket(sFd,FIONREAD,&temp);
if (temp) i=recv(sFd,(char *)Trame_ac_courant,sizeof(Trame_ac_courant),0);
status=send(sFd,Trame_ac_courant,8,0);
Sleep(100);

i=recv(sFd,(char *)Trame_ac_courant,sizeof(Trame_ac_courant),0);
printf("AC courant : %.2f A\n",(((unsigned char)Trame_ac_courant[i-4]*256) + (unsigned char)Trame_ac_courant[i-3])*pow(10,(char)Trame_ac_courant[i-2]));

//Acquisition DC courant
Sleep(500);
char Trame_dc_courant[TAILLE_BUF]={0x80,0x80,0x80,0x00,0x01,0x01,0x17,0x19};
ioctlsocket(sFd,FIONREAD,&temp);
if (temp) i=recv(sFd,(char *)Trame_dc_courant,sizeof(Trame_dc_courant),0);
status=send(sFd,Trame_dc_courant,8,0);
Sleep(100);

i=recv(sFd,(char *)Trame_dc_courant,sizeof(Trame_dc_courant),0);
printf("DC courant : %.2f A\n",(((unsigned char)Trame_dc_courant[i-4]*256) + (unsigned char)Trame_dc_courant[i-3])*pow(10,(char)Trame_dc_courant[i-2]));

//Acquisition AC voltage
Sleep(500);
char Trame_ac_voltage[TAILLE_BUF]={0x80,0x80,0x80,0x00,0x01,0x01,0x15,0x17};
ioctlsocket(sFd,FIONREAD,&temp);
if (temp) i=recv(sFd,(char *)Trame_ac_voltage,sizeof(Trame_ac_voltage),0);
status=send(sFd,Trame_ac_voltage,8,0);
Sleep(100);
i=recv(sFd,(char *)Trame_ac_voltage,sizeof(Trame_ac_voltage),0);
printf("AC voltage : %.2f V\n",(((unsigned char)Trame_ac_voltage[i-4]*256) + (unsigned char)Trame_ac_voltage[i-3])*pow(10,(char)Trame_ac_voltage[i-2]));

//Acquisition DC voltage
Sleep(500);
char Trame_dc_voltage[TAILLE_BUF]={0x80,0x80,0x80,0x00,0x01,0x01,0x18,0x1A };
ioctlsocket(sFd,FIONREAD,&temp);
if (temp) i=recv(sFd,(char *)Trame_dc_voltage,sizeof(Trame_dc_voltage),0);
status=send(sFd,Trame_dc_voltage,8,0);
Sleep(100);
i=recv(sFd,(char *)Trame_dc_voltage,sizeof(Trame_dc_voltage),0);
printf("DC voltage : %.2f V\n",(((unsigned char)Trame_dc_voltage[i-4]*256) + (unsigned char)Trame_dc_voltage[i-3])*pow(10,(char)Trame_dc_voltage[i-2]));

//Acquisition de la fréquence
Sleep (500);
char Trame_freq[TAILLE_BUF]={0x80,0x80,0x80,0x00,0x01,0x01,0x16,0x18};
ioctlsocket(sFd,FIONREAD,&temp);
if (temp) i=recv(sFd,(char *)Trame_freq,sizeof(Trame_freq),0);
status=send(sFd,Trame_freq,8,0);
Sleep(100);
i=recv(sFd,(char *)Trame_freq,sizeof(Trame_freq),0);
printf("Frequence : %.2f Hz\n",(((unsigned char)Trame_freq[i-4]*256) + (unsigned char)Trame_freq[i-3])*pow(10,(char)Trame_freq[i-2]));

//Acquisition de la température
Sleep(500);
char TrameT[TAILLE_BUF]={0x80,0x80,0x80,0x00,0x02,0x02,0xe1,0xe5};
ioctlsocket(sFd,FIONREAD,&temp);
if (temp) i=recv(sFd,(char *)TrameT,sizeof(TrameT),0);
status=send(sFd,TrameT,8,0);
Sleep(100);

i=recv(sFd,(char *)TrameT,sizeof(TrameT),0);
printf("Temperature ambiante : %.2f degres C\n",(((unsigned char)TrameT[i-4]*256) + (unsigned char)TrameT[i-3])*pow(10,(char)TrameT[i-2]));

//Acquisition de l'ensoleillement
Sleep(500);
char Trame_sol[TAILLE_BUF]={0x80,0x80,0x80,0x00,0x02,0x02,0xe2,0xe6};
ioctlsocket(sFd,FIONREAD,&temp);
if (temp) i=recv(sFd,(char *)Trame_sol,sizeof(Trame_sol),0);
status=send(sFd,Trame_sol,8,0);
Sleep(100);
i=recv(sFd,(char *)Trame_sol,sizeof(Trame_sol),0);
printf("L'ensoleillement est de %.2f W/m par metre carre\n",(((unsigned char)Trame_sol[i-4]*256) + (unsigned char)Trame_sol[i-3])*pow(10,(char)Trame_sol[i-2]));


FILE *fp;
int offset;
int taille;

fp=fopen("don_sol1.csv","w+");

int IG=Trame_IG[i-2];

float puissance=(((unsigned char)TrameP[i-4]*256) + (unsigned char)TrameP[i-3])*pow(10,(char)TrameP[i-2]);
float nrj=(((unsigned char)Trame_nrj[i-4]*256) + (unsigned char)Trame_nrj[i-3])*pow(10,(char)Trame_nrj[i-2])/1000;
float nrjjr=(((unsigned char)Trame_nrjjr[i-4]*256) + (unsigned char)Trame_nrjjr[i-3])*pow(10,(char)Trame_nrjjr[i-2])/1000;
float temperature=(((unsigned char)TrameT[i-4]*256) + (unsigned char)TrameT[i-3])*pow(10,(char)TrameT[i-2]);
float sol=(((unsigned char)Trame_sol[i-4]*256) + (unsigned char)Trame_sol[i-3])*pow(10,(char)Trame_sol[i-2]);

float AC_courant=(((unsigned char)Trame_ac_courant[i-4]*256) + (unsigned char)Trame_ac_courant[i-3])*pow(10,(char)Trame_ac_courant[i-2]);
float DC_courant=(((unsigned char)Trame_dc_courant[i-4]*256) + (unsigned char)Trame_dc_courant[i-3])*pow(10,(char)Trame_dc_courant[i-2]);
float AC_voltage=(((unsigned char)Trame_ac_voltage[i-4]*256) + (unsigned char)Trame_ac_voltage[i-3])*pow(10,(char)Trame_ac_voltage[i-2]);
float DC_voltage=(((unsigned char)Trame_dc_voltage[i-4]*256) + (unsigned char)Trame_dc_voltage[i-3])*pow(10,(char)Trame_dc_voltage[i-2]);

float frequence=(((unsigned char)Trame_freq[i-4]*256) + (unsigned char)Trame_freq[i-3])*pow(10,(char)Trame_freq[i-2]);


printf("%d\n",IG);
// fseek(fp,offset,SEEK_SET);
fprintf(fp,"%d;%.2f;%.2f;%.2f;%.2f;%.2f;%.2f;%.2f;%.2f;%.2f;%.2f \n",IG,puissance,nrj,nrjjr,temperature,sol,AC_courant,DC_courant,AC_voltage,DC_voltage,frequence);
// fseek(fp,0,SEEK_SET);
fclose(fp);
}

Merci d'avance

Meilleures réponses pour « problème projet informatique industrielle » dans :
Chef de projet informatique Voir Chef de projet informatique La mission du chef de projet informatique consiste à piloter un projet informatique, de son idée de départ au déloiement généralisé. Les tâches du chef de projet sont nombreuses : Définition du projet, recensement des...
Le cahier des charges d'un site Web VoirLe cahier des charges Faire le cahier des charges de son site d'entreprise Le cahier des charges d'un site Internet définit les spécifications du service à réaliser. Ce document conçu par l'entreprise permet ensuite de sélectionner un prestataire...
Métiers de l'informatique VoirIntroduction aux métiers de l'informatique L'informatique fait aujourd'hui partie intégrante de la majorité des entreprises, à un tel point que le métier d'informaticien s'est diversifié en une multitudes de fonctions spécialisées, touchant aux...
Phase préparatoire d'un projet VoirLa phase préparatoire On utilise généralement le terme d'Avant-Projet pour désigner l'ensemble des étapes préparatoires nécessaires au lancement du projet. Il s'agit donc de définir précisément ce que sera le projet afin d'aboutir à la mise au...
Méthodologie de gestion de projet VoirLa gestion de projet - La nécessité d'une méthodologie claire On appelle « gestion de projet » (éventuellement « conduite de projet ») l'organisation méthodologique mise en œuvre pour faire en sorte que l'ouvrage réalisé par le maître...

patatosaure, le 12 jun 2008 à 11:34:23

Je conseillerais plutôt developpez.net, là-bas, ils aiment lire les ligne de code ;-D


Sinon, de manière générale, un tableau à deux dimensions se déclare comme ceci :
type var[nbx][nby]

Pour le remplir, il suffit d'une double boucle :

for(int i=0; i<nbx; i++)
{
for(int j=0; j<nby; j++)
{
/*traitement de var[i][j]
}
}

Répondre à patatosaure

2

 dubzh, le 12 jun 2008 à 11:37:47

Merci c'est un début je vais voir dévellopez.net et essayé ca

Répondre à dubzh