예제 #1
0
int GetPlc(char *Alias,char *Aliasfile,PLC *plc)
{	char Temp_Alias[MAXPATHSIZE];
	char Path[MAXPATHSIZE];
	char Type[MAXALIASSIZE];
	char NetWork[MAXALIASSIZE];
	int Node=0;
	FILE *fp=fopen(Aliasfile,"r");
	if (fp!=NULL)
	{
		while (!feof(fp))
		{
			if (fscanf(fp,"%30s %50s %10s %10s %d",Temp_Alias,Path,Type,NetWork,&Node)==5)
			{
				if (!strncasecmp(Temp_Alias,Alias,strlen(Alias))) // find
				{
					Log(LOG_DEBUG,"%s = %s (%s,%s,%d)\n",Alias,Path,Type,NetWork,Node);
					memset(plc,0,sizeof(PLC));
					strncpy(plc->PlcName,Temp_Alias,sizeof(plc->PlcName));
					strncpy(plc->PlcPath,Path,sizeof(plc->PlcPath));
					plc->PlcType=GetPlcType(Type);
					plc->NetWork=GetNetType(NetWork);
					plc->Node=Node;
					fclose(fp);
					return(TR_Ok);
				}
			}
		}
		fclose(fp);
		return(TR_Error);
	} else
	{
		Log(LOG_WARNING,"Alias file %s : %s\n",Aliasfile,strerror(errno));
		return(TR_Error);
	}
}
예제 #2
0
	OP_STATUS Notice(const PosixNetworkAddress *what, bool up)
	{
		const enum OpSocketAddressNetType type = GetNetType();
		if (type == NETTYPE_UNDETERMINED ||
			(m_up == up ? type < what->GetNetType() : up))
		{
			RETURN_IF_ERROR(Import(what));
			m_up = up;
		}

		return OpStatus::OK;
	}
예제 #3
0
파일: TuxMXS.c 프로젝트: VanErt1/tuxeip
PLC *GetPlc(char *str)
{	char Path[MAXPATHSIZE];
	char Type[MAXALIASSIZE];
	char NetWork[MAXALIASSIZE];
	int Node=0;

	if (sscanf(str,"%50s %10s %10s %d",Path,Type,NetWork,&Node)==4)
	{
		PLC  *plc=malloc(sizeof(PLC));
		if (plc!=NULL)
		{
			Log(LOG_DEBUG,"Writing to %s (%s,%s,%d)\n",Path,Type,NetWork,Node);
			bzero(plc,sizeof(PLC));
			strncpy(plc->PlcPath,Path,sizeof(plc->PlcPath));
			plc->PlcType=GetPlcType(Type);
			plc->NetWork=GetNetType(NetWork);
			plc->Node=Node;
		}
		return(plc);
	} else return(NULL);
}
예제 #4
0
int main (int argc,char *argv[])
{	
	// Gestion des signaux
	signal(SIGTERM,SigHand);
	signal(SIGINT,SigHand);
	signal(SIGSEGV,SigHand);

	int c;
	PLC plc={"","",LGX,0,0}; // LGX on CNET
	char Alias[MAXALIASSIZE]="\0";
	char TagName[MAXALIASSIZE]="\0";
	char responseValue[30]="";
	
	while ((c=getopt(argc,argv,"dl:f:w:a:p:c:r:n:?h"))!=EOF)
		switch(c)
		{
			case 'd': //debug mode
				{
					debug=1;	
				}break;
			case 'l':
				{
					switch (atoi(optarg))
					{
						case 3:debuglevel=LOG_DEBUG;break;
						case 2:debuglevel=LOG_NOTICE;break;
						case 1:debuglevel=LOG_WARNING;break;
						case 0:debuglevel=LOG_ERR;break;
						default:debuglevel=LOG_WARNING;break;
					}
				};break;
			case 'f': //Alias file
				{
					strcpy(AliasFile,optarg);
				}break;
			case 'w': //Value to write
				{
					strcpy(writeValue,optarg);
					isWrite = TRUE;
				}break;
			case 'a': //Alias
				{
					strcpy(Alias,optarg);
				}break;
			case 'p': //Path
				{
					strcpy(plc.PlcPath,optarg);
				}break;
			case 'c': //Plc Type
				{
					plc.PlcType=GetPlcType(optarg);
				};break;
			case 'r': //Network Type
				{
					plc.NetWork=GetNetType(optarg);
				};break;
			case 'n': //Node address
				{
					plc.Node=atoi(optarg);
				};break;
			case '?':
			case 'h':
				{
					printf("%s (Build on %s %s)\n",LOG_TITLE,__DATE__,__TIME__);
					printf("usage: %s:[-d] [-l0-3] [-f Alias file] [-w Value] [-?,h] {-a alias || -p path -c Plc type -r network type -n node address} var\n",argv[0]);
					printf("-d\tDebug mode to screen\n");
					printf("-l{0..3}\t(default :1)\n");
					printf("\t0\tLOG_ERR\n");
					printf("\t1\tLOG_WARNING (Default)\n");
					printf("\t2\tLOG_NOTICE\n");
					printf("\t3\tLOG_DEBUG\n");
					printf("-f\tAlias file (Default :\"%s\")\n",AliasFile);
					printf("-w\tValue to write\n");
					printf("-a\tAlias name\n");
					printf("-p\tPath \n");
					printf("-c\tPlc type {LGX,PLC,SLC} (Default : LGX)\n");
					printf("-r\tNetwork type {CNET,DHP_A,DHP_B} (Default : CNET)\n");
					printf("-n\tNode address (Default : 0)\n");
					return(0);
				}break;
			default:break;
		}
	if (optind < argc)
	{
		strcpy(TagName,argv[optind]);
	}
	
	starttime=time(NULL);

	Log(LOG_ALERT,"[main] starting...Pid=%d\n",getpid());
	if (strlen(Alias)>0)
	{
		if (GetPlc(Alias,AliasFile,&plc)!=TR_Ok)
		{
			Log(LOG_ERR,"[main] Alias not found\n");
			exit(1);
		}
	}
	// affichage test
	Log(LOG_DEBUG,"[main] AliasFile : %s\n",AliasFile);
	Log(LOG_DEBUG,"[main] Alias : %s\n",Alias);
	Log(LOG_DEBUG,"[main] plc.PlcPath : %s\n",plc.PlcPath);
	Log(LOG_DEBUG,"[main] plc.PlcType : %d\n",plc.PlcType);
	Log(LOG_DEBUG,"[main] plc.NetWork : %d\n",plc.NetWork);
	Log(LOG_DEBUG,"[main] plc.Node : %d\n",plc.Node);
	Log(LOG_DEBUG,"[main] TagName : %s\n",TagName);

	if (Connect(&plc, TagName, responseValue)==SUCCESS) 
	{	
		printf("%s\n",responseValue);
		Log(LOG_ALERT,"[main] stopped\n");
		exit(SUCCESS);
	} else 
	{
		printf("ERR\n");
		Log(LOG_ALERT,"[main] stopped\n");
		exit(ERROR);
	}

}