⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slave.cpp

📁 profibus主站及从站源代码
💻 CPP
字号:
#include "comunic.h"
#include "comunic.cpp"
#include <conio.h>

#define COM 1
#define TS 1

int file;
int master;
char *gata = "gata";
char *eu = "Eu_1";

void main()
{
	clrscr();
	TEL *tel;
	TEL telr;
	char *name;
	int pos = 0;
	int type;
	int error;
	unsigned char *s;
	int len;

	init_port(COM);

  while(1)
  {
	telr.sa = TS;
	//printf("again\n");
	tel = recv(COM, &type);
	//printf("%s\n",tel->data);
	printf("tipul    %d\n",type);
	if(tel->da!=TS&&tel->da!=127)
	{
		printf("Ignor pachet adresa diferita\n");
	}
	else
	switch(type)
	{
	case TI_LF_CU_DATE:
		tel->data = decode(tel->data, tel->length, &tel->length, &error);
		printf("info = %s	%d\n", tel->data,tel->length);
		if(error != -1)
			if(strcmp(tel->data, "cine") == 0)
			{
				telr.data = strdup(eu);
				telr.length = strlen(eu);
				//telr.data[telr.length] = '\0';
				telr.data = encode(telr.data, telr.length+1, &telr.length);
				send(COM, &telr, TR_LF_CU_DATE);
				free(telr.data);
				free(tel);
				exit(1);
			}
			else
			{
				master = atoi(tel->data);
				telr.da = master;
				free(tel);
				printf("Master este %d\n", master);
			}
		break;
	case TI_FARA_DATE:
		telr.data = NULL;
		telr.length = 0;
		send(COM, &telr, TR_FARA_DATE);
		free(tel);
		//exit(1);
		break;
	case TI_LV_CU_DATE:
		tel->data = decode(tel->data, tel->length, &tel->length, &error);
		if(pos == 0)
		{
			char *name;
			name = strdup(tel->data);
			//name[tel->length]='\0';
			printf("nume  %s\n",name);
			file = open(name,O_RDONLY);
			free(name);

		}
		if(!eof(file))
		{
			if(pos == 0) pos++;
			else
				lseek(file, atol(tel->data), SEEK_SET);
			char *buff;
			buff=(char*)malloc(20);
			int i=read(file,buff, sizeof(char)*20);
			telr.data = strdup(buff);
			telr.length=i;
			telr.data[i]='\0';
			for(i=0;i<telr.length;i++)
                        	printf("%d ",telr.data[i]);
			free(buff);
			telr.data = encode(telr.data, telr.length, &telr.length);
			//telr.length=strlen(telr.data);
			send(COM, &telr, TR_LV_CU_DATE);
			free(telr.data);
			free(tel);
		}
		else
		{
			telr.data = strdup(gata);
			telr.length=strlen(gata);
			telr.data = encode(telr.data, telr.length+1, &telr.length);
			send(COM, &telr, TR_LV_CU_DATE);
                        close(file);
			free(telr.data);
			free(tel);
		}
		break;
	case 21:
		printf("Telegrama necunoscuta\n");
		free(tel);
		break;
	}
  }
}













	/*if(type == TI_LF_CU_DATE && tel->da == 127)
		     //la broadcast
	{
	      //	s = decode(tel->data, tel->length, &len, &error);
	      //	strcpy(tel->data, s);
	      //	tel->length = len;
	      //	if(error != -1)
	      //	{
			master = atoi(tel->data);
			telr.da = master;
			printf("Master este %d\n", master);
	      //	}
	      //	else telr.da = 0;
	}
	if (type==21)
	{
		telr.data = NULL;
		telr.length = 0;
		send(COM, &telr, TR_FARA_DATE);
	}
	else
	if(tel->da == TS)
	{
		if(type == TI_FARA_DATE)//la verificare stare de functionare
		{
			telr.data = NULL;
			telr.length = 0;
			send(COM, &telr, TR_FARA_DATE);
		}
		if(type == TI_LV_CU_DATE)//mi se cere fisierul
		{
		    //	s = decode(tel->data, tel->length, &len, &error);
		    //	strcpy(tel->data, s);
		    //	tel->length = len;

		   //	if(error != -1)
		   //	{
				if(pos == 0)
				{
					pos++;
					file = fopen(tel->data, "r");
				}
				///else
				  if(!feof(file))
				  {
					fseek(file, atoi(tel->data), SEEK_SET);
					telr.length = fread(telr.data, sizeof(char), 20, file);
					//pos+=telr.length;
				    //	telr.data = encode(telr.data, telr.length, &telr.length);
					printf("%s\n",telr.data);
					send(COM, &telr, TR_LV_CU_DATE);
				  }
				  else
				  {
					strcpy(telr.data,gata);
				      //	telr.data = encode(gata, 4, &telr.length);
					send(COM, &telr, TR_LV_CU_DATE);
				  }
		       //	}
		       /*	else
			{
				telr.data = NULL;
				telr.length = 0;
				send(COM, &telr, TR_FARA_DATE);
			}*/
	  /*	}
		if(type == TI_LF_CU_DATE)
		{
			//s = decode(tel->data, tel->length, &len, &error);
			//strcpy(tel->data, s);
			//tel->length = len;

			//tel->data = decode(tel->data, tel->length, &(tel->length), &error);
		       //	if(error != -1)
		       //	{
				if(strcmp(tel->data, "Cine esti?") == 0)
				{
					strcpy(telr.data,eu);
//					telr.data = encode(eu, 9, &telr.length);
					send(COM, &telr, TR_LF_CU_DATE);
				}
		      /*	}
			else
			{
				telr.data = NULL;
				telr.length = 0;
				send(COM, &telr, TR_FARA_DATE);
			}
		}
	}
  }
}                        */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -