prob1 15-1

2
1.Hacer un prog para generar 1marco q tiene 2 bytes de dir. fuente,2bytes de dir . destino,2bytes de long de datos,los datos de acuerdo a la long,85 bytes de rel leno y 2bytes de suma de comprobacion.Los datos se encuentran en un vector [3000] y la long. de los datos en la variable logdat //////////////////////1.envio de byte//////////////////////////////// void SendManchester (byte dato){ for(int i=0;i<8;i++) { byte dato[8]; int P=1/1024000;// 1024kbps if(((dato>>(10-i))&00000001)==0) { PA.0=0; esperar(T/2); PA.0=1; esperar(T/2); }else{ PA.0=1; esperar(T/2); PA.0=0; esperar(T/2); } } } //////////////////////2.ENVIAR MARCO////////////////////////////////////// void SendMarco(byte marco){ //relleno a 64bytes int logdat logdat=(marco[12]<<8)+marco[13]; 21||12 13||22 if(logdat<46){ nBrelleno=46-logdat } else{ long_m=long_m+18; } //envia preambulo 10101010 en base 10 = 170; for(int i=0;i<10:i++){ SendManchester(170); } //envia delimitador de marco 10101011 = 171 SendManchester(171); for(int i=0;i<20:i++){ 20||logdat SendManchester(marco[i]); } ////////////////////// int p=20 for(int i=0,i<logdat,i++){ SendManchester(marco[P++]) } for(int j=0,j<nBrelleno,j++) SendManchester(0x5D) for(int i=0,i<4,i++){ SendManchester(marco[P++]) } }

description

comunicacion de datos

Transcript of prob1 15-1

Page 1: prob1 15-1

1.Hacer un prog para generar 1marco q tiene 2 bytes de dir. fuente,2bytes de dir. destino,2bytes de long de datos,los datos de acuerdo a la long,85 bytes de relleno y 2bytes de suma de comprobacion.Los datos se encuentran en un vector [3000] y la long. de los datos en la variable logdat//////////////////////1.envio de byte////////////////////////////////void SendManchester (byte dato){ for(int i=0;i<8;i++) { byte dato[8]; int P=1/1024000;// 1024kbps if(((dato>>(10-i))&00000001)==0) { PA.0=0; esperar(T/2); PA.0=1; esperar(T/2); }else{ PA.0=1; esperar(T/2); PA.0=0; esperar(T/2); } }}//////////////////////2.ENVIAR MARCO//////////////////////////////////////

void SendMarco(byte marco){

//relleno a 64bytes int logdat logdat=(marco[12]<<8)+marco[13]; 21||12 13||22 if(logdat<46){ nBrelleno=46-logdat }else{ long_m=long_m+18;}

//envia preambulo 10101010 en base 10 = 170;for(int i=0;i<10:i++){SendManchester(170);}//envia delimitador de marco 10101011 = 171SendManchester(171);for(int i=0;i<20:i++){ 20||logdat SendManchester(marco[i]); }//////////////////////int p=20 for(int i=0,i<logdat,i++){ SendManchester(marco[P++]) }for(int j=0,j<nBrelleno,j++) SendManchester(0x5D)

for(int i=0,i<4,i++){ SendManchester(marco[P++]) }}

Page 2: prob1 15-1

//////////////////////3.crear marco///////////////////////////////////void SendLLC(byte buffer[]){int num_m;int long_buff=getlongbuff();num_m=long_buff/3000 ////dividimos entre el vector [3000]int marco_recibido;

for(int j=0;j<num_m;j++){for(int m=0,m<6,m++){marco[m]=byte((MACO<<(8*m))>>40);for(m=0;m<12;m++)marco[m]=byte((MACO<<(8*(m-6)))>>40);marco[m++]=byte(3000>>8);marco[m++]=byte(3000&0x00FF);

}int suma=0;for(int j=i*1500;j<1500*(j+1);j++){

marco[m++]=buffer[j];suma+=buffer[j];}

//Acumulador para hallar suma de verificacionfor(int j=0,j<4,j++)marco[m++]=byte(suma>>(8*(3-j)));SendMarco(marco){

if(long_buff%3000 != 0){int m=0;for(m=0;m<6;m++)marco[m]=byte(MACO>>(8*(5-j)));for(m;m<12;m++)marco[m++]=byte(marco>>(8*5-(12-m));int long_mi=long_buff-num_m*3000marco[m++]=byte(long_mi>>8);marco[m++]=byte(long_mi);int suma=0;for(int j=num_m*1500;j<long_buff;j++){marco[m++]=buffer[i];suma+=buffer[j]}for(int j=0;j<4;j++)marco[m++]=byte(suma>>(8*(3-j)));send marco(marco)

}}