Top Banner
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
12

Protocolo Para Transmissão de Arquivos via Porta Serial

Jan 31, 2016

Download

Documents

serial
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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)