Problème projet informatique industrielle

dubzh Messages postés 2 Statut Membre -  
dubzh Messages postés 2 Statut Membre -
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
A voir également:

2 réponses

patatosaure
 
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]
}
}
0
dubzh Messages postés 2 Statut Membre
 
merci c'est un début je vais voir dévellopez.net et essayé ca
0