예제 #1
0
void main(void)
{
 char *res;
 char var[]="Ceci est une variable";
 res=Affiche(var,"1",'\0');
 free(res);
}
예제 #2
0
////////////////////////////////////////////////////////////////
//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();
}
예제 #4
0
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;
}
예제 #5
0
파일: TuxMXS.c 프로젝트: VanErt1/tuxeip
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;
	}
}
예제 #6
0
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);               
}