void main(void) { char *res; char var[]="Ceci est une variable"; res=Affiche(var,"1",'\0'); free(res); }
//////////////////////////////////////////////////////////////// //temps durant la partie// //////////////////////////////////////////////////////////////// int A41(void)//Chrono { Affiche(); printf("Action = A41\n\r"); printf("Etat = LVL\n\r"); return LVL; }
void ChoixConfig::OuvreChoixEdit(QString modeleFile) { ChoixEdite *FenetreChoixEdit = new ChoixEdite(modeleFile); QObject::connect(FenetreChoixEdit,SIGNAL(DemandeRetour()),this,SLOT(Affiche())); QObject::connect(FenetreChoixEdit,SIGNAL(DemandeFerme()),this,SLOT(FermeTout())); this->hide(); FenetreChoixEdit->setWindowFlags(Qt::FramelessWindowHint); FenetreChoixEdit->exec(); }
void Traite(CLIENT *client) { char PlcName[30]; char TagName[50]; char writevalue[20]; char requete[MAXBUFFERSIZE]; memset(PlcName,0,sizeof(PlcName)); memset(TagName,0,sizeof(TagName)); memset(writevalue,0,sizeof(writevalue)); memset(requete,0,sizeof(requete)); memcpy(requete,client->InBuffer.data,client->InBuffer.size); Log(LOG_DEBUG,"Entering Traite for %p (%s)[%i]\n",client,requete,client->InBuffer.size); if (ParseRequest(PlcName,TagName,writevalue,requete)== SUCCESS) { Log(LOG_DEBUG,"Traite for %s@%s=%s \n", TagName, PlcName, writevalue); if(strncasecmp(PlcName,"@",1)==0) { Affiche(client->FD,TagName); client->InBuffer.size=0; return; } PLC *plc=FindPLC(PlcName,&PLCs); if (plc!=NULL) { TAG *tag=FindTag(TagName,PlcName,&TAGs); if (tag!=NULL) { /* Tag exist */ Log(LOG_DEBUG,"\t=Tag %s already exist (%p)\n",TagName,tag); } else { tag=malloc(sizeof(TAG)); if (tag!=NULL) { Log(LOG_DEBUG,"\t+Creating Tag %s (%p) on %s\n",TagName,tag,plc->PlcName); memset(tag,0,sizeof(TAG)); strncpy(tag->TagName,TagName,strlen(TagName)); tag->Plc=plc; plc->References++; AddChListe(&TAGs,tag); } else { Log(LOG_CRIT, "Erreur à l'ajout du tag (%s)\n",strerror(errno)); return; } } if ((time(NULL)-tag->Time_Value)<UPDATE_RATE) { Log(LOG_DEBUG,"\t=Reading buffered value for Tag %s\n",TagName); Reply(client->FD,"[%s]%s=%f\n",plc->PlcName,TagName,tag->Value); } else { if (ReadTag(tag)>0) Reply(client->FD,"[%s]%s=%f\n",plc->PlcName,TagName,tag->Value); else Reply(client->FD,"[%s]%s=Erreur\n",plc->PlcName,TagName); } //Reply(client->FD,"TuxReader : %s (Path : %s) Tag : %s\n",plc->PlcName,plc->PlcPath,TagName); } else { Reply(client->FD,"[%s]%s=PLC not found in Config file\n",plc->PlcName,TagName); /* Test Gardian int *a=(int*)(NULL); *a=10;*/ } } else { Reply(client->FD,"%s=Request error\n",client->InBuffer.data); } client->InBuffer.size=0; }
int mainprog(void) { int res=0,return_len; TMxMsg *msg=NULL,*msg5=NULL,*msg6=NULL; int nfds; fd_set rfds, afds; struct timeval to; nfds = getdtablesize(); FD_ZERO(&afds); FD_SET(MXsock, &afds); res=OpenDb(DBHOST,USER,PASS,DB); if (res<0) {Log(LOG_CRIT,"OpenDb (%d) : %s\n",res,MysqlErrorMsg);return(res);} else { res=BuildTags(&Tags); if (res<=0) { Log(LOG_WARNING,"Nothing to do\n"); Terminated=1; } else { int i; TAGSimplex *Tag; for(i=0;i<Tags.Count;i++) { Tag=Tags.Data[i]; Log(LOG_DEBUG,"%d : %s adresse : %d (%d)\n",i,Tag->TagName,Tag->Address,Tag->Bobine); } } //Terminated=1; bzero(&mybuffer,sizeof(mybuffer)); while (!Terminated) { if (MXsock<0) { Log(LOG_INFO,"Attempting reconnection (%d connections lost)\n",connlost); MXsock=OpenSock(MXADDRESS,MXPORT); if (MXsock>=0) { Log(LOG_NOTICE,"Reconnection OK\n"); }else { sleep(WAITTORECONNECT); Log(LOG_NOTICE,"Waiting before attempting reconnection (connections retries %d)\n",++connretries); continue; }; } memcpy(&rfds, &afds, sizeof(rfds)); to.tv_sec=UPDATERATE; to.tv_usec=0; switch (select(nfds, &rfds, 0, 0,&to)) { case -1:if(errno == EINTR) continue; else Log(LOG_WARNING,"surveillance des descripteurs\n"); case 0: continue; // timeout default: if( FD_ISSET(MXsock, &rfds) ) { return_len=read(MXsock,&inbuf,sizeof(inbuf)); Log(LOG_DEBUG,"Recu : %d\n",return_len); if (return_len>0) { Addbuffer(&mybuffer,&inbuf,return_len); Log(LOG_DEBUG,"Com recu : %d buffersize =%d\n",return_len,mybuffer.Size); if (MsgInBuffer(&mybuffer)==0) // get a message { if (CheckMsgOk(&mybuffer)==0) // Message well formatted { Log(LOG_DEBUG,"Entering DecodeBubber\n"); msg=DecodeBuffer(&mybuffer); /* */ Affiche(msg); switch (msg->Funct) { case 3: Update(&Tags,msg); free(msg); break; case 4: switch (msg->SubFunct) { case 5: case 6: if ((msg->SubFunct==5)&&(msg5!=NULL)) { Log(LOG_WARNING,"Reliquat de bobine\n"); InsBobine(&Tags,msg5,msg6); if (msg5!=NULL) {free(msg5);msg5=NULL;}; if (msg6!=NULL) {free(msg6);msg6=NULL;}; } if (msg->SubFunct==5) msg5=msg; if (msg->SubFunct==6) msg6=msg; if ((msg5!=NULL)&&(msg6!=NULL)) { Log(LOG_INFO,"Recu bobine\n"); InsBobine(&Tags,msg5,msg6); if (msg5!=NULL) {free(msg5);msg5=NULL;}; if (msg6!=NULL) {free(msg6);msg6=NULL;}; } break; default: free(msg); break; } break; default: free(msg); break; } bzero(&mybuffer,sizeof(mybuffer)); msg_ACK++; Log (LOG_INFO,"Msg recu OK : %d\n",msg_ACK); }else { bzero(&mybuffer,sizeof(mybuffer)); Reply(MXsock,NAK); Log (LOG_NOTICE,"Msg recu mauvais: %d\n",msg_NACK++); } }else { /* Erreur ?? */ if (mybuffer.Size>=BufferMaxSize) { Log(LOG_WARNING,"******** Buffer sature ************\n"); bzero(&mybuffer,sizeof(mybuffer)); } } } else { close(MXsock); FD_CLR(MXsock,&afds); MXsock=-1; Log(LOG_WARNING,"Server connection lost !\n"); continue; } } } } return(0); CloseDb; } }
int main(void) { short Tab1[MAX_COL][MAX_COL] ,Tab2[MAX_COL][MAX_COL] ,Tab3[MAX_COL][MAX_COL]={0} ,Vect[MAX_COL]={0},n,val; char choix,retour='O'; srand(time(NULL)); Init(&Tab1[0][0],&Tab2[0][0],&n); printf("\n Matrice 1: \n"); printf(" ----------\n"); Affiche(&Tab1[0][0],n,n); printf("\n"); printf(" Matrice 2: \n"); printf(" ----------\n"); Affiche(&Tab2[0][0],n,n); printf("\n"); system("pause"); system("cls"); while((retour=='O')||(retour=='o')) { Menu(&choix); switch(choix) { case '1': printf("Valeur du nombre a ajouter a la premiere matrice : "); scanf("%hd",&val); AddVal(&Tab1[0][0],&Tab3[0][0],n,val); printf("\n Resultat : \n"); printf(" -----------\n"); Affiche(&Tab3[0][0],n,n); printf("\n"); break; case '2': AddMat(&Tab1[0][0],&Tab2[0][0],&Tab3[0][0],n); printf("\n Resultat : \n"); printf(" -----------\n"); Affiche(&Tab3[0][0],n,n); printf("\n"); break; case '3': printf("Valeur du nombre a soustraire a la premiere matrice : "); scanf("%hd",&val); SousVal(&Tab1[0][0],&Tab3[0][0],n,val); printf("\n Resultat : \n"); printf(" -----------\n"); Affiche(&Tab3[0][0],n,n); printf("\n"); break; case '4': SousMat(&Tab1[0][0],&Tab2[0][0],&Tab3[0][0],n); printf("\n Resultat : \n"); printf(" -----------\n"); Affiche(&Tab3[0][0],n,n); printf("\n"); break; case '5': printf("Valeur du nombre a multiplier a la premiere matrice : "); scanf("%hd",&val); MultVal(&Tab1[0][0],&Tab3[0][0],n,val); printf("\n Resultat : \n"); printf(" -----------\n"); Affiche(&Tab3[0][0],n,n); printf("\n"); break; case '6': MultMat(&Tab1[0][0],&Tab2[0][0],&Vect[0],n); printf("\n Matrice 1 : \n"); printf(" -----------\n"); Affiche(&Tab1[0][0],n,n); printf("\n"); printf("\n Matrice 2 : \n"); printf(" -----------\n"); Affiche(&Tab2[0][0],n,n); printf("\n Vecteur : \n"); printf(" -----------\n"); Affiche(&Vect[0],n,1); break; case '7': ; } if (choix!='7') { printf("\n\nRetour au menu ? [O/N] \n"); fflush(stdin); scanf("%c",&retour); system("cls"); } else { retour='n'; } } system("pause"); return(0); }