protocolo para transmissão de arquivos via porta serial

12
07/10/2015 Protocolo para transmissão de arquivos via porta serial. | Compartilhar é preciso. https://ferpinheiro.wordpress.com/2011/05/15/protocoloparatransmicaodearquivosviaportaserial/ 1/12 Compartilhar é preciso. MAI 15 2011 Protocolo para transmissão de arquivos via porta serial. Esse foi um dos trabalhos da disciplina de Redes de Computadores I em que o objetivo era a implementação de um protocolo para transferir arquivos via porta serial. Abaixo está a descrição de como deveria ser a implementação e a construção do cabo serial. T RABALHO PRÁTICO – REDES I Objetivo: Elaborar um protocolo de rede baseado em três camadas: física (cabo), enlace e aplicação. A camada física consistirá de um cabo serial conectado às portas serias de dois microcomputadores. A confecção do cabo ficará a cargo da dupla. O desenvolvimento do protocolo deverá seguir a implementação da camada física, através da concepção do cabo de comunicação, a camada de enlace, através da implementação das características desta camada (Controle de fluxo, Detecção e correção de erros) e da implementação da camada de aplicação através do desenvolvimento de um software de transferência de arquivos. O protocolo de comunicação (com suas camadas) poderá ser implementado tanto na linguagem de programação C, C++ e Java, ficando restrito aos sistemas operacionais Linux e FreeBSD. Para a construção do cabo siga o modelo: (https://ferpinheiro.files.wordpress.com/2011/05/figura1.jpg) Sintase livre para conhecer, aprender e compartilhar

Upload: vinicius

Post on 31-Jan-2016

230 views

Category:

Documents


0 download

DESCRIPTION

serial

TRANSCRIPT

Page 1: Protocolo Para Transmissão de Arquivos via Porta Serial

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 112

Compartilhar eacute preciso

MAI 15 2011

Protocolo para transmissatildeo de arquivos viaporta serial

Esse foi um dos trabalhos da disciplina de Redes de Computadores I em que o objetivo era aimplementaccedilatildeo de um protocolo para transferir arquivos via porta serial Abaixo estaacute a descriccedilatildeo decomo deveria ser a implementaccedilatildeo e a construccedilatildeo do cabo serial

TRABALHO PRAacuteTICO ndash REDES I

Objetivo Elaborar um protocolo de rede baseado em trecircs camadas fiacutesica (cabo) enlace e aplicaccedilatildeo Acamada fiacutesica consistiraacute de um cabo serial conectado agraves portas serias de dois microcomputadores Aconfecccedilatildeo do cabo ficaraacute a cargo da dupla O desenvolvimento do protocolo deveraacute seguir aimplementaccedilatildeo da camada fiacutesica atraveacutes da concepccedilatildeo do cabo de comunicaccedilatildeo a camada de enlaceatraveacutes da implementaccedilatildeo das caracteriacutesticas desta camada (Controle de fluxo Detecccedilatildeo e correccedilatildeo deerros) e da implementaccedilatildeo da camada de aplicaccedilatildeo atraveacutes do desenvolvimento de um software detransferecircncia de arquivos

O protocolo de comunicaccedilatildeo (com suas camadas) poderaacute ser implementado tanto na linguagem deprogramaccedilatildeo C C++ e Java ficando restrito aos sistemas operacionais Linux e FreeBSD

Para a construccedilatildeo do cabo siga o modelo

(httpsferpinheirofileswordpresscom201105figura1jpg)

Sintashyse livre para conhecer aprender e compartilhar

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 212

(httpsferpinheirofileswordpresscom201105figura2jpg)

Instruccedilotildees para compilar e executar o programa

Primeiramente vocecirc devera conectar dois computadores atraveacutes do cabo serial descrito acima Apoacutes issocopie os arquivos fontes para os dois computadores Antes de compilar vocecirc devera escolher o arquivo aser transferido e inserir seu nome com a extensatildeo no arquivo fonte mainc Veja a imagem

(httpsferpinheirofileswordpresscom201105cujpg)

Para implementaccedilatildeo foi usado Linux (Ubuntu) Caso queira rodar em sistemas Windows vocecirc deveraacutefazer as alteraccedilotildees necessaacuterias

Para compilar utilize o gcc pela linha de comando entre em um terminal e digite

gcc ‑o protocolo mainc base64c base64h declaracoesh definicoesc serialc serialh

Apoacutes compilar os arquivos seraacute gerado o executaacutevel ainda no terminal digite

protocolo

Vocecirc devera ver uma tela como essa

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 312

(httpsferpinheirofileswordpresscom201105protocolojpg)

Vocecirc deveraacute escolher uma opccedilatildeo para o primeiro computador e outra opccedilatildeo para o segundocomputador De preferecircncia escolha a opccedilatildeo 2Prime Receberrdquo para o primeiro computador e a opccedilatildeo ldquo1Enviarrdquo para o segundo computador Apoacutes isso o protocolo iniciara a transferecircncia do arquivo quandoterminado seraacute impressa uma mensagem de transferecircncia completa

Para maiores informaccedilotildees a respeito do funcionamento do protocolo e detalhes da sua implementaccedilatildeoconsulte o ldquoDocumento de Requisitordquo que estaacute disponivel ao final desse post

Coacutedigo Fonte do Protocolo

Arquivo mainc

12345678910111213141516171819202122232425262728293031323334

35

Autores Fernando Krein Pinheiro Clovis ReschkeData 20052009Linguagem C========= IMPORTANTE ===========O coacutedigo esta livre para usarcitar e compartilhar desde quemantida sua fonte e seus autoresObrigadoinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude declaracoeshinclude base64hinclude serialh int main() char nome_arq[TAM_DADOS] char buffer[TAM_DADOS+(sizeof(int)3)] int op=0 FILE saida char ptr_arq system(clear) printf(nt======================== SFTP ==========================n printf(t===== Protocolo de Transferencia de Arquivos via Serial ====n printf(t=========================================================nnn printf(Digite a Opcaon1 Enviarn2 Recebern[ ]bb) scanf(dampop) switch (op)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 412

3536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109

110

case 1 int tamanho=0indice=0tipo=0status=0aux=0cont=0 pacote p = (pacote) malloc (sizeof(pacote)) strcpy(nome_arqNome_do_seu_arquivorar) char ptr_arq = abre_arq(nome_arq) p = monta_pacote(indiceptr_arq1nome_arq) tamanho = p‐gttamanho pacote_to_string(pbuffer) status = escrever_porta(buffer) bzero(buffer TAM_DADOS) while(cont = 5) sleep(1) status = ler_porta(buffer) if(status gt 0) cont=5 else printf(Sem comunicaccedilatildeon) cont++ if(teste_ACK(p)) printf(Chegou ACK) else printf(Manda novamente) break case 2 int tamanho=0indice=0tipo=0status=0aux=0cont=0 pacote p = (pacote) malloc (sizeof(pacote)) do while(cont = 5) sleep(3) status = ler_porta(buffer) if(status gt 0) cont=5 else printf(Sem comunicaccedilatildeon) cont++ p = string_to_pacote(buffer) if(testa_crc(pbuffer)) if(p‐gttipo == 1) tamanho = p‐gttamanho ptr_arq = aloca_mem(tamanho) strcpy(nome_arqp‐gtdados) indice=0 else if(p‐gttipo == 2 ) for(aux=0aux lt 100aux++indice++) ptr_arq[indice] = p‐gtdados[aux] sleep(2) p = monta_pacote(indiceptr_arq3nome_arq) pacote_to_string(pbuffer)

status = escrever_porta(buffer)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 512

Arquivo serialc

Esse fonte eacute responsaacutevel por toda configuraccedilatildeo da porta serial caso tenha alguma duvida consulte osarquivos de configuraccedilatildeo da porta serial no seu Linux

110111112113114115116117118119120

status = escrever_porta(buffer) printf(nndindice) while(indice lt tamanho) escreve_arquivo(ptr_arqnome_arqtamanho) break return 0

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758

ifndef SERIAL_Cdefine SERIAL_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude ltunistdhgtinclude ltshadowhgtinclude ltsystypeshgtinclude ltsysstathgtinclude ltfcntlhgtinclude lttermioshgtinclude lterrnohgtinclude declaracoeshinclude base64h int abrir_porta() int fd fd = open(devttyS0 O_RDWR | O_NOCTTY | O_NDELAY) if (fd == ‐1) printf(nErro em devttyS0n) return ‐1 else fcntl(fd F_SETFL 0) return (fd) void configure_port(int fd) struct termios arq_novo tcgetattr(fd amparq_novo) cfsetispeed(amparq_novo B19200) seta taxa de transmiccedilatildeo cfsetospeed(amparq_novo B19200) seta de recepccedilatildeo arq_novoc_cflag |= (CLOCAL | CREAD) arq_novoc_cflag amp= ~PARENB sem paridade arq_novoc_cflag amp= ~CSTOPB arq_novoc_cflag amp= ~CSIZE arq_novoc_cflag |= CS8 arq_novoc_cflag amp= ~CRTSCTS desabilita controle de fluxo arq_novoc_lflag amp= ~(ICANON | ECHO | ECHOE | ISIG) raw input sem mexer nos chars arq_novoc_oflag amp= ~OPOST raw output arq_novoc_iflag amp= ~IXOFF arq_novoc_iflag amp= ~IXON arq_novoc_cc[VMIN] = TAM_DADOS+(sizeof(int)3) arq_novoc_cc[VTIME] = 0 tcsetattr(fd TCSANOW amparq_novo) int escrever_porta(char buffer) int fd fd=abrir_porta() configure_port(fd) tcflush(fd TCOFLUSH)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 612

Arquivo serialh

Arquivo fonte que contem os cabeccedilalhos e os protoacutetipos das funccedilotildees usadas no serialc

Arquivo definicoesc

Arquivo fonte responsaacutevel pela montagem dos pacotes de dados manipulaccedilatildeo do arquivo calculo doCRC e ACK

585960616263646566676869707172737475767778798081

tcflush(fd TCOFLUSH) ssize_t saida saida = write(fdbufferTAM_DADOS+(sizeof(int)3)) return saida int ler_porta(char buffer) int fd fd=abrir_porta() configure_port(fd) ssize_t entrada fcntl(fd F_SETFL FNDELAY) entrada = read(fdbufferTAM_DADOS+(sizeof(int)3)) tcflush(fd TCIFLUSH) return entrada void fechar_porta() int fd close(fd)endif

1234567891011121314151617181920

ifndef SERIAL_Hdefine SERIAL_Hinclude ltstdiohgt externint abrir_porta() externvoid configure_port(int) externint escrever_porta(char) externint ler_porta(char ) externvoid fechar_porta() endif

1234567891011121314151617181920

ifndef DEFINICOES_Cdefine DEFINICOES_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude declaracoeshinclude serialhinclude base64h char abre_arq(char nome_arq) unsigned char caracter FILE entrada FILE saida int aux entrada = fopen (nome_arq r+b) if(entrada) printf(Natildeo foi possiacutevel abrir arquivos nome_arq)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 712

202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394

95

saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) encode(entradasaida) fclose(saida) fclose(entrada) saida = fopen (base6464 r+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) int posicao_inicial = ftell(saida) fseek(saida 0 SEEK_END) int tamanho = ftell(saida) fseek(saida posicao_inicial SEEK_SET) char ptr = aloca_mem(tamanho) if (saida == NULL) printf(Natildeo foi possiacutevel criar dependecircncias) else int aux=0 while(feof(saida)) caracter = getc(saida) if(feof(saida)) ptr[aux] = caracter aux++ fclose(saida) remove(base6464) return ptr pacote monta_pacote(int indicechar ptr_arqint tipochar nome_arq) int aux=0 pacote p = (pacote) malloc (sizeof(pacote)) if (tipo == 1) p‐gttipo = 1 p‐gttamanho = strlen(ptr_arq) strcpy(p‐gtdadosnome_arq) return p else if (tipo == 2) p‐gttipo=2 for(aux=0aux lt TAM_DADOS aux++indice++) p‐gtdados[aux]=ptr_arq[indice] p‐gttamanho = sizeof(p‐gtdados) return p else if (tipo == 3) p‐gttipo=3 p‐gtdados[0] = a p‐gttamanho = sizeof(p‐gtdados) return p

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 812

9596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169

170

char aloca_mem(int tamanho) char ptr = (char)malloc (tamanho sizeof(char)) if(ptr) printf(Natildeo foi possiacutevel alocar memoacuteria) else return ptr short int CRC( char vetor[TAM_DADOS+(sizeof(int)2)] int tam) short int crc = 0xffff 65535 int j i for (j = 0 j lt tam j++) crc = crc ^ vetor[j] for (i = 0 i lt 8 i++) crc = crc gtgt 1 if ((crc amp 1) == 1) crc = crc ^ 0xA00140961 return crcvoid pacote_to_string(pacote pchar buffer) int crc=0 memcpy(buffer ampp‐gttipo sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gttamanho sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gtdados TAM_DADOS) buffer += TAM_DADOS p‐gtcrc = CRC(buffer 108) memcpy(buffer ampp‐gtcrc sizeof(short int)) printf(nmandou) printf(ntipo dp‐gttipo) pacote string_to_pacote(char buffer) pacote p = (pacote) malloc (sizeof(pacote)) memcpy(ampp‐gttipo buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gttamanho buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gtdados buffer TAM_DADOS) buffer += TAM_DADOS memcpy(ampp‐gtcrc buffer sizeof(short int)) printf(n leu) printf(ntipo dp‐gttipo) return p int testa_crc(pacote pchar buffer) short int crc=0 buffer += 108 memcpy(ampcrc buffer sizeof(short int)) if(crc == p‐gtcrc) return 0 else return ‐1 int teste_ACK(pacote p)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 912

Arquivo declaracoesh

Arquivo fonte que contem os cabeccedilalhos e protoacutetipos das funccedilotildees usadas no definicoesc

170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214

if (p‐gttipo == 3 ampamp p‐gtdados[0] == a) return 0 else return ‐1 int escreve_arquivo(char ptr_arqchar nome_arqint tamanho) FILE saida FILE arquivo int aux saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 fprintf(saidasptr_arq) fclose(saida) saida = fopen(base6464r+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 arquivo = fopen(nome_arqw+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 decode(saidaarquivo) fclose(saida)fclose(arquivo)remove(base6464)return 0 endif

12345678910111213141516171819202122232425

26

ifndef DECLARCOES_Hdefine DECLARACOES_Hdefine bzero(blen) (memset((b) 0 (len)) (void) 0)define TAM_DADOS 100include ltstdiohgt typedef struct pacote unsigned int tipo unsigned int tamanho short int crc char dados[TAM_DADOS]pacote externshort int calcula_CRC( char int) externchar aloca_mem(int) externchar abre_arq(char) externint escreve_arquivo(char char int)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1012

Arquivo base64c

Arquivo fonte responsaacutevel pela codificaccedilatildeo e descodificaccedilatildeo na base 64 base padratildeo para codificaccedilatildeo decaracteres para envio pela porta serial Essa base tambeacutem eacute utilizada pelos emails

26272829303132333435363738394041

externvoid pacote_to_string(pacotechar) externpacote string_to_pacote(char) externpacote monta_pacote(intchar intchar) externint testa_crc(pacotechar) externint teste_ACK(pacote )endif

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

ifndef BASE64_Cdefine BASE64_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude base64hdefine B64_DEF_LINE_SIZE 72define B64_MIN_LINE_SIZE 4define THIS_OPT(ac av) (ac gt 1 av[1][0] == ‐ av[1][1] 0 0) static const char cb64[]=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+static const char cd64[]=|$$$rstuvwxyz$$$$$$$gtABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[]^_`abcdefghijklmnopq void encodeblock( unsigned char in[3] unsigned char out[4] int len ) out[0] = cb64[ in[0] gtgt 2 ] out[1] = cb64[ ((in[0] amp 0x03) ltlt 4) | ((in[1] amp 0xf0) gtgt 4) ] out[2] = (unsigned char) (len gt 1 cb64[ ((in[1] amp 0x0f) ltlt 2) | ((in[2] amp 0xc0) gtgt 6) ] out[3] = (unsigned char) (len gt 2 cb64[ in[2] amp 0x3f ] =) void encode( FILE infile FILE outfile ) unsigned char in[3] out[4] int i len blocksout = 0 while( feof( infile ) ) len = 0 for( i = 0 i lt 3 i++ ) in[i] = (unsigned char) getc( infile ) if( feof( infile ) ) len++ else in[i] = 0 if( len ) encodeblock( in out len ) for( i = 0 i lt 4 i++ ) putc( out[i] outfile ) blocksout++ if( blocksout gt= (1004) || feof( infile ) ) if( blocksout ) fprintf( outfile rn ) blocksout = 0 void decodeblock( unsigned char in[4] unsigned char out[3] )

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1112

54555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128

129

void decodeblock( unsigned char in[4] unsigned char out[3] ) out[ 0 ] = (unsigned char ) (in[0] ltlt 2 | in[1] gtgt 4) out[ 1 ] = (unsigned char ) (in[1] ltlt 4 | in[2] gtgt 2) out[ 2 ] = (unsigned char ) (((in[2] ltlt 6) amp 0xc0) | in[3]) void decode( FILE infile FILE outfile ) unsigned char in[4] out[3] v int i len while( feof( infile ) ) for( len = 0 i = 0 i lt 4 ampamp feof( infile ) i++ ) v = 0 while( feof( infile ) ampamp v == 0 ) v = (unsigned char) getc( infile ) v = (unsigned char) ((v lt 43 || v gt 122) 0 cd64[ v ‐ 43 ]) if( v ) v = (unsigned char) ((v == $) 0 v ‐ 61) if( feof( infile ) ) len++ if( v ) in[ i ] = (unsigned char) (v ‐ 1) else in[i] = 0 if( len ) decodeblock( in out ) for( i = 0 i lt len ‐ 1 i++ ) putc( out[i] outfile ) int b64( int opt char infilename char outfilename ) FILE infile int retcode = 0 if( infilename ) infile = stdin else infile = fopen( infilename rb ) FILE outfile if( outfilename ) outfile = stdout else outfile = fopen( outfilename wb ) if( opt == e ) encode( infile outfile) else decode( infile outfile ) if( outfile = stdout ) if( fclose( outfile ) = 0 ) retcode = 1 if( infile = stdin ) fclose( infile ) return( retcode )

endif

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1212

Arquivo base64h

Arquivo fonte que contem os cabeccedilalhos e os prototipos das funccedilotildees usadas no arquivo base64c

Caso tenha alguma duacutevida a respeito do coacutedigo fonte ou do seu funcionamento entre em contato Parafazer o download do coacutedigo fonte CLICK AQUI(httpwww4sharedcomfileJR_OpFoRSFTPhtml]SFTPzip) Para fazer download do documento deRequisitos desse protocolo CLICK AQUI(httpwww4sharedcomdocumentNFyDYL7tFernando_Krein_Pinheirohtml) esse documento foifeito como preacute requisito para a aprovaccedilatildeo da Disciplina de Engenharia de Software I na qual eureaproveitei o software da disciplina de Redes de Computadores I

por ferpinheiro bull Postado em Redes

Blog no WordPresscom | O tema iTheme2

129 endif

12345678

ifndef BASE64_Hdefine BASE64_Hinclude ltstdiohgt extern void encode( FILE FILE )extern void decode( FILE FILE ) endif

You May Like

1 25 PhotosThat That Prove The World Is A Liea month ago answerscom AnswersAnswerscom (sponsored)

Sobre estes anuacutencios (httpswordpresscomabout-these-ads)

Page 2: Protocolo Para Transmissão de Arquivos via Porta Serial

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 212

(httpsferpinheirofileswordpresscom201105figura2jpg)

Instruccedilotildees para compilar e executar o programa

Primeiramente vocecirc devera conectar dois computadores atraveacutes do cabo serial descrito acima Apoacutes issocopie os arquivos fontes para os dois computadores Antes de compilar vocecirc devera escolher o arquivo aser transferido e inserir seu nome com a extensatildeo no arquivo fonte mainc Veja a imagem

(httpsferpinheirofileswordpresscom201105cujpg)

Para implementaccedilatildeo foi usado Linux (Ubuntu) Caso queira rodar em sistemas Windows vocecirc deveraacutefazer as alteraccedilotildees necessaacuterias

Para compilar utilize o gcc pela linha de comando entre em um terminal e digite

gcc ‑o protocolo mainc base64c base64h declaracoesh definicoesc serialc serialh

Apoacutes compilar os arquivos seraacute gerado o executaacutevel ainda no terminal digite

protocolo

Vocecirc devera ver uma tela como essa

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 312

(httpsferpinheirofileswordpresscom201105protocolojpg)

Vocecirc deveraacute escolher uma opccedilatildeo para o primeiro computador e outra opccedilatildeo para o segundocomputador De preferecircncia escolha a opccedilatildeo 2Prime Receberrdquo para o primeiro computador e a opccedilatildeo ldquo1Enviarrdquo para o segundo computador Apoacutes isso o protocolo iniciara a transferecircncia do arquivo quandoterminado seraacute impressa uma mensagem de transferecircncia completa

Para maiores informaccedilotildees a respeito do funcionamento do protocolo e detalhes da sua implementaccedilatildeoconsulte o ldquoDocumento de Requisitordquo que estaacute disponivel ao final desse post

Coacutedigo Fonte do Protocolo

Arquivo mainc

12345678910111213141516171819202122232425262728293031323334

35

Autores Fernando Krein Pinheiro Clovis ReschkeData 20052009Linguagem C========= IMPORTANTE ===========O coacutedigo esta livre para usarcitar e compartilhar desde quemantida sua fonte e seus autoresObrigadoinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude declaracoeshinclude base64hinclude serialh int main() char nome_arq[TAM_DADOS] char buffer[TAM_DADOS+(sizeof(int)3)] int op=0 FILE saida char ptr_arq system(clear) printf(nt======================== SFTP ==========================n printf(t===== Protocolo de Transferencia de Arquivos via Serial ====n printf(t=========================================================nnn printf(Digite a Opcaon1 Enviarn2 Recebern[ ]bb) scanf(dampop) switch (op)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 412

3536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109

110

case 1 int tamanho=0indice=0tipo=0status=0aux=0cont=0 pacote p = (pacote) malloc (sizeof(pacote)) strcpy(nome_arqNome_do_seu_arquivorar) char ptr_arq = abre_arq(nome_arq) p = monta_pacote(indiceptr_arq1nome_arq) tamanho = p‐gttamanho pacote_to_string(pbuffer) status = escrever_porta(buffer) bzero(buffer TAM_DADOS) while(cont = 5) sleep(1) status = ler_porta(buffer) if(status gt 0) cont=5 else printf(Sem comunicaccedilatildeon) cont++ if(teste_ACK(p)) printf(Chegou ACK) else printf(Manda novamente) break case 2 int tamanho=0indice=0tipo=0status=0aux=0cont=0 pacote p = (pacote) malloc (sizeof(pacote)) do while(cont = 5) sleep(3) status = ler_porta(buffer) if(status gt 0) cont=5 else printf(Sem comunicaccedilatildeon) cont++ p = string_to_pacote(buffer) if(testa_crc(pbuffer)) if(p‐gttipo == 1) tamanho = p‐gttamanho ptr_arq = aloca_mem(tamanho) strcpy(nome_arqp‐gtdados) indice=0 else if(p‐gttipo == 2 ) for(aux=0aux lt 100aux++indice++) ptr_arq[indice] = p‐gtdados[aux] sleep(2) p = monta_pacote(indiceptr_arq3nome_arq) pacote_to_string(pbuffer)

status = escrever_porta(buffer)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 512

Arquivo serialc

Esse fonte eacute responsaacutevel por toda configuraccedilatildeo da porta serial caso tenha alguma duvida consulte osarquivos de configuraccedilatildeo da porta serial no seu Linux

110111112113114115116117118119120

status = escrever_porta(buffer) printf(nndindice) while(indice lt tamanho) escreve_arquivo(ptr_arqnome_arqtamanho) break return 0

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758

ifndef SERIAL_Cdefine SERIAL_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude ltunistdhgtinclude ltshadowhgtinclude ltsystypeshgtinclude ltsysstathgtinclude ltfcntlhgtinclude lttermioshgtinclude lterrnohgtinclude declaracoeshinclude base64h int abrir_porta() int fd fd = open(devttyS0 O_RDWR | O_NOCTTY | O_NDELAY) if (fd == ‐1) printf(nErro em devttyS0n) return ‐1 else fcntl(fd F_SETFL 0) return (fd) void configure_port(int fd) struct termios arq_novo tcgetattr(fd amparq_novo) cfsetispeed(amparq_novo B19200) seta taxa de transmiccedilatildeo cfsetospeed(amparq_novo B19200) seta de recepccedilatildeo arq_novoc_cflag |= (CLOCAL | CREAD) arq_novoc_cflag amp= ~PARENB sem paridade arq_novoc_cflag amp= ~CSTOPB arq_novoc_cflag amp= ~CSIZE arq_novoc_cflag |= CS8 arq_novoc_cflag amp= ~CRTSCTS desabilita controle de fluxo arq_novoc_lflag amp= ~(ICANON | ECHO | ECHOE | ISIG) raw input sem mexer nos chars arq_novoc_oflag amp= ~OPOST raw output arq_novoc_iflag amp= ~IXOFF arq_novoc_iflag amp= ~IXON arq_novoc_cc[VMIN] = TAM_DADOS+(sizeof(int)3) arq_novoc_cc[VTIME] = 0 tcsetattr(fd TCSANOW amparq_novo) int escrever_porta(char buffer) int fd fd=abrir_porta() configure_port(fd) tcflush(fd TCOFLUSH)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 612

Arquivo serialh

Arquivo fonte que contem os cabeccedilalhos e os protoacutetipos das funccedilotildees usadas no serialc

Arquivo definicoesc

Arquivo fonte responsaacutevel pela montagem dos pacotes de dados manipulaccedilatildeo do arquivo calculo doCRC e ACK

585960616263646566676869707172737475767778798081

tcflush(fd TCOFLUSH) ssize_t saida saida = write(fdbufferTAM_DADOS+(sizeof(int)3)) return saida int ler_porta(char buffer) int fd fd=abrir_porta() configure_port(fd) ssize_t entrada fcntl(fd F_SETFL FNDELAY) entrada = read(fdbufferTAM_DADOS+(sizeof(int)3)) tcflush(fd TCIFLUSH) return entrada void fechar_porta() int fd close(fd)endif

1234567891011121314151617181920

ifndef SERIAL_Hdefine SERIAL_Hinclude ltstdiohgt externint abrir_porta() externvoid configure_port(int) externint escrever_porta(char) externint ler_porta(char ) externvoid fechar_porta() endif

1234567891011121314151617181920

ifndef DEFINICOES_Cdefine DEFINICOES_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude declaracoeshinclude serialhinclude base64h char abre_arq(char nome_arq) unsigned char caracter FILE entrada FILE saida int aux entrada = fopen (nome_arq r+b) if(entrada) printf(Natildeo foi possiacutevel abrir arquivos nome_arq)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 712

202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394

95

saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) encode(entradasaida) fclose(saida) fclose(entrada) saida = fopen (base6464 r+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) int posicao_inicial = ftell(saida) fseek(saida 0 SEEK_END) int tamanho = ftell(saida) fseek(saida posicao_inicial SEEK_SET) char ptr = aloca_mem(tamanho) if (saida == NULL) printf(Natildeo foi possiacutevel criar dependecircncias) else int aux=0 while(feof(saida)) caracter = getc(saida) if(feof(saida)) ptr[aux] = caracter aux++ fclose(saida) remove(base6464) return ptr pacote monta_pacote(int indicechar ptr_arqint tipochar nome_arq) int aux=0 pacote p = (pacote) malloc (sizeof(pacote)) if (tipo == 1) p‐gttipo = 1 p‐gttamanho = strlen(ptr_arq) strcpy(p‐gtdadosnome_arq) return p else if (tipo == 2) p‐gttipo=2 for(aux=0aux lt TAM_DADOS aux++indice++) p‐gtdados[aux]=ptr_arq[indice] p‐gttamanho = sizeof(p‐gtdados) return p else if (tipo == 3) p‐gttipo=3 p‐gtdados[0] = a p‐gttamanho = sizeof(p‐gtdados) return p

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 812

9596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169

170

char aloca_mem(int tamanho) char ptr = (char)malloc (tamanho sizeof(char)) if(ptr) printf(Natildeo foi possiacutevel alocar memoacuteria) else return ptr short int CRC( char vetor[TAM_DADOS+(sizeof(int)2)] int tam) short int crc = 0xffff 65535 int j i for (j = 0 j lt tam j++) crc = crc ^ vetor[j] for (i = 0 i lt 8 i++) crc = crc gtgt 1 if ((crc amp 1) == 1) crc = crc ^ 0xA00140961 return crcvoid pacote_to_string(pacote pchar buffer) int crc=0 memcpy(buffer ampp‐gttipo sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gttamanho sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gtdados TAM_DADOS) buffer += TAM_DADOS p‐gtcrc = CRC(buffer 108) memcpy(buffer ampp‐gtcrc sizeof(short int)) printf(nmandou) printf(ntipo dp‐gttipo) pacote string_to_pacote(char buffer) pacote p = (pacote) malloc (sizeof(pacote)) memcpy(ampp‐gttipo buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gttamanho buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gtdados buffer TAM_DADOS) buffer += TAM_DADOS memcpy(ampp‐gtcrc buffer sizeof(short int)) printf(n leu) printf(ntipo dp‐gttipo) return p int testa_crc(pacote pchar buffer) short int crc=0 buffer += 108 memcpy(ampcrc buffer sizeof(short int)) if(crc == p‐gtcrc) return 0 else return ‐1 int teste_ACK(pacote p)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 912

Arquivo declaracoesh

Arquivo fonte que contem os cabeccedilalhos e protoacutetipos das funccedilotildees usadas no definicoesc

170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214

if (p‐gttipo == 3 ampamp p‐gtdados[0] == a) return 0 else return ‐1 int escreve_arquivo(char ptr_arqchar nome_arqint tamanho) FILE saida FILE arquivo int aux saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 fprintf(saidasptr_arq) fclose(saida) saida = fopen(base6464r+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 arquivo = fopen(nome_arqw+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 decode(saidaarquivo) fclose(saida)fclose(arquivo)remove(base6464)return 0 endif

12345678910111213141516171819202122232425

26

ifndef DECLARCOES_Hdefine DECLARACOES_Hdefine bzero(blen) (memset((b) 0 (len)) (void) 0)define TAM_DADOS 100include ltstdiohgt typedef struct pacote unsigned int tipo unsigned int tamanho short int crc char dados[TAM_DADOS]pacote externshort int calcula_CRC( char int) externchar aloca_mem(int) externchar abre_arq(char) externint escreve_arquivo(char char int)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1012

Arquivo base64c

Arquivo fonte responsaacutevel pela codificaccedilatildeo e descodificaccedilatildeo na base 64 base padratildeo para codificaccedilatildeo decaracteres para envio pela porta serial Essa base tambeacutem eacute utilizada pelos emails

26272829303132333435363738394041

externvoid pacote_to_string(pacotechar) externpacote string_to_pacote(char) externpacote monta_pacote(intchar intchar) externint testa_crc(pacotechar) externint teste_ACK(pacote )endif

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

ifndef BASE64_Cdefine BASE64_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude base64hdefine B64_DEF_LINE_SIZE 72define B64_MIN_LINE_SIZE 4define THIS_OPT(ac av) (ac gt 1 av[1][0] == ‐ av[1][1] 0 0) static const char cb64[]=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+static const char cd64[]=|$$$rstuvwxyz$$$$$$$gtABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[]^_`abcdefghijklmnopq void encodeblock( unsigned char in[3] unsigned char out[4] int len ) out[0] = cb64[ in[0] gtgt 2 ] out[1] = cb64[ ((in[0] amp 0x03) ltlt 4) | ((in[1] amp 0xf0) gtgt 4) ] out[2] = (unsigned char) (len gt 1 cb64[ ((in[1] amp 0x0f) ltlt 2) | ((in[2] amp 0xc0) gtgt 6) ] out[3] = (unsigned char) (len gt 2 cb64[ in[2] amp 0x3f ] =) void encode( FILE infile FILE outfile ) unsigned char in[3] out[4] int i len blocksout = 0 while( feof( infile ) ) len = 0 for( i = 0 i lt 3 i++ ) in[i] = (unsigned char) getc( infile ) if( feof( infile ) ) len++ else in[i] = 0 if( len ) encodeblock( in out len ) for( i = 0 i lt 4 i++ ) putc( out[i] outfile ) blocksout++ if( blocksout gt= (1004) || feof( infile ) ) if( blocksout ) fprintf( outfile rn ) blocksout = 0 void decodeblock( unsigned char in[4] unsigned char out[3] )

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1112

54555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128

129

void decodeblock( unsigned char in[4] unsigned char out[3] ) out[ 0 ] = (unsigned char ) (in[0] ltlt 2 | in[1] gtgt 4) out[ 1 ] = (unsigned char ) (in[1] ltlt 4 | in[2] gtgt 2) out[ 2 ] = (unsigned char ) (((in[2] ltlt 6) amp 0xc0) | in[3]) void decode( FILE infile FILE outfile ) unsigned char in[4] out[3] v int i len while( feof( infile ) ) for( len = 0 i = 0 i lt 4 ampamp feof( infile ) i++ ) v = 0 while( feof( infile ) ampamp v == 0 ) v = (unsigned char) getc( infile ) v = (unsigned char) ((v lt 43 || v gt 122) 0 cd64[ v ‐ 43 ]) if( v ) v = (unsigned char) ((v == $) 0 v ‐ 61) if( feof( infile ) ) len++ if( v ) in[ i ] = (unsigned char) (v ‐ 1) else in[i] = 0 if( len ) decodeblock( in out ) for( i = 0 i lt len ‐ 1 i++ ) putc( out[i] outfile ) int b64( int opt char infilename char outfilename ) FILE infile int retcode = 0 if( infilename ) infile = stdin else infile = fopen( infilename rb ) FILE outfile if( outfilename ) outfile = stdout else outfile = fopen( outfilename wb ) if( opt == e ) encode( infile outfile) else decode( infile outfile ) if( outfile = stdout ) if( fclose( outfile ) = 0 ) retcode = 1 if( infile = stdin ) fclose( infile ) return( retcode )

endif

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1212

Arquivo base64h

Arquivo fonte que contem os cabeccedilalhos e os prototipos das funccedilotildees usadas no arquivo base64c

Caso tenha alguma duacutevida a respeito do coacutedigo fonte ou do seu funcionamento entre em contato Parafazer o download do coacutedigo fonte CLICK AQUI(httpwww4sharedcomfileJR_OpFoRSFTPhtml]SFTPzip) Para fazer download do documento deRequisitos desse protocolo CLICK AQUI(httpwww4sharedcomdocumentNFyDYL7tFernando_Krein_Pinheirohtml) esse documento foifeito como preacute requisito para a aprovaccedilatildeo da Disciplina de Engenharia de Software I na qual eureaproveitei o software da disciplina de Redes de Computadores I

por ferpinheiro bull Postado em Redes

Blog no WordPresscom | O tema iTheme2

129 endif

12345678

ifndef BASE64_Hdefine BASE64_Hinclude ltstdiohgt extern void encode( FILE FILE )extern void decode( FILE FILE ) endif

You May Like

1 25 PhotosThat That Prove The World Is A Liea month ago answerscom AnswersAnswerscom (sponsored)

Sobre estes anuacutencios (httpswordpresscomabout-these-ads)

Page 3: Protocolo Para Transmissão de Arquivos via Porta Serial

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 312

(httpsferpinheirofileswordpresscom201105protocolojpg)

Vocecirc deveraacute escolher uma opccedilatildeo para o primeiro computador e outra opccedilatildeo para o segundocomputador De preferecircncia escolha a opccedilatildeo 2Prime Receberrdquo para o primeiro computador e a opccedilatildeo ldquo1Enviarrdquo para o segundo computador Apoacutes isso o protocolo iniciara a transferecircncia do arquivo quandoterminado seraacute impressa uma mensagem de transferecircncia completa

Para maiores informaccedilotildees a respeito do funcionamento do protocolo e detalhes da sua implementaccedilatildeoconsulte o ldquoDocumento de Requisitordquo que estaacute disponivel ao final desse post

Coacutedigo Fonte do Protocolo

Arquivo mainc

12345678910111213141516171819202122232425262728293031323334

35

Autores Fernando Krein Pinheiro Clovis ReschkeData 20052009Linguagem C========= IMPORTANTE ===========O coacutedigo esta livre para usarcitar e compartilhar desde quemantida sua fonte e seus autoresObrigadoinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude declaracoeshinclude base64hinclude serialh int main() char nome_arq[TAM_DADOS] char buffer[TAM_DADOS+(sizeof(int)3)] int op=0 FILE saida char ptr_arq system(clear) printf(nt======================== SFTP ==========================n printf(t===== Protocolo de Transferencia de Arquivos via Serial ====n printf(t=========================================================nnn printf(Digite a Opcaon1 Enviarn2 Recebern[ ]bb) scanf(dampop) switch (op)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 412

3536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109

110

case 1 int tamanho=0indice=0tipo=0status=0aux=0cont=0 pacote p = (pacote) malloc (sizeof(pacote)) strcpy(nome_arqNome_do_seu_arquivorar) char ptr_arq = abre_arq(nome_arq) p = monta_pacote(indiceptr_arq1nome_arq) tamanho = p‐gttamanho pacote_to_string(pbuffer) status = escrever_porta(buffer) bzero(buffer TAM_DADOS) while(cont = 5) sleep(1) status = ler_porta(buffer) if(status gt 0) cont=5 else printf(Sem comunicaccedilatildeon) cont++ if(teste_ACK(p)) printf(Chegou ACK) else printf(Manda novamente) break case 2 int tamanho=0indice=0tipo=0status=0aux=0cont=0 pacote p = (pacote) malloc (sizeof(pacote)) do while(cont = 5) sleep(3) status = ler_porta(buffer) if(status gt 0) cont=5 else printf(Sem comunicaccedilatildeon) cont++ p = string_to_pacote(buffer) if(testa_crc(pbuffer)) if(p‐gttipo == 1) tamanho = p‐gttamanho ptr_arq = aloca_mem(tamanho) strcpy(nome_arqp‐gtdados) indice=0 else if(p‐gttipo == 2 ) for(aux=0aux lt 100aux++indice++) ptr_arq[indice] = p‐gtdados[aux] sleep(2) p = monta_pacote(indiceptr_arq3nome_arq) pacote_to_string(pbuffer)

status = escrever_porta(buffer)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 512

Arquivo serialc

Esse fonte eacute responsaacutevel por toda configuraccedilatildeo da porta serial caso tenha alguma duvida consulte osarquivos de configuraccedilatildeo da porta serial no seu Linux

110111112113114115116117118119120

status = escrever_porta(buffer) printf(nndindice) while(indice lt tamanho) escreve_arquivo(ptr_arqnome_arqtamanho) break return 0

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758

ifndef SERIAL_Cdefine SERIAL_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude ltunistdhgtinclude ltshadowhgtinclude ltsystypeshgtinclude ltsysstathgtinclude ltfcntlhgtinclude lttermioshgtinclude lterrnohgtinclude declaracoeshinclude base64h int abrir_porta() int fd fd = open(devttyS0 O_RDWR | O_NOCTTY | O_NDELAY) if (fd == ‐1) printf(nErro em devttyS0n) return ‐1 else fcntl(fd F_SETFL 0) return (fd) void configure_port(int fd) struct termios arq_novo tcgetattr(fd amparq_novo) cfsetispeed(amparq_novo B19200) seta taxa de transmiccedilatildeo cfsetospeed(amparq_novo B19200) seta de recepccedilatildeo arq_novoc_cflag |= (CLOCAL | CREAD) arq_novoc_cflag amp= ~PARENB sem paridade arq_novoc_cflag amp= ~CSTOPB arq_novoc_cflag amp= ~CSIZE arq_novoc_cflag |= CS8 arq_novoc_cflag amp= ~CRTSCTS desabilita controle de fluxo arq_novoc_lflag amp= ~(ICANON | ECHO | ECHOE | ISIG) raw input sem mexer nos chars arq_novoc_oflag amp= ~OPOST raw output arq_novoc_iflag amp= ~IXOFF arq_novoc_iflag amp= ~IXON arq_novoc_cc[VMIN] = TAM_DADOS+(sizeof(int)3) arq_novoc_cc[VTIME] = 0 tcsetattr(fd TCSANOW amparq_novo) int escrever_porta(char buffer) int fd fd=abrir_porta() configure_port(fd) tcflush(fd TCOFLUSH)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 612

Arquivo serialh

Arquivo fonte que contem os cabeccedilalhos e os protoacutetipos das funccedilotildees usadas no serialc

Arquivo definicoesc

Arquivo fonte responsaacutevel pela montagem dos pacotes de dados manipulaccedilatildeo do arquivo calculo doCRC e ACK

585960616263646566676869707172737475767778798081

tcflush(fd TCOFLUSH) ssize_t saida saida = write(fdbufferTAM_DADOS+(sizeof(int)3)) return saida int ler_porta(char buffer) int fd fd=abrir_porta() configure_port(fd) ssize_t entrada fcntl(fd F_SETFL FNDELAY) entrada = read(fdbufferTAM_DADOS+(sizeof(int)3)) tcflush(fd TCIFLUSH) return entrada void fechar_porta() int fd close(fd)endif

1234567891011121314151617181920

ifndef SERIAL_Hdefine SERIAL_Hinclude ltstdiohgt externint abrir_porta() externvoid configure_port(int) externint escrever_porta(char) externint ler_porta(char ) externvoid fechar_porta() endif

1234567891011121314151617181920

ifndef DEFINICOES_Cdefine DEFINICOES_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude declaracoeshinclude serialhinclude base64h char abre_arq(char nome_arq) unsigned char caracter FILE entrada FILE saida int aux entrada = fopen (nome_arq r+b) if(entrada) printf(Natildeo foi possiacutevel abrir arquivos nome_arq)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 712

202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394

95

saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) encode(entradasaida) fclose(saida) fclose(entrada) saida = fopen (base6464 r+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) int posicao_inicial = ftell(saida) fseek(saida 0 SEEK_END) int tamanho = ftell(saida) fseek(saida posicao_inicial SEEK_SET) char ptr = aloca_mem(tamanho) if (saida == NULL) printf(Natildeo foi possiacutevel criar dependecircncias) else int aux=0 while(feof(saida)) caracter = getc(saida) if(feof(saida)) ptr[aux] = caracter aux++ fclose(saida) remove(base6464) return ptr pacote monta_pacote(int indicechar ptr_arqint tipochar nome_arq) int aux=0 pacote p = (pacote) malloc (sizeof(pacote)) if (tipo == 1) p‐gttipo = 1 p‐gttamanho = strlen(ptr_arq) strcpy(p‐gtdadosnome_arq) return p else if (tipo == 2) p‐gttipo=2 for(aux=0aux lt TAM_DADOS aux++indice++) p‐gtdados[aux]=ptr_arq[indice] p‐gttamanho = sizeof(p‐gtdados) return p else if (tipo == 3) p‐gttipo=3 p‐gtdados[0] = a p‐gttamanho = sizeof(p‐gtdados) return p

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 812

9596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169

170

char aloca_mem(int tamanho) char ptr = (char)malloc (tamanho sizeof(char)) if(ptr) printf(Natildeo foi possiacutevel alocar memoacuteria) else return ptr short int CRC( char vetor[TAM_DADOS+(sizeof(int)2)] int tam) short int crc = 0xffff 65535 int j i for (j = 0 j lt tam j++) crc = crc ^ vetor[j] for (i = 0 i lt 8 i++) crc = crc gtgt 1 if ((crc amp 1) == 1) crc = crc ^ 0xA00140961 return crcvoid pacote_to_string(pacote pchar buffer) int crc=0 memcpy(buffer ampp‐gttipo sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gttamanho sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gtdados TAM_DADOS) buffer += TAM_DADOS p‐gtcrc = CRC(buffer 108) memcpy(buffer ampp‐gtcrc sizeof(short int)) printf(nmandou) printf(ntipo dp‐gttipo) pacote string_to_pacote(char buffer) pacote p = (pacote) malloc (sizeof(pacote)) memcpy(ampp‐gttipo buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gttamanho buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gtdados buffer TAM_DADOS) buffer += TAM_DADOS memcpy(ampp‐gtcrc buffer sizeof(short int)) printf(n leu) printf(ntipo dp‐gttipo) return p int testa_crc(pacote pchar buffer) short int crc=0 buffer += 108 memcpy(ampcrc buffer sizeof(short int)) if(crc == p‐gtcrc) return 0 else return ‐1 int teste_ACK(pacote p)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 912

Arquivo declaracoesh

Arquivo fonte que contem os cabeccedilalhos e protoacutetipos das funccedilotildees usadas no definicoesc

170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214

if (p‐gttipo == 3 ampamp p‐gtdados[0] == a) return 0 else return ‐1 int escreve_arquivo(char ptr_arqchar nome_arqint tamanho) FILE saida FILE arquivo int aux saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 fprintf(saidasptr_arq) fclose(saida) saida = fopen(base6464r+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 arquivo = fopen(nome_arqw+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 decode(saidaarquivo) fclose(saida)fclose(arquivo)remove(base6464)return 0 endif

12345678910111213141516171819202122232425

26

ifndef DECLARCOES_Hdefine DECLARACOES_Hdefine bzero(blen) (memset((b) 0 (len)) (void) 0)define TAM_DADOS 100include ltstdiohgt typedef struct pacote unsigned int tipo unsigned int tamanho short int crc char dados[TAM_DADOS]pacote externshort int calcula_CRC( char int) externchar aloca_mem(int) externchar abre_arq(char) externint escreve_arquivo(char char int)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1012

Arquivo base64c

Arquivo fonte responsaacutevel pela codificaccedilatildeo e descodificaccedilatildeo na base 64 base padratildeo para codificaccedilatildeo decaracteres para envio pela porta serial Essa base tambeacutem eacute utilizada pelos emails

26272829303132333435363738394041

externvoid pacote_to_string(pacotechar) externpacote string_to_pacote(char) externpacote monta_pacote(intchar intchar) externint testa_crc(pacotechar) externint teste_ACK(pacote )endif

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

ifndef BASE64_Cdefine BASE64_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude base64hdefine B64_DEF_LINE_SIZE 72define B64_MIN_LINE_SIZE 4define THIS_OPT(ac av) (ac gt 1 av[1][0] == ‐ av[1][1] 0 0) static const char cb64[]=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+static const char cd64[]=|$$$rstuvwxyz$$$$$$$gtABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[]^_`abcdefghijklmnopq void encodeblock( unsigned char in[3] unsigned char out[4] int len ) out[0] = cb64[ in[0] gtgt 2 ] out[1] = cb64[ ((in[0] amp 0x03) ltlt 4) | ((in[1] amp 0xf0) gtgt 4) ] out[2] = (unsigned char) (len gt 1 cb64[ ((in[1] amp 0x0f) ltlt 2) | ((in[2] amp 0xc0) gtgt 6) ] out[3] = (unsigned char) (len gt 2 cb64[ in[2] amp 0x3f ] =) void encode( FILE infile FILE outfile ) unsigned char in[3] out[4] int i len blocksout = 0 while( feof( infile ) ) len = 0 for( i = 0 i lt 3 i++ ) in[i] = (unsigned char) getc( infile ) if( feof( infile ) ) len++ else in[i] = 0 if( len ) encodeblock( in out len ) for( i = 0 i lt 4 i++ ) putc( out[i] outfile ) blocksout++ if( blocksout gt= (1004) || feof( infile ) ) if( blocksout ) fprintf( outfile rn ) blocksout = 0 void decodeblock( unsigned char in[4] unsigned char out[3] )

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1112

54555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128

129

void decodeblock( unsigned char in[4] unsigned char out[3] ) out[ 0 ] = (unsigned char ) (in[0] ltlt 2 | in[1] gtgt 4) out[ 1 ] = (unsigned char ) (in[1] ltlt 4 | in[2] gtgt 2) out[ 2 ] = (unsigned char ) (((in[2] ltlt 6) amp 0xc0) | in[3]) void decode( FILE infile FILE outfile ) unsigned char in[4] out[3] v int i len while( feof( infile ) ) for( len = 0 i = 0 i lt 4 ampamp feof( infile ) i++ ) v = 0 while( feof( infile ) ampamp v == 0 ) v = (unsigned char) getc( infile ) v = (unsigned char) ((v lt 43 || v gt 122) 0 cd64[ v ‐ 43 ]) if( v ) v = (unsigned char) ((v == $) 0 v ‐ 61) if( feof( infile ) ) len++ if( v ) in[ i ] = (unsigned char) (v ‐ 1) else in[i] = 0 if( len ) decodeblock( in out ) for( i = 0 i lt len ‐ 1 i++ ) putc( out[i] outfile ) int b64( int opt char infilename char outfilename ) FILE infile int retcode = 0 if( infilename ) infile = stdin else infile = fopen( infilename rb ) FILE outfile if( outfilename ) outfile = stdout else outfile = fopen( outfilename wb ) if( opt == e ) encode( infile outfile) else decode( infile outfile ) if( outfile = stdout ) if( fclose( outfile ) = 0 ) retcode = 1 if( infile = stdin ) fclose( infile ) return( retcode )

endif

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1212

Arquivo base64h

Arquivo fonte que contem os cabeccedilalhos e os prototipos das funccedilotildees usadas no arquivo base64c

Caso tenha alguma duacutevida a respeito do coacutedigo fonte ou do seu funcionamento entre em contato Parafazer o download do coacutedigo fonte CLICK AQUI(httpwww4sharedcomfileJR_OpFoRSFTPhtml]SFTPzip) Para fazer download do documento deRequisitos desse protocolo CLICK AQUI(httpwww4sharedcomdocumentNFyDYL7tFernando_Krein_Pinheirohtml) esse documento foifeito como preacute requisito para a aprovaccedilatildeo da Disciplina de Engenharia de Software I na qual eureaproveitei o software da disciplina de Redes de Computadores I

por ferpinheiro bull Postado em Redes

Blog no WordPresscom | O tema iTheme2

129 endif

12345678

ifndef BASE64_Hdefine BASE64_Hinclude ltstdiohgt extern void encode( FILE FILE )extern void decode( FILE FILE ) endif

You May Like

1 25 PhotosThat That Prove The World Is A Liea month ago answerscom AnswersAnswerscom (sponsored)

Sobre estes anuacutencios (httpswordpresscomabout-these-ads)

Page 4: Protocolo Para Transmissão de Arquivos via Porta Serial

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 412

3536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109

110

case 1 int tamanho=0indice=0tipo=0status=0aux=0cont=0 pacote p = (pacote) malloc (sizeof(pacote)) strcpy(nome_arqNome_do_seu_arquivorar) char ptr_arq = abre_arq(nome_arq) p = monta_pacote(indiceptr_arq1nome_arq) tamanho = p‐gttamanho pacote_to_string(pbuffer) status = escrever_porta(buffer) bzero(buffer TAM_DADOS) while(cont = 5) sleep(1) status = ler_porta(buffer) if(status gt 0) cont=5 else printf(Sem comunicaccedilatildeon) cont++ if(teste_ACK(p)) printf(Chegou ACK) else printf(Manda novamente) break case 2 int tamanho=0indice=0tipo=0status=0aux=0cont=0 pacote p = (pacote) malloc (sizeof(pacote)) do while(cont = 5) sleep(3) status = ler_porta(buffer) if(status gt 0) cont=5 else printf(Sem comunicaccedilatildeon) cont++ p = string_to_pacote(buffer) if(testa_crc(pbuffer)) if(p‐gttipo == 1) tamanho = p‐gttamanho ptr_arq = aloca_mem(tamanho) strcpy(nome_arqp‐gtdados) indice=0 else if(p‐gttipo == 2 ) for(aux=0aux lt 100aux++indice++) ptr_arq[indice] = p‐gtdados[aux] sleep(2) p = monta_pacote(indiceptr_arq3nome_arq) pacote_to_string(pbuffer)

status = escrever_porta(buffer)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 512

Arquivo serialc

Esse fonte eacute responsaacutevel por toda configuraccedilatildeo da porta serial caso tenha alguma duvida consulte osarquivos de configuraccedilatildeo da porta serial no seu Linux

110111112113114115116117118119120

status = escrever_porta(buffer) printf(nndindice) while(indice lt tamanho) escreve_arquivo(ptr_arqnome_arqtamanho) break return 0

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758

ifndef SERIAL_Cdefine SERIAL_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude ltunistdhgtinclude ltshadowhgtinclude ltsystypeshgtinclude ltsysstathgtinclude ltfcntlhgtinclude lttermioshgtinclude lterrnohgtinclude declaracoeshinclude base64h int abrir_porta() int fd fd = open(devttyS0 O_RDWR | O_NOCTTY | O_NDELAY) if (fd == ‐1) printf(nErro em devttyS0n) return ‐1 else fcntl(fd F_SETFL 0) return (fd) void configure_port(int fd) struct termios arq_novo tcgetattr(fd amparq_novo) cfsetispeed(amparq_novo B19200) seta taxa de transmiccedilatildeo cfsetospeed(amparq_novo B19200) seta de recepccedilatildeo arq_novoc_cflag |= (CLOCAL | CREAD) arq_novoc_cflag amp= ~PARENB sem paridade arq_novoc_cflag amp= ~CSTOPB arq_novoc_cflag amp= ~CSIZE arq_novoc_cflag |= CS8 arq_novoc_cflag amp= ~CRTSCTS desabilita controle de fluxo arq_novoc_lflag amp= ~(ICANON | ECHO | ECHOE | ISIG) raw input sem mexer nos chars arq_novoc_oflag amp= ~OPOST raw output arq_novoc_iflag amp= ~IXOFF arq_novoc_iflag amp= ~IXON arq_novoc_cc[VMIN] = TAM_DADOS+(sizeof(int)3) arq_novoc_cc[VTIME] = 0 tcsetattr(fd TCSANOW amparq_novo) int escrever_porta(char buffer) int fd fd=abrir_porta() configure_port(fd) tcflush(fd TCOFLUSH)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 612

Arquivo serialh

Arquivo fonte que contem os cabeccedilalhos e os protoacutetipos das funccedilotildees usadas no serialc

Arquivo definicoesc

Arquivo fonte responsaacutevel pela montagem dos pacotes de dados manipulaccedilatildeo do arquivo calculo doCRC e ACK

585960616263646566676869707172737475767778798081

tcflush(fd TCOFLUSH) ssize_t saida saida = write(fdbufferTAM_DADOS+(sizeof(int)3)) return saida int ler_porta(char buffer) int fd fd=abrir_porta() configure_port(fd) ssize_t entrada fcntl(fd F_SETFL FNDELAY) entrada = read(fdbufferTAM_DADOS+(sizeof(int)3)) tcflush(fd TCIFLUSH) return entrada void fechar_porta() int fd close(fd)endif

1234567891011121314151617181920

ifndef SERIAL_Hdefine SERIAL_Hinclude ltstdiohgt externint abrir_porta() externvoid configure_port(int) externint escrever_porta(char) externint ler_porta(char ) externvoid fechar_porta() endif

1234567891011121314151617181920

ifndef DEFINICOES_Cdefine DEFINICOES_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude declaracoeshinclude serialhinclude base64h char abre_arq(char nome_arq) unsigned char caracter FILE entrada FILE saida int aux entrada = fopen (nome_arq r+b) if(entrada) printf(Natildeo foi possiacutevel abrir arquivos nome_arq)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 712

202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394

95

saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) encode(entradasaida) fclose(saida) fclose(entrada) saida = fopen (base6464 r+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) int posicao_inicial = ftell(saida) fseek(saida 0 SEEK_END) int tamanho = ftell(saida) fseek(saida posicao_inicial SEEK_SET) char ptr = aloca_mem(tamanho) if (saida == NULL) printf(Natildeo foi possiacutevel criar dependecircncias) else int aux=0 while(feof(saida)) caracter = getc(saida) if(feof(saida)) ptr[aux] = caracter aux++ fclose(saida) remove(base6464) return ptr pacote monta_pacote(int indicechar ptr_arqint tipochar nome_arq) int aux=0 pacote p = (pacote) malloc (sizeof(pacote)) if (tipo == 1) p‐gttipo = 1 p‐gttamanho = strlen(ptr_arq) strcpy(p‐gtdadosnome_arq) return p else if (tipo == 2) p‐gttipo=2 for(aux=0aux lt TAM_DADOS aux++indice++) p‐gtdados[aux]=ptr_arq[indice] p‐gttamanho = sizeof(p‐gtdados) return p else if (tipo == 3) p‐gttipo=3 p‐gtdados[0] = a p‐gttamanho = sizeof(p‐gtdados) return p

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 812

9596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169

170

char aloca_mem(int tamanho) char ptr = (char)malloc (tamanho sizeof(char)) if(ptr) printf(Natildeo foi possiacutevel alocar memoacuteria) else return ptr short int CRC( char vetor[TAM_DADOS+(sizeof(int)2)] int tam) short int crc = 0xffff 65535 int j i for (j = 0 j lt tam j++) crc = crc ^ vetor[j] for (i = 0 i lt 8 i++) crc = crc gtgt 1 if ((crc amp 1) == 1) crc = crc ^ 0xA00140961 return crcvoid pacote_to_string(pacote pchar buffer) int crc=0 memcpy(buffer ampp‐gttipo sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gttamanho sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gtdados TAM_DADOS) buffer += TAM_DADOS p‐gtcrc = CRC(buffer 108) memcpy(buffer ampp‐gtcrc sizeof(short int)) printf(nmandou) printf(ntipo dp‐gttipo) pacote string_to_pacote(char buffer) pacote p = (pacote) malloc (sizeof(pacote)) memcpy(ampp‐gttipo buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gttamanho buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gtdados buffer TAM_DADOS) buffer += TAM_DADOS memcpy(ampp‐gtcrc buffer sizeof(short int)) printf(n leu) printf(ntipo dp‐gttipo) return p int testa_crc(pacote pchar buffer) short int crc=0 buffer += 108 memcpy(ampcrc buffer sizeof(short int)) if(crc == p‐gtcrc) return 0 else return ‐1 int teste_ACK(pacote p)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 912

Arquivo declaracoesh

Arquivo fonte que contem os cabeccedilalhos e protoacutetipos das funccedilotildees usadas no definicoesc

170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214

if (p‐gttipo == 3 ampamp p‐gtdados[0] == a) return 0 else return ‐1 int escreve_arquivo(char ptr_arqchar nome_arqint tamanho) FILE saida FILE arquivo int aux saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 fprintf(saidasptr_arq) fclose(saida) saida = fopen(base6464r+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 arquivo = fopen(nome_arqw+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 decode(saidaarquivo) fclose(saida)fclose(arquivo)remove(base6464)return 0 endif

12345678910111213141516171819202122232425

26

ifndef DECLARCOES_Hdefine DECLARACOES_Hdefine bzero(blen) (memset((b) 0 (len)) (void) 0)define TAM_DADOS 100include ltstdiohgt typedef struct pacote unsigned int tipo unsigned int tamanho short int crc char dados[TAM_DADOS]pacote externshort int calcula_CRC( char int) externchar aloca_mem(int) externchar abre_arq(char) externint escreve_arquivo(char char int)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1012

Arquivo base64c

Arquivo fonte responsaacutevel pela codificaccedilatildeo e descodificaccedilatildeo na base 64 base padratildeo para codificaccedilatildeo decaracteres para envio pela porta serial Essa base tambeacutem eacute utilizada pelos emails

26272829303132333435363738394041

externvoid pacote_to_string(pacotechar) externpacote string_to_pacote(char) externpacote monta_pacote(intchar intchar) externint testa_crc(pacotechar) externint teste_ACK(pacote )endif

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

ifndef BASE64_Cdefine BASE64_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude base64hdefine B64_DEF_LINE_SIZE 72define B64_MIN_LINE_SIZE 4define THIS_OPT(ac av) (ac gt 1 av[1][0] == ‐ av[1][1] 0 0) static const char cb64[]=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+static const char cd64[]=|$$$rstuvwxyz$$$$$$$gtABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[]^_`abcdefghijklmnopq void encodeblock( unsigned char in[3] unsigned char out[4] int len ) out[0] = cb64[ in[0] gtgt 2 ] out[1] = cb64[ ((in[0] amp 0x03) ltlt 4) | ((in[1] amp 0xf0) gtgt 4) ] out[2] = (unsigned char) (len gt 1 cb64[ ((in[1] amp 0x0f) ltlt 2) | ((in[2] amp 0xc0) gtgt 6) ] out[3] = (unsigned char) (len gt 2 cb64[ in[2] amp 0x3f ] =) void encode( FILE infile FILE outfile ) unsigned char in[3] out[4] int i len blocksout = 0 while( feof( infile ) ) len = 0 for( i = 0 i lt 3 i++ ) in[i] = (unsigned char) getc( infile ) if( feof( infile ) ) len++ else in[i] = 0 if( len ) encodeblock( in out len ) for( i = 0 i lt 4 i++ ) putc( out[i] outfile ) blocksout++ if( blocksout gt= (1004) || feof( infile ) ) if( blocksout ) fprintf( outfile rn ) blocksout = 0 void decodeblock( unsigned char in[4] unsigned char out[3] )

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1112

54555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128

129

void decodeblock( unsigned char in[4] unsigned char out[3] ) out[ 0 ] = (unsigned char ) (in[0] ltlt 2 | in[1] gtgt 4) out[ 1 ] = (unsigned char ) (in[1] ltlt 4 | in[2] gtgt 2) out[ 2 ] = (unsigned char ) (((in[2] ltlt 6) amp 0xc0) | in[3]) void decode( FILE infile FILE outfile ) unsigned char in[4] out[3] v int i len while( feof( infile ) ) for( len = 0 i = 0 i lt 4 ampamp feof( infile ) i++ ) v = 0 while( feof( infile ) ampamp v == 0 ) v = (unsigned char) getc( infile ) v = (unsigned char) ((v lt 43 || v gt 122) 0 cd64[ v ‐ 43 ]) if( v ) v = (unsigned char) ((v == $) 0 v ‐ 61) if( feof( infile ) ) len++ if( v ) in[ i ] = (unsigned char) (v ‐ 1) else in[i] = 0 if( len ) decodeblock( in out ) for( i = 0 i lt len ‐ 1 i++ ) putc( out[i] outfile ) int b64( int opt char infilename char outfilename ) FILE infile int retcode = 0 if( infilename ) infile = stdin else infile = fopen( infilename rb ) FILE outfile if( outfilename ) outfile = stdout else outfile = fopen( outfilename wb ) if( opt == e ) encode( infile outfile) else decode( infile outfile ) if( outfile = stdout ) if( fclose( outfile ) = 0 ) retcode = 1 if( infile = stdin ) fclose( infile ) return( retcode )

endif

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1212

Arquivo base64h

Arquivo fonte que contem os cabeccedilalhos e os prototipos das funccedilotildees usadas no arquivo base64c

Caso tenha alguma duacutevida a respeito do coacutedigo fonte ou do seu funcionamento entre em contato Parafazer o download do coacutedigo fonte CLICK AQUI(httpwww4sharedcomfileJR_OpFoRSFTPhtml]SFTPzip) Para fazer download do documento deRequisitos desse protocolo CLICK AQUI(httpwww4sharedcomdocumentNFyDYL7tFernando_Krein_Pinheirohtml) esse documento foifeito como preacute requisito para a aprovaccedilatildeo da Disciplina de Engenharia de Software I na qual eureaproveitei o software da disciplina de Redes de Computadores I

por ferpinheiro bull Postado em Redes

Blog no WordPresscom | O tema iTheme2

129 endif

12345678

ifndef BASE64_Hdefine BASE64_Hinclude ltstdiohgt extern void encode( FILE FILE )extern void decode( FILE FILE ) endif

You May Like

1 25 PhotosThat That Prove The World Is A Liea month ago answerscom AnswersAnswerscom (sponsored)

Sobre estes anuacutencios (httpswordpresscomabout-these-ads)

Page 5: Protocolo Para Transmissão de Arquivos via Porta Serial

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 512

Arquivo serialc

Esse fonte eacute responsaacutevel por toda configuraccedilatildeo da porta serial caso tenha alguma duvida consulte osarquivos de configuraccedilatildeo da porta serial no seu Linux

110111112113114115116117118119120

status = escrever_porta(buffer) printf(nndindice) while(indice lt tamanho) escreve_arquivo(ptr_arqnome_arqtamanho) break return 0

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758

ifndef SERIAL_Cdefine SERIAL_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude ltunistdhgtinclude ltshadowhgtinclude ltsystypeshgtinclude ltsysstathgtinclude ltfcntlhgtinclude lttermioshgtinclude lterrnohgtinclude declaracoeshinclude base64h int abrir_porta() int fd fd = open(devttyS0 O_RDWR | O_NOCTTY | O_NDELAY) if (fd == ‐1) printf(nErro em devttyS0n) return ‐1 else fcntl(fd F_SETFL 0) return (fd) void configure_port(int fd) struct termios arq_novo tcgetattr(fd amparq_novo) cfsetispeed(amparq_novo B19200) seta taxa de transmiccedilatildeo cfsetospeed(amparq_novo B19200) seta de recepccedilatildeo arq_novoc_cflag |= (CLOCAL | CREAD) arq_novoc_cflag amp= ~PARENB sem paridade arq_novoc_cflag amp= ~CSTOPB arq_novoc_cflag amp= ~CSIZE arq_novoc_cflag |= CS8 arq_novoc_cflag amp= ~CRTSCTS desabilita controle de fluxo arq_novoc_lflag amp= ~(ICANON | ECHO | ECHOE | ISIG) raw input sem mexer nos chars arq_novoc_oflag amp= ~OPOST raw output arq_novoc_iflag amp= ~IXOFF arq_novoc_iflag amp= ~IXON arq_novoc_cc[VMIN] = TAM_DADOS+(sizeof(int)3) arq_novoc_cc[VTIME] = 0 tcsetattr(fd TCSANOW amparq_novo) int escrever_porta(char buffer) int fd fd=abrir_porta() configure_port(fd) tcflush(fd TCOFLUSH)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 612

Arquivo serialh

Arquivo fonte que contem os cabeccedilalhos e os protoacutetipos das funccedilotildees usadas no serialc

Arquivo definicoesc

Arquivo fonte responsaacutevel pela montagem dos pacotes de dados manipulaccedilatildeo do arquivo calculo doCRC e ACK

585960616263646566676869707172737475767778798081

tcflush(fd TCOFLUSH) ssize_t saida saida = write(fdbufferTAM_DADOS+(sizeof(int)3)) return saida int ler_porta(char buffer) int fd fd=abrir_porta() configure_port(fd) ssize_t entrada fcntl(fd F_SETFL FNDELAY) entrada = read(fdbufferTAM_DADOS+(sizeof(int)3)) tcflush(fd TCIFLUSH) return entrada void fechar_porta() int fd close(fd)endif

1234567891011121314151617181920

ifndef SERIAL_Hdefine SERIAL_Hinclude ltstdiohgt externint abrir_porta() externvoid configure_port(int) externint escrever_porta(char) externint ler_porta(char ) externvoid fechar_porta() endif

1234567891011121314151617181920

ifndef DEFINICOES_Cdefine DEFINICOES_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude declaracoeshinclude serialhinclude base64h char abre_arq(char nome_arq) unsigned char caracter FILE entrada FILE saida int aux entrada = fopen (nome_arq r+b) if(entrada) printf(Natildeo foi possiacutevel abrir arquivos nome_arq)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 712

202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394

95

saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) encode(entradasaida) fclose(saida) fclose(entrada) saida = fopen (base6464 r+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) int posicao_inicial = ftell(saida) fseek(saida 0 SEEK_END) int tamanho = ftell(saida) fseek(saida posicao_inicial SEEK_SET) char ptr = aloca_mem(tamanho) if (saida == NULL) printf(Natildeo foi possiacutevel criar dependecircncias) else int aux=0 while(feof(saida)) caracter = getc(saida) if(feof(saida)) ptr[aux] = caracter aux++ fclose(saida) remove(base6464) return ptr pacote monta_pacote(int indicechar ptr_arqint tipochar nome_arq) int aux=0 pacote p = (pacote) malloc (sizeof(pacote)) if (tipo == 1) p‐gttipo = 1 p‐gttamanho = strlen(ptr_arq) strcpy(p‐gtdadosnome_arq) return p else if (tipo == 2) p‐gttipo=2 for(aux=0aux lt TAM_DADOS aux++indice++) p‐gtdados[aux]=ptr_arq[indice] p‐gttamanho = sizeof(p‐gtdados) return p else if (tipo == 3) p‐gttipo=3 p‐gtdados[0] = a p‐gttamanho = sizeof(p‐gtdados) return p

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 812

9596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169

170

char aloca_mem(int tamanho) char ptr = (char)malloc (tamanho sizeof(char)) if(ptr) printf(Natildeo foi possiacutevel alocar memoacuteria) else return ptr short int CRC( char vetor[TAM_DADOS+(sizeof(int)2)] int tam) short int crc = 0xffff 65535 int j i for (j = 0 j lt tam j++) crc = crc ^ vetor[j] for (i = 0 i lt 8 i++) crc = crc gtgt 1 if ((crc amp 1) == 1) crc = crc ^ 0xA00140961 return crcvoid pacote_to_string(pacote pchar buffer) int crc=0 memcpy(buffer ampp‐gttipo sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gttamanho sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gtdados TAM_DADOS) buffer += TAM_DADOS p‐gtcrc = CRC(buffer 108) memcpy(buffer ampp‐gtcrc sizeof(short int)) printf(nmandou) printf(ntipo dp‐gttipo) pacote string_to_pacote(char buffer) pacote p = (pacote) malloc (sizeof(pacote)) memcpy(ampp‐gttipo buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gttamanho buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gtdados buffer TAM_DADOS) buffer += TAM_DADOS memcpy(ampp‐gtcrc buffer sizeof(short int)) printf(n leu) printf(ntipo dp‐gttipo) return p int testa_crc(pacote pchar buffer) short int crc=0 buffer += 108 memcpy(ampcrc buffer sizeof(short int)) if(crc == p‐gtcrc) return 0 else return ‐1 int teste_ACK(pacote p)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 912

Arquivo declaracoesh

Arquivo fonte que contem os cabeccedilalhos e protoacutetipos das funccedilotildees usadas no definicoesc

170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214

if (p‐gttipo == 3 ampamp p‐gtdados[0] == a) return 0 else return ‐1 int escreve_arquivo(char ptr_arqchar nome_arqint tamanho) FILE saida FILE arquivo int aux saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 fprintf(saidasptr_arq) fclose(saida) saida = fopen(base6464r+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 arquivo = fopen(nome_arqw+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 decode(saidaarquivo) fclose(saida)fclose(arquivo)remove(base6464)return 0 endif

12345678910111213141516171819202122232425

26

ifndef DECLARCOES_Hdefine DECLARACOES_Hdefine bzero(blen) (memset((b) 0 (len)) (void) 0)define TAM_DADOS 100include ltstdiohgt typedef struct pacote unsigned int tipo unsigned int tamanho short int crc char dados[TAM_DADOS]pacote externshort int calcula_CRC( char int) externchar aloca_mem(int) externchar abre_arq(char) externint escreve_arquivo(char char int)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1012

Arquivo base64c

Arquivo fonte responsaacutevel pela codificaccedilatildeo e descodificaccedilatildeo na base 64 base padratildeo para codificaccedilatildeo decaracteres para envio pela porta serial Essa base tambeacutem eacute utilizada pelos emails

26272829303132333435363738394041

externvoid pacote_to_string(pacotechar) externpacote string_to_pacote(char) externpacote monta_pacote(intchar intchar) externint testa_crc(pacotechar) externint teste_ACK(pacote )endif

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

ifndef BASE64_Cdefine BASE64_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude base64hdefine B64_DEF_LINE_SIZE 72define B64_MIN_LINE_SIZE 4define THIS_OPT(ac av) (ac gt 1 av[1][0] == ‐ av[1][1] 0 0) static const char cb64[]=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+static const char cd64[]=|$$$rstuvwxyz$$$$$$$gtABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[]^_`abcdefghijklmnopq void encodeblock( unsigned char in[3] unsigned char out[4] int len ) out[0] = cb64[ in[0] gtgt 2 ] out[1] = cb64[ ((in[0] amp 0x03) ltlt 4) | ((in[1] amp 0xf0) gtgt 4) ] out[2] = (unsigned char) (len gt 1 cb64[ ((in[1] amp 0x0f) ltlt 2) | ((in[2] amp 0xc0) gtgt 6) ] out[3] = (unsigned char) (len gt 2 cb64[ in[2] amp 0x3f ] =) void encode( FILE infile FILE outfile ) unsigned char in[3] out[4] int i len blocksout = 0 while( feof( infile ) ) len = 0 for( i = 0 i lt 3 i++ ) in[i] = (unsigned char) getc( infile ) if( feof( infile ) ) len++ else in[i] = 0 if( len ) encodeblock( in out len ) for( i = 0 i lt 4 i++ ) putc( out[i] outfile ) blocksout++ if( blocksout gt= (1004) || feof( infile ) ) if( blocksout ) fprintf( outfile rn ) blocksout = 0 void decodeblock( unsigned char in[4] unsigned char out[3] )

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1112

54555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128

129

void decodeblock( unsigned char in[4] unsigned char out[3] ) out[ 0 ] = (unsigned char ) (in[0] ltlt 2 | in[1] gtgt 4) out[ 1 ] = (unsigned char ) (in[1] ltlt 4 | in[2] gtgt 2) out[ 2 ] = (unsigned char ) (((in[2] ltlt 6) amp 0xc0) | in[3]) void decode( FILE infile FILE outfile ) unsigned char in[4] out[3] v int i len while( feof( infile ) ) for( len = 0 i = 0 i lt 4 ampamp feof( infile ) i++ ) v = 0 while( feof( infile ) ampamp v == 0 ) v = (unsigned char) getc( infile ) v = (unsigned char) ((v lt 43 || v gt 122) 0 cd64[ v ‐ 43 ]) if( v ) v = (unsigned char) ((v == $) 0 v ‐ 61) if( feof( infile ) ) len++ if( v ) in[ i ] = (unsigned char) (v ‐ 1) else in[i] = 0 if( len ) decodeblock( in out ) for( i = 0 i lt len ‐ 1 i++ ) putc( out[i] outfile ) int b64( int opt char infilename char outfilename ) FILE infile int retcode = 0 if( infilename ) infile = stdin else infile = fopen( infilename rb ) FILE outfile if( outfilename ) outfile = stdout else outfile = fopen( outfilename wb ) if( opt == e ) encode( infile outfile) else decode( infile outfile ) if( outfile = stdout ) if( fclose( outfile ) = 0 ) retcode = 1 if( infile = stdin ) fclose( infile ) return( retcode )

endif

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1212

Arquivo base64h

Arquivo fonte que contem os cabeccedilalhos e os prototipos das funccedilotildees usadas no arquivo base64c

Caso tenha alguma duacutevida a respeito do coacutedigo fonte ou do seu funcionamento entre em contato Parafazer o download do coacutedigo fonte CLICK AQUI(httpwww4sharedcomfileJR_OpFoRSFTPhtml]SFTPzip) Para fazer download do documento deRequisitos desse protocolo CLICK AQUI(httpwww4sharedcomdocumentNFyDYL7tFernando_Krein_Pinheirohtml) esse documento foifeito como preacute requisito para a aprovaccedilatildeo da Disciplina de Engenharia de Software I na qual eureaproveitei o software da disciplina de Redes de Computadores I

por ferpinheiro bull Postado em Redes

Blog no WordPresscom | O tema iTheme2

129 endif

12345678

ifndef BASE64_Hdefine BASE64_Hinclude ltstdiohgt extern void encode( FILE FILE )extern void decode( FILE FILE ) endif

You May Like

1 25 PhotosThat That Prove The World Is A Liea month ago answerscom AnswersAnswerscom (sponsored)

Sobre estes anuacutencios (httpswordpresscomabout-these-ads)

Page 6: Protocolo Para Transmissão de Arquivos via Porta Serial

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 612

Arquivo serialh

Arquivo fonte que contem os cabeccedilalhos e os protoacutetipos das funccedilotildees usadas no serialc

Arquivo definicoesc

Arquivo fonte responsaacutevel pela montagem dos pacotes de dados manipulaccedilatildeo do arquivo calculo doCRC e ACK

585960616263646566676869707172737475767778798081

tcflush(fd TCOFLUSH) ssize_t saida saida = write(fdbufferTAM_DADOS+(sizeof(int)3)) return saida int ler_porta(char buffer) int fd fd=abrir_porta() configure_port(fd) ssize_t entrada fcntl(fd F_SETFL FNDELAY) entrada = read(fdbufferTAM_DADOS+(sizeof(int)3)) tcflush(fd TCIFLUSH) return entrada void fechar_porta() int fd close(fd)endif

1234567891011121314151617181920

ifndef SERIAL_Hdefine SERIAL_Hinclude ltstdiohgt externint abrir_porta() externvoid configure_port(int) externint escrever_porta(char) externint ler_porta(char ) externvoid fechar_porta() endif

1234567891011121314151617181920

ifndef DEFINICOES_Cdefine DEFINICOES_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude declaracoeshinclude serialhinclude base64h char abre_arq(char nome_arq) unsigned char caracter FILE entrada FILE saida int aux entrada = fopen (nome_arq r+b) if(entrada) printf(Natildeo foi possiacutevel abrir arquivos nome_arq)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 712

202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394

95

saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) encode(entradasaida) fclose(saida) fclose(entrada) saida = fopen (base6464 r+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) int posicao_inicial = ftell(saida) fseek(saida 0 SEEK_END) int tamanho = ftell(saida) fseek(saida posicao_inicial SEEK_SET) char ptr = aloca_mem(tamanho) if (saida == NULL) printf(Natildeo foi possiacutevel criar dependecircncias) else int aux=0 while(feof(saida)) caracter = getc(saida) if(feof(saida)) ptr[aux] = caracter aux++ fclose(saida) remove(base6464) return ptr pacote monta_pacote(int indicechar ptr_arqint tipochar nome_arq) int aux=0 pacote p = (pacote) malloc (sizeof(pacote)) if (tipo == 1) p‐gttipo = 1 p‐gttamanho = strlen(ptr_arq) strcpy(p‐gtdadosnome_arq) return p else if (tipo == 2) p‐gttipo=2 for(aux=0aux lt TAM_DADOS aux++indice++) p‐gtdados[aux]=ptr_arq[indice] p‐gttamanho = sizeof(p‐gtdados) return p else if (tipo == 3) p‐gttipo=3 p‐gtdados[0] = a p‐gttamanho = sizeof(p‐gtdados) return p

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 812

9596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169

170

char aloca_mem(int tamanho) char ptr = (char)malloc (tamanho sizeof(char)) if(ptr) printf(Natildeo foi possiacutevel alocar memoacuteria) else return ptr short int CRC( char vetor[TAM_DADOS+(sizeof(int)2)] int tam) short int crc = 0xffff 65535 int j i for (j = 0 j lt tam j++) crc = crc ^ vetor[j] for (i = 0 i lt 8 i++) crc = crc gtgt 1 if ((crc amp 1) == 1) crc = crc ^ 0xA00140961 return crcvoid pacote_to_string(pacote pchar buffer) int crc=0 memcpy(buffer ampp‐gttipo sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gttamanho sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gtdados TAM_DADOS) buffer += TAM_DADOS p‐gtcrc = CRC(buffer 108) memcpy(buffer ampp‐gtcrc sizeof(short int)) printf(nmandou) printf(ntipo dp‐gttipo) pacote string_to_pacote(char buffer) pacote p = (pacote) malloc (sizeof(pacote)) memcpy(ampp‐gttipo buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gttamanho buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gtdados buffer TAM_DADOS) buffer += TAM_DADOS memcpy(ampp‐gtcrc buffer sizeof(short int)) printf(n leu) printf(ntipo dp‐gttipo) return p int testa_crc(pacote pchar buffer) short int crc=0 buffer += 108 memcpy(ampcrc buffer sizeof(short int)) if(crc == p‐gtcrc) return 0 else return ‐1 int teste_ACK(pacote p)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 912

Arquivo declaracoesh

Arquivo fonte que contem os cabeccedilalhos e protoacutetipos das funccedilotildees usadas no definicoesc

170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214

if (p‐gttipo == 3 ampamp p‐gtdados[0] == a) return 0 else return ‐1 int escreve_arquivo(char ptr_arqchar nome_arqint tamanho) FILE saida FILE arquivo int aux saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 fprintf(saidasptr_arq) fclose(saida) saida = fopen(base6464r+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 arquivo = fopen(nome_arqw+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 decode(saidaarquivo) fclose(saida)fclose(arquivo)remove(base6464)return 0 endif

12345678910111213141516171819202122232425

26

ifndef DECLARCOES_Hdefine DECLARACOES_Hdefine bzero(blen) (memset((b) 0 (len)) (void) 0)define TAM_DADOS 100include ltstdiohgt typedef struct pacote unsigned int tipo unsigned int tamanho short int crc char dados[TAM_DADOS]pacote externshort int calcula_CRC( char int) externchar aloca_mem(int) externchar abre_arq(char) externint escreve_arquivo(char char int)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1012

Arquivo base64c

Arquivo fonte responsaacutevel pela codificaccedilatildeo e descodificaccedilatildeo na base 64 base padratildeo para codificaccedilatildeo decaracteres para envio pela porta serial Essa base tambeacutem eacute utilizada pelos emails

26272829303132333435363738394041

externvoid pacote_to_string(pacotechar) externpacote string_to_pacote(char) externpacote monta_pacote(intchar intchar) externint testa_crc(pacotechar) externint teste_ACK(pacote )endif

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

ifndef BASE64_Cdefine BASE64_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude base64hdefine B64_DEF_LINE_SIZE 72define B64_MIN_LINE_SIZE 4define THIS_OPT(ac av) (ac gt 1 av[1][0] == ‐ av[1][1] 0 0) static const char cb64[]=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+static const char cd64[]=|$$$rstuvwxyz$$$$$$$gtABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[]^_`abcdefghijklmnopq void encodeblock( unsigned char in[3] unsigned char out[4] int len ) out[0] = cb64[ in[0] gtgt 2 ] out[1] = cb64[ ((in[0] amp 0x03) ltlt 4) | ((in[1] amp 0xf0) gtgt 4) ] out[2] = (unsigned char) (len gt 1 cb64[ ((in[1] amp 0x0f) ltlt 2) | ((in[2] amp 0xc0) gtgt 6) ] out[3] = (unsigned char) (len gt 2 cb64[ in[2] amp 0x3f ] =) void encode( FILE infile FILE outfile ) unsigned char in[3] out[4] int i len blocksout = 0 while( feof( infile ) ) len = 0 for( i = 0 i lt 3 i++ ) in[i] = (unsigned char) getc( infile ) if( feof( infile ) ) len++ else in[i] = 0 if( len ) encodeblock( in out len ) for( i = 0 i lt 4 i++ ) putc( out[i] outfile ) blocksout++ if( blocksout gt= (1004) || feof( infile ) ) if( blocksout ) fprintf( outfile rn ) blocksout = 0 void decodeblock( unsigned char in[4] unsigned char out[3] )

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1112

54555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128

129

void decodeblock( unsigned char in[4] unsigned char out[3] ) out[ 0 ] = (unsigned char ) (in[0] ltlt 2 | in[1] gtgt 4) out[ 1 ] = (unsigned char ) (in[1] ltlt 4 | in[2] gtgt 2) out[ 2 ] = (unsigned char ) (((in[2] ltlt 6) amp 0xc0) | in[3]) void decode( FILE infile FILE outfile ) unsigned char in[4] out[3] v int i len while( feof( infile ) ) for( len = 0 i = 0 i lt 4 ampamp feof( infile ) i++ ) v = 0 while( feof( infile ) ampamp v == 0 ) v = (unsigned char) getc( infile ) v = (unsigned char) ((v lt 43 || v gt 122) 0 cd64[ v ‐ 43 ]) if( v ) v = (unsigned char) ((v == $) 0 v ‐ 61) if( feof( infile ) ) len++ if( v ) in[ i ] = (unsigned char) (v ‐ 1) else in[i] = 0 if( len ) decodeblock( in out ) for( i = 0 i lt len ‐ 1 i++ ) putc( out[i] outfile ) int b64( int opt char infilename char outfilename ) FILE infile int retcode = 0 if( infilename ) infile = stdin else infile = fopen( infilename rb ) FILE outfile if( outfilename ) outfile = stdout else outfile = fopen( outfilename wb ) if( opt == e ) encode( infile outfile) else decode( infile outfile ) if( outfile = stdout ) if( fclose( outfile ) = 0 ) retcode = 1 if( infile = stdin ) fclose( infile ) return( retcode )

endif

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1212

Arquivo base64h

Arquivo fonte que contem os cabeccedilalhos e os prototipos das funccedilotildees usadas no arquivo base64c

Caso tenha alguma duacutevida a respeito do coacutedigo fonte ou do seu funcionamento entre em contato Parafazer o download do coacutedigo fonte CLICK AQUI(httpwww4sharedcomfileJR_OpFoRSFTPhtml]SFTPzip) Para fazer download do documento deRequisitos desse protocolo CLICK AQUI(httpwww4sharedcomdocumentNFyDYL7tFernando_Krein_Pinheirohtml) esse documento foifeito como preacute requisito para a aprovaccedilatildeo da Disciplina de Engenharia de Software I na qual eureaproveitei o software da disciplina de Redes de Computadores I

por ferpinheiro bull Postado em Redes

Blog no WordPresscom | O tema iTheme2

129 endif

12345678

ifndef BASE64_Hdefine BASE64_Hinclude ltstdiohgt extern void encode( FILE FILE )extern void decode( FILE FILE ) endif

You May Like

1 25 PhotosThat That Prove The World Is A Liea month ago answerscom AnswersAnswerscom (sponsored)

Sobre estes anuacutencios (httpswordpresscomabout-these-ads)

Page 7: Protocolo Para Transmissão de Arquivos via Porta Serial

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 712

202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394

95

saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) encode(entradasaida) fclose(saida) fclose(entrada) saida = fopen (base6464 r+b) if(saida) printf(Natildeo foi possiacutevel criar dependecircncias) int posicao_inicial = ftell(saida) fseek(saida 0 SEEK_END) int tamanho = ftell(saida) fseek(saida posicao_inicial SEEK_SET) char ptr = aloca_mem(tamanho) if (saida == NULL) printf(Natildeo foi possiacutevel criar dependecircncias) else int aux=0 while(feof(saida)) caracter = getc(saida) if(feof(saida)) ptr[aux] = caracter aux++ fclose(saida) remove(base6464) return ptr pacote monta_pacote(int indicechar ptr_arqint tipochar nome_arq) int aux=0 pacote p = (pacote) malloc (sizeof(pacote)) if (tipo == 1) p‐gttipo = 1 p‐gttamanho = strlen(ptr_arq) strcpy(p‐gtdadosnome_arq) return p else if (tipo == 2) p‐gttipo=2 for(aux=0aux lt TAM_DADOS aux++indice++) p‐gtdados[aux]=ptr_arq[indice] p‐gttamanho = sizeof(p‐gtdados) return p else if (tipo == 3) p‐gttipo=3 p‐gtdados[0] = a p‐gttamanho = sizeof(p‐gtdados) return p

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 812

9596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169

170

char aloca_mem(int tamanho) char ptr = (char)malloc (tamanho sizeof(char)) if(ptr) printf(Natildeo foi possiacutevel alocar memoacuteria) else return ptr short int CRC( char vetor[TAM_DADOS+(sizeof(int)2)] int tam) short int crc = 0xffff 65535 int j i for (j = 0 j lt tam j++) crc = crc ^ vetor[j] for (i = 0 i lt 8 i++) crc = crc gtgt 1 if ((crc amp 1) == 1) crc = crc ^ 0xA00140961 return crcvoid pacote_to_string(pacote pchar buffer) int crc=0 memcpy(buffer ampp‐gttipo sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gttamanho sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gtdados TAM_DADOS) buffer += TAM_DADOS p‐gtcrc = CRC(buffer 108) memcpy(buffer ampp‐gtcrc sizeof(short int)) printf(nmandou) printf(ntipo dp‐gttipo) pacote string_to_pacote(char buffer) pacote p = (pacote) malloc (sizeof(pacote)) memcpy(ampp‐gttipo buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gttamanho buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gtdados buffer TAM_DADOS) buffer += TAM_DADOS memcpy(ampp‐gtcrc buffer sizeof(short int)) printf(n leu) printf(ntipo dp‐gttipo) return p int testa_crc(pacote pchar buffer) short int crc=0 buffer += 108 memcpy(ampcrc buffer sizeof(short int)) if(crc == p‐gtcrc) return 0 else return ‐1 int teste_ACK(pacote p)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 912

Arquivo declaracoesh

Arquivo fonte que contem os cabeccedilalhos e protoacutetipos das funccedilotildees usadas no definicoesc

170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214

if (p‐gttipo == 3 ampamp p‐gtdados[0] == a) return 0 else return ‐1 int escreve_arquivo(char ptr_arqchar nome_arqint tamanho) FILE saida FILE arquivo int aux saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 fprintf(saidasptr_arq) fclose(saida) saida = fopen(base6464r+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 arquivo = fopen(nome_arqw+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 decode(saidaarquivo) fclose(saida)fclose(arquivo)remove(base6464)return 0 endif

12345678910111213141516171819202122232425

26

ifndef DECLARCOES_Hdefine DECLARACOES_Hdefine bzero(blen) (memset((b) 0 (len)) (void) 0)define TAM_DADOS 100include ltstdiohgt typedef struct pacote unsigned int tipo unsigned int tamanho short int crc char dados[TAM_DADOS]pacote externshort int calcula_CRC( char int) externchar aloca_mem(int) externchar abre_arq(char) externint escreve_arquivo(char char int)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1012

Arquivo base64c

Arquivo fonte responsaacutevel pela codificaccedilatildeo e descodificaccedilatildeo na base 64 base padratildeo para codificaccedilatildeo decaracteres para envio pela porta serial Essa base tambeacutem eacute utilizada pelos emails

26272829303132333435363738394041

externvoid pacote_to_string(pacotechar) externpacote string_to_pacote(char) externpacote monta_pacote(intchar intchar) externint testa_crc(pacotechar) externint teste_ACK(pacote )endif

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

ifndef BASE64_Cdefine BASE64_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude base64hdefine B64_DEF_LINE_SIZE 72define B64_MIN_LINE_SIZE 4define THIS_OPT(ac av) (ac gt 1 av[1][0] == ‐ av[1][1] 0 0) static const char cb64[]=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+static const char cd64[]=|$$$rstuvwxyz$$$$$$$gtABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[]^_`abcdefghijklmnopq void encodeblock( unsigned char in[3] unsigned char out[4] int len ) out[0] = cb64[ in[0] gtgt 2 ] out[1] = cb64[ ((in[0] amp 0x03) ltlt 4) | ((in[1] amp 0xf0) gtgt 4) ] out[2] = (unsigned char) (len gt 1 cb64[ ((in[1] amp 0x0f) ltlt 2) | ((in[2] amp 0xc0) gtgt 6) ] out[3] = (unsigned char) (len gt 2 cb64[ in[2] amp 0x3f ] =) void encode( FILE infile FILE outfile ) unsigned char in[3] out[4] int i len blocksout = 0 while( feof( infile ) ) len = 0 for( i = 0 i lt 3 i++ ) in[i] = (unsigned char) getc( infile ) if( feof( infile ) ) len++ else in[i] = 0 if( len ) encodeblock( in out len ) for( i = 0 i lt 4 i++ ) putc( out[i] outfile ) blocksout++ if( blocksout gt= (1004) || feof( infile ) ) if( blocksout ) fprintf( outfile rn ) blocksout = 0 void decodeblock( unsigned char in[4] unsigned char out[3] )

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1112

54555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128

129

void decodeblock( unsigned char in[4] unsigned char out[3] ) out[ 0 ] = (unsigned char ) (in[0] ltlt 2 | in[1] gtgt 4) out[ 1 ] = (unsigned char ) (in[1] ltlt 4 | in[2] gtgt 2) out[ 2 ] = (unsigned char ) (((in[2] ltlt 6) amp 0xc0) | in[3]) void decode( FILE infile FILE outfile ) unsigned char in[4] out[3] v int i len while( feof( infile ) ) for( len = 0 i = 0 i lt 4 ampamp feof( infile ) i++ ) v = 0 while( feof( infile ) ampamp v == 0 ) v = (unsigned char) getc( infile ) v = (unsigned char) ((v lt 43 || v gt 122) 0 cd64[ v ‐ 43 ]) if( v ) v = (unsigned char) ((v == $) 0 v ‐ 61) if( feof( infile ) ) len++ if( v ) in[ i ] = (unsigned char) (v ‐ 1) else in[i] = 0 if( len ) decodeblock( in out ) for( i = 0 i lt len ‐ 1 i++ ) putc( out[i] outfile ) int b64( int opt char infilename char outfilename ) FILE infile int retcode = 0 if( infilename ) infile = stdin else infile = fopen( infilename rb ) FILE outfile if( outfilename ) outfile = stdout else outfile = fopen( outfilename wb ) if( opt == e ) encode( infile outfile) else decode( infile outfile ) if( outfile = stdout ) if( fclose( outfile ) = 0 ) retcode = 1 if( infile = stdin ) fclose( infile ) return( retcode )

endif

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1212

Arquivo base64h

Arquivo fonte que contem os cabeccedilalhos e os prototipos das funccedilotildees usadas no arquivo base64c

Caso tenha alguma duacutevida a respeito do coacutedigo fonte ou do seu funcionamento entre em contato Parafazer o download do coacutedigo fonte CLICK AQUI(httpwww4sharedcomfileJR_OpFoRSFTPhtml]SFTPzip) Para fazer download do documento deRequisitos desse protocolo CLICK AQUI(httpwww4sharedcomdocumentNFyDYL7tFernando_Krein_Pinheirohtml) esse documento foifeito como preacute requisito para a aprovaccedilatildeo da Disciplina de Engenharia de Software I na qual eureaproveitei o software da disciplina de Redes de Computadores I

por ferpinheiro bull Postado em Redes

Blog no WordPresscom | O tema iTheme2

129 endif

12345678

ifndef BASE64_Hdefine BASE64_Hinclude ltstdiohgt extern void encode( FILE FILE )extern void decode( FILE FILE ) endif

You May Like

1 25 PhotosThat That Prove The World Is A Liea month ago answerscom AnswersAnswerscom (sponsored)

Sobre estes anuacutencios (httpswordpresscomabout-these-ads)

Page 8: Protocolo Para Transmissão de Arquivos via Porta Serial

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 812

9596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169

170

char aloca_mem(int tamanho) char ptr = (char)malloc (tamanho sizeof(char)) if(ptr) printf(Natildeo foi possiacutevel alocar memoacuteria) else return ptr short int CRC( char vetor[TAM_DADOS+(sizeof(int)2)] int tam) short int crc = 0xffff 65535 int j i for (j = 0 j lt tam j++) crc = crc ^ vetor[j] for (i = 0 i lt 8 i++) crc = crc gtgt 1 if ((crc amp 1) == 1) crc = crc ^ 0xA00140961 return crcvoid pacote_to_string(pacote pchar buffer) int crc=0 memcpy(buffer ampp‐gttipo sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gttamanho sizeof(int)) buffer += sizeof(int) memcpy(buffer ampp‐gtdados TAM_DADOS) buffer += TAM_DADOS p‐gtcrc = CRC(buffer 108) memcpy(buffer ampp‐gtcrc sizeof(short int)) printf(nmandou) printf(ntipo dp‐gttipo) pacote string_to_pacote(char buffer) pacote p = (pacote) malloc (sizeof(pacote)) memcpy(ampp‐gttipo buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gttamanho buffer sizeof(int)) buffer += sizeof(int) memcpy(ampp‐gtdados buffer TAM_DADOS) buffer += TAM_DADOS memcpy(ampp‐gtcrc buffer sizeof(short int)) printf(n leu) printf(ntipo dp‐gttipo) return p int testa_crc(pacote pchar buffer) short int crc=0 buffer += 108 memcpy(ampcrc buffer sizeof(short int)) if(crc == p‐gtcrc) return 0 else return ‐1 int teste_ACK(pacote p)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 912

Arquivo declaracoesh

Arquivo fonte que contem os cabeccedilalhos e protoacutetipos das funccedilotildees usadas no definicoesc

170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214

if (p‐gttipo == 3 ampamp p‐gtdados[0] == a) return 0 else return ‐1 int escreve_arquivo(char ptr_arqchar nome_arqint tamanho) FILE saida FILE arquivo int aux saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 fprintf(saidasptr_arq) fclose(saida) saida = fopen(base6464r+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 arquivo = fopen(nome_arqw+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 decode(saidaarquivo) fclose(saida)fclose(arquivo)remove(base6464)return 0 endif

12345678910111213141516171819202122232425

26

ifndef DECLARCOES_Hdefine DECLARACOES_Hdefine bzero(blen) (memset((b) 0 (len)) (void) 0)define TAM_DADOS 100include ltstdiohgt typedef struct pacote unsigned int tipo unsigned int tamanho short int crc char dados[TAM_DADOS]pacote externshort int calcula_CRC( char int) externchar aloca_mem(int) externchar abre_arq(char) externint escreve_arquivo(char char int)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1012

Arquivo base64c

Arquivo fonte responsaacutevel pela codificaccedilatildeo e descodificaccedilatildeo na base 64 base padratildeo para codificaccedilatildeo decaracteres para envio pela porta serial Essa base tambeacutem eacute utilizada pelos emails

26272829303132333435363738394041

externvoid pacote_to_string(pacotechar) externpacote string_to_pacote(char) externpacote monta_pacote(intchar intchar) externint testa_crc(pacotechar) externint teste_ACK(pacote )endif

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

ifndef BASE64_Cdefine BASE64_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude base64hdefine B64_DEF_LINE_SIZE 72define B64_MIN_LINE_SIZE 4define THIS_OPT(ac av) (ac gt 1 av[1][0] == ‐ av[1][1] 0 0) static const char cb64[]=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+static const char cd64[]=|$$$rstuvwxyz$$$$$$$gtABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[]^_`abcdefghijklmnopq void encodeblock( unsigned char in[3] unsigned char out[4] int len ) out[0] = cb64[ in[0] gtgt 2 ] out[1] = cb64[ ((in[0] amp 0x03) ltlt 4) | ((in[1] amp 0xf0) gtgt 4) ] out[2] = (unsigned char) (len gt 1 cb64[ ((in[1] amp 0x0f) ltlt 2) | ((in[2] amp 0xc0) gtgt 6) ] out[3] = (unsigned char) (len gt 2 cb64[ in[2] amp 0x3f ] =) void encode( FILE infile FILE outfile ) unsigned char in[3] out[4] int i len blocksout = 0 while( feof( infile ) ) len = 0 for( i = 0 i lt 3 i++ ) in[i] = (unsigned char) getc( infile ) if( feof( infile ) ) len++ else in[i] = 0 if( len ) encodeblock( in out len ) for( i = 0 i lt 4 i++ ) putc( out[i] outfile ) blocksout++ if( blocksout gt= (1004) || feof( infile ) ) if( blocksout ) fprintf( outfile rn ) blocksout = 0 void decodeblock( unsigned char in[4] unsigned char out[3] )

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1112

54555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128

129

void decodeblock( unsigned char in[4] unsigned char out[3] ) out[ 0 ] = (unsigned char ) (in[0] ltlt 2 | in[1] gtgt 4) out[ 1 ] = (unsigned char ) (in[1] ltlt 4 | in[2] gtgt 2) out[ 2 ] = (unsigned char ) (((in[2] ltlt 6) amp 0xc0) | in[3]) void decode( FILE infile FILE outfile ) unsigned char in[4] out[3] v int i len while( feof( infile ) ) for( len = 0 i = 0 i lt 4 ampamp feof( infile ) i++ ) v = 0 while( feof( infile ) ampamp v == 0 ) v = (unsigned char) getc( infile ) v = (unsigned char) ((v lt 43 || v gt 122) 0 cd64[ v ‐ 43 ]) if( v ) v = (unsigned char) ((v == $) 0 v ‐ 61) if( feof( infile ) ) len++ if( v ) in[ i ] = (unsigned char) (v ‐ 1) else in[i] = 0 if( len ) decodeblock( in out ) for( i = 0 i lt len ‐ 1 i++ ) putc( out[i] outfile ) int b64( int opt char infilename char outfilename ) FILE infile int retcode = 0 if( infilename ) infile = stdin else infile = fopen( infilename rb ) FILE outfile if( outfilename ) outfile = stdout else outfile = fopen( outfilename wb ) if( opt == e ) encode( infile outfile) else decode( infile outfile ) if( outfile = stdout ) if( fclose( outfile ) = 0 ) retcode = 1 if( infile = stdin ) fclose( infile ) return( retcode )

endif

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1212

Arquivo base64h

Arquivo fonte que contem os cabeccedilalhos e os prototipos das funccedilotildees usadas no arquivo base64c

Caso tenha alguma duacutevida a respeito do coacutedigo fonte ou do seu funcionamento entre em contato Parafazer o download do coacutedigo fonte CLICK AQUI(httpwww4sharedcomfileJR_OpFoRSFTPhtml]SFTPzip) Para fazer download do documento deRequisitos desse protocolo CLICK AQUI(httpwww4sharedcomdocumentNFyDYL7tFernando_Krein_Pinheirohtml) esse documento foifeito como preacute requisito para a aprovaccedilatildeo da Disciplina de Engenharia de Software I na qual eureaproveitei o software da disciplina de Redes de Computadores I

por ferpinheiro bull Postado em Redes

Blog no WordPresscom | O tema iTheme2

129 endif

12345678

ifndef BASE64_Hdefine BASE64_Hinclude ltstdiohgt extern void encode( FILE FILE )extern void decode( FILE FILE ) endif

You May Like

1 25 PhotosThat That Prove The World Is A Liea month ago answerscom AnswersAnswerscom (sponsored)

Sobre estes anuacutencios (httpswordpresscomabout-these-ads)

Page 9: Protocolo Para Transmissão de Arquivos via Porta Serial

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 912

Arquivo declaracoesh

Arquivo fonte que contem os cabeccedilalhos e protoacutetipos das funccedilotildees usadas no definicoesc

170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214

if (p‐gttipo == 3 ampamp p‐gtdados[0] == a) return 0 else return ‐1 int escreve_arquivo(char ptr_arqchar nome_arqint tamanho) FILE saida FILE arquivo int aux saida = fopen(base6464w+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 fprintf(saidasptr_arq) fclose(saida) saida = fopen(base6464r+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 arquivo = fopen(nome_arqw+b) if(saida) printf(Natildeo foi possiacutevel criar arquivo) return ‐1 decode(saidaarquivo) fclose(saida)fclose(arquivo)remove(base6464)return 0 endif

12345678910111213141516171819202122232425

26

ifndef DECLARCOES_Hdefine DECLARACOES_Hdefine bzero(blen) (memset((b) 0 (len)) (void) 0)define TAM_DADOS 100include ltstdiohgt typedef struct pacote unsigned int tipo unsigned int tamanho short int crc char dados[TAM_DADOS]pacote externshort int calcula_CRC( char int) externchar aloca_mem(int) externchar abre_arq(char) externint escreve_arquivo(char char int)

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1012

Arquivo base64c

Arquivo fonte responsaacutevel pela codificaccedilatildeo e descodificaccedilatildeo na base 64 base padratildeo para codificaccedilatildeo decaracteres para envio pela porta serial Essa base tambeacutem eacute utilizada pelos emails

26272829303132333435363738394041

externvoid pacote_to_string(pacotechar) externpacote string_to_pacote(char) externpacote monta_pacote(intchar intchar) externint testa_crc(pacotechar) externint teste_ACK(pacote )endif

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

ifndef BASE64_Cdefine BASE64_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude base64hdefine B64_DEF_LINE_SIZE 72define B64_MIN_LINE_SIZE 4define THIS_OPT(ac av) (ac gt 1 av[1][0] == ‐ av[1][1] 0 0) static const char cb64[]=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+static const char cd64[]=|$$$rstuvwxyz$$$$$$$gtABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[]^_`abcdefghijklmnopq void encodeblock( unsigned char in[3] unsigned char out[4] int len ) out[0] = cb64[ in[0] gtgt 2 ] out[1] = cb64[ ((in[0] amp 0x03) ltlt 4) | ((in[1] amp 0xf0) gtgt 4) ] out[2] = (unsigned char) (len gt 1 cb64[ ((in[1] amp 0x0f) ltlt 2) | ((in[2] amp 0xc0) gtgt 6) ] out[3] = (unsigned char) (len gt 2 cb64[ in[2] amp 0x3f ] =) void encode( FILE infile FILE outfile ) unsigned char in[3] out[4] int i len blocksout = 0 while( feof( infile ) ) len = 0 for( i = 0 i lt 3 i++ ) in[i] = (unsigned char) getc( infile ) if( feof( infile ) ) len++ else in[i] = 0 if( len ) encodeblock( in out len ) for( i = 0 i lt 4 i++ ) putc( out[i] outfile ) blocksout++ if( blocksout gt= (1004) || feof( infile ) ) if( blocksout ) fprintf( outfile rn ) blocksout = 0 void decodeblock( unsigned char in[4] unsigned char out[3] )

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1112

54555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128

129

void decodeblock( unsigned char in[4] unsigned char out[3] ) out[ 0 ] = (unsigned char ) (in[0] ltlt 2 | in[1] gtgt 4) out[ 1 ] = (unsigned char ) (in[1] ltlt 4 | in[2] gtgt 2) out[ 2 ] = (unsigned char ) (((in[2] ltlt 6) amp 0xc0) | in[3]) void decode( FILE infile FILE outfile ) unsigned char in[4] out[3] v int i len while( feof( infile ) ) for( len = 0 i = 0 i lt 4 ampamp feof( infile ) i++ ) v = 0 while( feof( infile ) ampamp v == 0 ) v = (unsigned char) getc( infile ) v = (unsigned char) ((v lt 43 || v gt 122) 0 cd64[ v ‐ 43 ]) if( v ) v = (unsigned char) ((v == $) 0 v ‐ 61) if( feof( infile ) ) len++ if( v ) in[ i ] = (unsigned char) (v ‐ 1) else in[i] = 0 if( len ) decodeblock( in out ) for( i = 0 i lt len ‐ 1 i++ ) putc( out[i] outfile ) int b64( int opt char infilename char outfilename ) FILE infile int retcode = 0 if( infilename ) infile = stdin else infile = fopen( infilename rb ) FILE outfile if( outfilename ) outfile = stdout else outfile = fopen( outfilename wb ) if( opt == e ) encode( infile outfile) else decode( infile outfile ) if( outfile = stdout ) if( fclose( outfile ) = 0 ) retcode = 1 if( infile = stdin ) fclose( infile ) return( retcode )

endif

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1212

Arquivo base64h

Arquivo fonte que contem os cabeccedilalhos e os prototipos das funccedilotildees usadas no arquivo base64c

Caso tenha alguma duacutevida a respeito do coacutedigo fonte ou do seu funcionamento entre em contato Parafazer o download do coacutedigo fonte CLICK AQUI(httpwww4sharedcomfileJR_OpFoRSFTPhtml]SFTPzip) Para fazer download do documento deRequisitos desse protocolo CLICK AQUI(httpwww4sharedcomdocumentNFyDYL7tFernando_Krein_Pinheirohtml) esse documento foifeito como preacute requisito para a aprovaccedilatildeo da Disciplina de Engenharia de Software I na qual eureaproveitei o software da disciplina de Redes de Computadores I

por ferpinheiro bull Postado em Redes

Blog no WordPresscom | O tema iTheme2

129 endif

12345678

ifndef BASE64_Hdefine BASE64_Hinclude ltstdiohgt extern void encode( FILE FILE )extern void decode( FILE FILE ) endif

You May Like

1 25 PhotosThat That Prove The World Is A Liea month ago answerscom AnswersAnswerscom (sponsored)

Sobre estes anuacutencios (httpswordpresscomabout-these-ads)

Page 10: Protocolo Para Transmissão de Arquivos via Porta Serial

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1012

Arquivo base64c

Arquivo fonte responsaacutevel pela codificaccedilatildeo e descodificaccedilatildeo na base 64 base padratildeo para codificaccedilatildeo decaracteres para envio pela porta serial Essa base tambeacutem eacute utilizada pelos emails

26272829303132333435363738394041

externvoid pacote_to_string(pacotechar) externpacote string_to_pacote(char) externpacote monta_pacote(intchar intchar) externint testa_crc(pacotechar) externint teste_ACK(pacote )endif

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

ifndef BASE64_Cdefine BASE64_Cinclude ltstdiohgtinclude ltstdlibhgtinclude ltstringhgtinclude base64hdefine B64_DEF_LINE_SIZE 72define B64_MIN_LINE_SIZE 4define THIS_OPT(ac av) (ac gt 1 av[1][0] == ‐ av[1][1] 0 0) static const char cb64[]=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+static const char cd64[]=|$$$rstuvwxyz$$$$$$$gtABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[]^_`abcdefghijklmnopq void encodeblock( unsigned char in[3] unsigned char out[4] int len ) out[0] = cb64[ in[0] gtgt 2 ] out[1] = cb64[ ((in[0] amp 0x03) ltlt 4) | ((in[1] amp 0xf0) gtgt 4) ] out[2] = (unsigned char) (len gt 1 cb64[ ((in[1] amp 0x0f) ltlt 2) | ((in[2] amp 0xc0) gtgt 6) ] out[3] = (unsigned char) (len gt 2 cb64[ in[2] amp 0x3f ] =) void encode( FILE infile FILE outfile ) unsigned char in[3] out[4] int i len blocksout = 0 while( feof( infile ) ) len = 0 for( i = 0 i lt 3 i++ ) in[i] = (unsigned char) getc( infile ) if( feof( infile ) ) len++ else in[i] = 0 if( len ) encodeblock( in out len ) for( i = 0 i lt 4 i++ ) putc( out[i] outfile ) blocksout++ if( blocksout gt= (1004) || feof( infile ) ) if( blocksout ) fprintf( outfile rn ) blocksout = 0 void decodeblock( unsigned char in[4] unsigned char out[3] )

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1112

54555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128

129

void decodeblock( unsigned char in[4] unsigned char out[3] ) out[ 0 ] = (unsigned char ) (in[0] ltlt 2 | in[1] gtgt 4) out[ 1 ] = (unsigned char ) (in[1] ltlt 4 | in[2] gtgt 2) out[ 2 ] = (unsigned char ) (((in[2] ltlt 6) amp 0xc0) | in[3]) void decode( FILE infile FILE outfile ) unsigned char in[4] out[3] v int i len while( feof( infile ) ) for( len = 0 i = 0 i lt 4 ampamp feof( infile ) i++ ) v = 0 while( feof( infile ) ampamp v == 0 ) v = (unsigned char) getc( infile ) v = (unsigned char) ((v lt 43 || v gt 122) 0 cd64[ v ‐ 43 ]) if( v ) v = (unsigned char) ((v == $) 0 v ‐ 61) if( feof( infile ) ) len++ if( v ) in[ i ] = (unsigned char) (v ‐ 1) else in[i] = 0 if( len ) decodeblock( in out ) for( i = 0 i lt len ‐ 1 i++ ) putc( out[i] outfile ) int b64( int opt char infilename char outfilename ) FILE infile int retcode = 0 if( infilename ) infile = stdin else infile = fopen( infilename rb ) FILE outfile if( outfilename ) outfile = stdout else outfile = fopen( outfilename wb ) if( opt == e ) encode( infile outfile) else decode( infile outfile ) if( outfile = stdout ) if( fclose( outfile ) = 0 ) retcode = 1 if( infile = stdin ) fclose( infile ) return( retcode )

endif

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1212

Arquivo base64h

Arquivo fonte que contem os cabeccedilalhos e os prototipos das funccedilotildees usadas no arquivo base64c

Caso tenha alguma duacutevida a respeito do coacutedigo fonte ou do seu funcionamento entre em contato Parafazer o download do coacutedigo fonte CLICK AQUI(httpwww4sharedcomfileJR_OpFoRSFTPhtml]SFTPzip) Para fazer download do documento deRequisitos desse protocolo CLICK AQUI(httpwww4sharedcomdocumentNFyDYL7tFernando_Krein_Pinheirohtml) esse documento foifeito como preacute requisito para a aprovaccedilatildeo da Disciplina de Engenharia de Software I na qual eureaproveitei o software da disciplina de Redes de Computadores I

por ferpinheiro bull Postado em Redes

Blog no WordPresscom | O tema iTheme2

129 endif

12345678

ifndef BASE64_Hdefine BASE64_Hinclude ltstdiohgt extern void encode( FILE FILE )extern void decode( FILE FILE ) endif

You May Like

1 25 PhotosThat That Prove The World Is A Liea month ago answerscom AnswersAnswerscom (sponsored)

Sobre estes anuacutencios (httpswordpresscomabout-these-ads)

Page 11: Protocolo Para Transmissão de Arquivos via Porta Serial

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1112

54555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109110111112113114115116117118119120121122123124125126127128

129

void decodeblock( unsigned char in[4] unsigned char out[3] ) out[ 0 ] = (unsigned char ) (in[0] ltlt 2 | in[1] gtgt 4) out[ 1 ] = (unsigned char ) (in[1] ltlt 4 | in[2] gtgt 2) out[ 2 ] = (unsigned char ) (((in[2] ltlt 6) amp 0xc0) | in[3]) void decode( FILE infile FILE outfile ) unsigned char in[4] out[3] v int i len while( feof( infile ) ) for( len = 0 i = 0 i lt 4 ampamp feof( infile ) i++ ) v = 0 while( feof( infile ) ampamp v == 0 ) v = (unsigned char) getc( infile ) v = (unsigned char) ((v lt 43 || v gt 122) 0 cd64[ v ‐ 43 ]) if( v ) v = (unsigned char) ((v == $) 0 v ‐ 61) if( feof( infile ) ) len++ if( v ) in[ i ] = (unsigned char) (v ‐ 1) else in[i] = 0 if( len ) decodeblock( in out ) for( i = 0 i lt len ‐ 1 i++ ) putc( out[i] outfile ) int b64( int opt char infilename char outfilename ) FILE infile int retcode = 0 if( infilename ) infile = stdin else infile = fopen( infilename rb ) FILE outfile if( outfilename ) outfile = stdout else outfile = fopen( outfilename wb ) if( opt == e ) encode( infile outfile) else decode( infile outfile ) if( outfile = stdout ) if( fclose( outfile ) = 0 ) retcode = 1 if( infile = stdin ) fclose( infile ) return( retcode )

endif

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1212

Arquivo base64h

Arquivo fonte que contem os cabeccedilalhos e os prototipos das funccedilotildees usadas no arquivo base64c

Caso tenha alguma duacutevida a respeito do coacutedigo fonte ou do seu funcionamento entre em contato Parafazer o download do coacutedigo fonte CLICK AQUI(httpwww4sharedcomfileJR_OpFoRSFTPhtml]SFTPzip) Para fazer download do documento deRequisitos desse protocolo CLICK AQUI(httpwww4sharedcomdocumentNFyDYL7tFernando_Krein_Pinheirohtml) esse documento foifeito como preacute requisito para a aprovaccedilatildeo da Disciplina de Engenharia de Software I na qual eureaproveitei o software da disciplina de Redes de Computadores I

por ferpinheiro bull Postado em Redes

Blog no WordPresscom | O tema iTheme2

129 endif

12345678

ifndef BASE64_Hdefine BASE64_Hinclude ltstdiohgt extern void encode( FILE FILE )extern void decode( FILE FILE ) endif

You May Like

1 25 PhotosThat That Prove The World Is A Liea month ago answerscom AnswersAnswerscom (sponsored)

Sobre estes anuacutencios (httpswordpresscomabout-these-ads)

Page 12: Protocolo Para Transmissão de Arquivos via Porta Serial

07102015 Protocolo para transmissatildeo de arquivos via porta serial | Compartilhar eacute preciso

httpsferpinheirowordpresscom20110515protocoloshyparashytransmicaoshydeshyarquivosshyviashyportashyserial 1212

Arquivo base64h

Arquivo fonte que contem os cabeccedilalhos e os prototipos das funccedilotildees usadas no arquivo base64c

Caso tenha alguma duacutevida a respeito do coacutedigo fonte ou do seu funcionamento entre em contato Parafazer o download do coacutedigo fonte CLICK AQUI(httpwww4sharedcomfileJR_OpFoRSFTPhtml]SFTPzip) Para fazer download do documento deRequisitos desse protocolo CLICK AQUI(httpwww4sharedcomdocumentNFyDYL7tFernando_Krein_Pinheirohtml) esse documento foifeito como preacute requisito para a aprovaccedilatildeo da Disciplina de Engenharia de Software I na qual eureaproveitei o software da disciplina de Redes de Computadores I

por ferpinheiro bull Postado em Redes

Blog no WordPresscom | O tema iTheme2

129 endif

12345678

ifndef BASE64_Hdefine BASE64_Hinclude ltstdiohgt extern void encode( FILE FILE )extern void decode( FILE FILE ) endif

You May Like

1 25 PhotosThat That Prove The World Is A Liea month ago answerscom AnswersAnswerscom (sponsored)

Sobre estes anuacutencios (httpswordpresscomabout-these-ads)